位置: 编程技术 - 正文
推荐整理分享InnoDB实现序列化隔离级别的方法(innodb怎么实现),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:innodb怎么实现,innodb结构,innodb lru,innodb底层实现,innodb数据结构,innodb数据结构,innodb详解,innodb数据结构,内容如对您有帮助,希望把文章链接给更多的朋友!
序列化的实现
InnoDB对于序列化的实现方式,是通过两种方式实现的。
第一种,当SELECT语句在一个显式的事务块内,如执行表-9中的编号为1的情况,将施加LOCK_S锁,根据表-6(记录锁事务锁相容表)可知,LOCK_S锁排斥写锁,所以序列化隔离级别下只允许并发地读取操作,并发写被禁止,因此实现了可序列化。
相应代码如下:
第二种,当SELECT语句不在一个显式的事务块内,则通过获取最新快照(在事务开始的时候,),然后读取数据。此时,因基于快照的一致性读不需要加锁,所以其加锁情况对应到了表-9中的编号2对应的情况。
表-9 序列化隔离级别加锁情况
说明:
S0:SELECT * FROM bluesea WHERE c1=2; //使用主键索引做WHERE条件
另外,对于FLUSH...WITH READ LOCK语句,序列化隔离级别下也需要加读锁LOCK_S
代码如下:
与序列化相关的,还有innobase_query_caching_of_table_permitted()函数,序列化隔离级别不允许缓冲查询。
总结
标签: innodb怎么实现
本文链接地址:https://www.jiuchutong.com/biancheng/349725.html 转载请保留说明!上一篇:mysql创建本地用户及赋予数据库权限的方法示例(mysql在本地主机创建用户账号)
下一篇:MySQL 复制详解及简单实例(mysql复制命令)
友情链接: 武汉网站建设