第一课:性能优化:锁
注意:没有并发就没有锁。
Enqueues:保护的是事务的完整性。
Latch:保护的是内存结构,内存结构有buffer cache、shared pool等,保护他们的结构不受损坏。
image.png
image.png
image.png
image.png
image.png
一、V$LOCK视图讲解:(update阻塞实验)
image.pngimage.png
image.png
image.png
image.png
image.png
二、delete操作的锁定演示
image.png三、insert的阻塞演示
image.pngimage.png
四、select ... for update的阻塞演示
image.pngimage.png
image.png
image.png
image.png
五、TM锁几种模式的互斥关系
image.pngRI锁
一、RI锁:基于引用关系的锁定
image.png二、实验测试主表insert插入,会对主表和子表如何锁定:
image.pngimage.png
image.png
image.png
image.png
三、实验测试主表update操作,会对主表和子表如何锁定:
image.png四、实验测试主表delete操作,会对主表和子表如何锁定:
image.pngimage.png
BI锁和外键关系
一、没有索引的外键
image.png二、有索引的外键
总结:外键一定要创建索引。
image.png
死锁:
image.png一、演示死锁过程:
两个会话互相持有对方的资源,等待对方资源的释放就导致了死锁发生。
image.png
image.png
第二课:Latch:闩锁,资源争用
image.pngLatch:内存资源争用,就像给池塘里投食,一堆鱼都会过来抢夺一样,里面无序、混乱、繁忙。
image.pngimage.png
image.png
image.png
image.png
image.png
buffer cache的机制
image.pngimage.png
image.png
image.png
结论:
image.pngLatch争用
image.pngimage.png
热快争用
image.pngdata buffer中的Latch争用---多版本
image.pngLatch相关视图
image.pngimage.png
image.png
Latch优化思路:
image.pngimage.png
网友评论