使用Sequences生成主键值
来源:互联网 发布:西门子plc编程软件图标 编辑:程序博客网 时间:2024/06/16 02:36
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 loopinsert into t1(tid) values(i);end loop;commit;end;/查看我当前会话IDselect 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---------- ---------------------------------------------------------------- ---------- ---------- ---------- 8 cursor: pin S 1516791663 8375186227 1288490188SQL> / SID EVENT P1 P2 P3---------- ---------------------------------------------------------------- ---------- ---------- ---------- 8 Disk file operations I/O 5 0 2SQL> / SID EVENT P1 P2 P3---------- ---------------------------------------------------------------- ---------- ---------- ---------- 8 SQL*Net message from client 1413697536 1 0解决的方法:定义一个变量,获取这个(会话的sid + s1.next),因为会话的sid是不唯一的,但是是。next是唯一的,加起来还是唯一的,所以可以作为病案号的id,这一个功能可以通过使用匿名块实现。这样的解决方式,不能够生成自增ID.其中Buffer Buffer Waits等待事件p1、p2、p3参数的意义:7SQL> select name,parameter1,parameter2,parameter3,wait_class 2 from v$event_name 3 where name like '%buffer busy waits%'; NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS------------------------- ---------- ---------- ---------- ---------------buffer busy waits file# block# class# Concurrency
阅读全文
0 0
- 使用Sequences生成主键值
- Oracle中sequences使用时发生主键冲突
- 使用Hibernate主键产生器生成主键
- hibernate使用table生成主键
- oracle 使用uuid生成主键
- 使用数据库序列生成主键
- hibernate3 Annotation中使用oracle seq生成主键值
- JAVA生成UUID主键值
- 生成自动的主键值
- Hibernate中使用注解生成联合主键
- 使用redis生成数据库主键自增
- mybatis使用oracle自动生成主键
- Hibernate使用JPA主键生成策略
- 使用Hibernate的主键生成策略
- MySQL中使用UUID()函数生成主键
- Entity Framework Core 使用HiLo生成主键
- 生成主键
- 怎样使用PreparedStatement在执行添加语句后,获得生成的主键值
- C++ 迭代器小技巧
- Halcon:一维测量
- ORACLE SQL 优化策略-2
- 正确、安全地停止springboot应用
- 分布式锁的原子性
- 使用Sequences生成主键值
- Android Studio 混淆常见错误
- java面试问题你知道几个呢?
- [JS] 闭包的用途
- STM32内存管理以及堆和栈的理解
- label和span标签设置宽度width无效的解决办法
- IE 0x2ee4
- 设计模式--策略模式--Java实现
- spring boot项目在eclipse中的web的启动方式