你的位置:首页 > 数据库

[数据库]读书摘要:第六章 锁和并发



1.事务的四个特点,原子性,一致性,隔离性,持久性。
2.并发的危险
丢失更新:两个进程读取同一个数据然后试图更新会丢失一个进程的更新;
脏读:当一个进程读取了另一个没提交进程修改的数据时,如果另一个进程会滚第一个进程就是脏读;
不可重复读:在一个事务内不能保证两次读取一个数据的结果是一样的就是不可重复读;
幻影读:一个事务对一个范围的数据插入或删除了行,而这个范围的数据正被另一个事务读取就是幻影读;
重复读:一个事务对表进行扫描时另一个事务进行了数据移动或插入会造成重复读。
3.锁:被用来组织多种类型的访问,锁是针对其他类型锁的阻塞。
4.锁的分层,在用更少数量的锁锁定更多数量的数据和用更多数量的锁锁定更少数量的数据必须做个权衡。
5.共享锁S,
更新锁U,更新锁必须转换为拍他锁,等到最后一个共享所释放后就能转换为拍他锁了;
排他锁X,一直持有到事务结束。
意向锁IS,IU,IX,为了在锁层次较高的层级表示意向,用于优化锁的检查。
转换锁SIX,SIU,UIX,事务从粗级别的锁转换为细级别的锁时会建立。
6锁升级:当一个表的行或页面上的锁超过5000个时就会触发锁升级,直接升级到表锁或分区锁,并删除之前的行锁。
7.死锁:数据库引擎会把死锁的一个事务回滚并抛错1205,可检测错误号并尝试重试。
解决方向,要么尽快释放事务占用资源,要么增加锁定资源,让其他事务没有重叠的可能。
8.隔离级别
可序列化,锁定一切。
可重复读,会发生幻影读。
已提交读(默认),会出现幻影读,重复读,不可重复读的事务问题
未提交读,可出现除上述问题外还有脏读。
快照,乐观锁,需要设置数据库,特点不需要锁。

 

之前的摘要在小组:https://group.cnblogs.com/176751/