数据库原理知识点有哪些( 二 )


(3)封锁协议
封锁协议分为三级封锁协议和两段锁协议 。MySQL 的 InnoDB 存储引擎采用两段锁协议,会根据隔离级别在需要的时候自动加锁,并且所有的锁都是在同一时刻被释放,这被称为隐式锁定 。InnoDB 也可以使用特定的语句进行显示锁定:
SELECT LOCK In SHARE MODE;SELECT FOR UPDATE;
4、隔离级别
为了避免丢失更新、脏读、不可重复读和幻读,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同 。具体如下图:
5、多版本并发控制
多版本并发控制是MySQL的InnoDB存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别 。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC 。可串行化隔离级别需要对所有读取的行都加锁,单纯使用MVCC无法实现 。MVCC在大多数情况下代替了行锁 。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞 。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度 。但是,使用MVCC每行记录都需要额外的存储空间,需要做更多的行维护和检查工作 。
6、Next-Key Lock
(1)Record Lock
锁定一个记录上的索引,而不是记录本身 。如果表没有设置索引,InnoDB 会自动在主键上创建隐藏的聚簇索引,因此 Record Lock 依然可以使用 。
(2)Gap Locks
锁定索引之间的间隙,但是不包含索引本身 。例如当一个事务执行以下语句,其它事务就不能在 t.c 中插入 15 。
SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE;
(3)Next-Key Lock
它是 Record Lock 和 Gap Lock 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙 。例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间:
(negative infinity, 10](10, 11](11, 13](13, 20](20, positive infinity)
【数据库原理知识点有哪些】到此,关于“数据库原理知识点有哪些”的学习就结束了,希望能够解决大家的疑惑 。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读