使用Sequences生成主键值

Sequences是用来产生primary key values.
在工作中,利用序列来产生主键值,相当于insert into t1 values(s1.next,name) ,来插入一张表的时候,
插入到表块和索引块,插入到表块的时候没有问题,插入到索引块的时候,由于索引是有序的,
这个会话会申请独占的Latch,在CBC Latch 的保护下,去访问CBC链表,CBC链表buffer header,
找到数据块以后,释放CBC Latch,然后给他分配一个pin(X)锁(DML操作都会有X锁),
在Pin 锁的保护下来访问数据块,这个时候就会发生热点块(右手块)的竞争,
如果有大量会话进来会造成BUFFER BUSY WAITS 等待事件和CBC Latch waits事件。
​


begin 
for i in 1 ..1000000 loop
insert into t1(tid) values(i);
end loop;
commit;
end;
/
查看我当前会话ID
select sid from v$mystat where rownum=1;




   SID
------
     8
查看等待事件
select sid,event,p1,p2,p3 from v$session where sid=8;


SQL> /
       SID EVENT                                                                    P1         P2         P3
---------- ---------------------------------------------------------------- ---------- ---------- ----------
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值