ps: 笔记很简陋,仅供自己使用。对其他的朋友可能没有参考性 – 来源:学堂在线-哈尔滨工业大学-数据库系统
文章目录
并发控制
三种典型的不一致现象
丢失修改
更新丢失:最后的更新覆盖了其他事务之前的更新,而事务之间并不知道,发生更新丢失。更新丢失,可以完全避免,应用对访问的数据加锁即可。
不能重复读
不可重复读(读取数据本身的对比):一个事务在读取某些数据后的一段时间后,再次读取这个数据,发现其读取出来的数据内容已经发生了改变,就是不可重复读。
脏读
脏读(针对未提交的数据):一个事务在更新一条记录,未提交前,第二个事务读到了第一个事务更新后的记录,那么第二个事务就读到了脏数据,会产生对第一个未提交数据的依赖。一旦第一个事务回滚,那么第二个事务读到的数据,将是错误的脏数据。
幻读
幻读(读取结果集条数的对比):一个事务按相同的查询条件查询之前检索过的数据,确发现检索出来的结果集条数变多或者减少(由其他事务插入、删除的),类似产生幻觉
这里分清内容修改和结果集的插入删除
核心技术
事务
事务的特性:ACID
原子性( Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
具有
ACID
特性的若干数据库基本操作的组合体被称为事务
DBMS 对事务的控制
事务调度
我们认为串行调度在任何时候都是正确的
表达事务调度的一种模型
冲突可串行性
冲突可串行性判别算法
基于封锁的并发控制方法
锁的类型
排他锁X(eXclusive locks) ( 写锁 )
共享锁S(Shared locks) ( 读锁 )
更新锁U(Update locks)
增量锁I (Incremental lock)
相容性矩阵
SQL隔离性级别
读未提交( read uncommitted ) – 相当于 0 级协议
读已提交( read committed ) – 相当于 1 级协议
可重复读 ( repeatable read ) – 相当于 2 级协议
可串行化 ( serializable ) – 相当于 3 级协议
封锁力度( LOCKING GRANULARITY )
两段封锁协议