分享一道Oracle 19c OCM考试中99 错误率的题目

2023-11-29 16:40:44 字數 2317 閱讀 4155

关于号主,姚远:(v:dataace)

oracle ace(oracle和mysql数据库方向)

华为云最有价值专家。

mysql 8.0运维与优化》的作者。

拥有 oracle 10g、12c和19c ocm等数十项数据库认证。

曾任ibm公司数据库部门经理。

20+年dba经验,服务2万+客户。

精通c和j**a,发明两项计算机专利。

12c中解决“buffer busy wait”

oracle ocm考试结束后会告诉你考试成绩,并不会告诉你哪道题做错了,最近我在ocm的授课中发现了一道题目,99%的人都做错了,这道题目在12c和19c中都出现了,大致题目如下:

when inserting data into a table, there are frequent occurrences of "buffer busy wait". this is because a sequence is used to generate values for the id column of the table. to reduce the number of buffer busy waits, you can modify either the sequence or the index, or both.(v:dataace)

这个题目是说要想办法减少索引叶节点上面的“buffer busy wait”, 在12c中的正确做法是重新创建全局分区索引,让热点分散到多个分区中,创建索引的命令如下:

sql> create index in_1 on tt1(id) global partition by hash(id) partitions 32 parallel 32;
index created.
19c中解决“buffer busy wait”

这样做在12c中是对的,但如果想当然的在19c ocm考试中还这样就不对了,因为oracle推出了一个新特性scalable sequence,姚远老师(v:dataace)找了一些资料,参见《database administrator's guide》的24.2.4.3 **a sequence scalable。scalable sequence在生成无序的主键或唯一键,用于具有高并发级别的数据插入时特别有效,它显著减少了序列和索引块争用,并提供更好的数据加载可扩展性。它的实现原理是根据实例号和会话号在序列值前面加上6位的数字前缀,这样不同的会话生成的序列值的前缀不同,不同实例和不同的会话会把记录插入到不同的数据块中,减少甚至消除了“buffer busy wait”,下面姚远老师(v:dataace)举一个scalable sequence的例子。

sql> create sequence scal_seq1 maxvalue 9999999999 scale;

sequence created.

sql> select scal_seq1.nextval from dual;

nextval

我们看到scalable sequence的关键字是“scale”,生成的序列值加上了“101235”的6位数字前缀,我们换一个会话:

sql> select scal_seq1.nextval from dual; nextval 1013820002
这时序列值的前缀变成了“101382”,在这里:

序列值= 6位数字前缀+普通序列值。

6位数字前缀 = 3位实例偏移数 + 3位会话偏移数。

3位实例偏移数= [(实例 id % 100) +100

3位会话偏移数= [会话 id % 1000

对于已经存在的sequence,也可以修改成scalable sequence,例如:

sql> create sequence scal_seq2;

sequence created.

sql> alter sequence scal_seq2 scale;

sequence altered.

你看懂了吗?姚远老师(v:dataace)的oracle/mysql ocp/ocm培训详情欢迎咨询。

明星分享幸福之道

导语 在寻找幸福的道路上,明星们经历了许多情感抉择与家庭平衡的挑战。他们以自己的经验告诉我们,爱情和事业并不是矛盾的,而是可以相得益彰。本文将探索明星们的情感故事,并分享他们在事业与家庭之间找到平衡的经验。一 杨钰莹的坚韧与乐观。杨钰莹作为甜歌皇后,她的爱情生活备受瞩目。最近,传出她怀孕的消息,让人...

分享四道家常素菜

首先,鱼香茄子是一道经典的川菜,它的主要食材是茄子,搭配豆瓣酱 蒜末 青椒等调料烹制而成。这道菜的口感软糯,味道鲜美,而且做法简单,非常适合家庭烹饪。特别是对于喜欢吃辣的人来说,这道菜绝对是一道下饭的好选择。其次,青椒肉丝是一道色香味俱佳的家常菜。它的主要食材是青椒和猪肉,通过煸炒的方式将青椒和猪肉...

养生之道(好文分享)

道德经 第五十五章 中曾言 物壮则老,谓之不道,不道早已 世人都认为,人过了青年时期,就会开始衰老 但是在老子看来,这是因为逆道而行,不懂得养生之道,才会有这个结果。老子的意思是,如果懂得养生之道,并不会因为年龄而过早衰老。养生之道,不仅在于口,更在于心 对外,放下名利,是为养生 对内,远离贪字,也...