6、举例说明
6.1建库建表:
|
查看当前锁情况:
默认某个连接对整个数据库有个共享锁。
6.2 循环插入几十万条记录:
|
插入时的锁快照:
从上图中看出这个快照中有:三个数据库共享锁、一个页级意向排他锁、一个表级意向排他锁、两个行级排他锁。
三个数据库共享锁:前面已经提过,默认某个连接对整个数据库有个共享锁;
一个页级意向排他锁、一个表级意向排他锁:在页以及表级表示资源的一部分实际已经有锁进行保护,这样的好处允许其他请求锁在表页级别上进行检查,减少不必要的更细的锁请求,提高性能。比如在这种情况下,如果允许alter操作那么这个操作就会等待因为这里有表级排他锁,它提示alter操作该表有活动。
6.3 跟踪Lock:Escalation事件
在profiler中设置只跟踪Lock:Escalation事件,锁升级事件。
6.4 更新表中记录:
update test set name = 'name' where name = 'kk' |
在profiler中看到了Lock:Escalation事件被触发: