位置: 编程技术 - 正文

InnoDB实现序列化隔离级别的方法(innodb怎么实现)

编辑:rootadmin

推荐整理分享InnoDB实现序列化隔离级别的方法(innodb怎么实现),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:innodb怎么实现,innodb结构,innodb lru,innodb底层实现,innodb数据结构,innodb数据结构,innodb详解,innodb数据结构,内容如对您有帮助,希望把文章链接给更多的朋友!

序列化的实现

InnoDB对于序列化的实现方式,是通过两种方式实现的。

第一种,当SELECT语句在一个显式的事务块内,如执行表-9中的编号为1的情况,将施加LOCK_S锁,根据表-6(记录锁事务锁相容表)可知,LOCK_S锁排斥写锁,所以序列化隔离级别下只允许并发地读取操作,并发写被禁止,因此实现了可序列化。

相应代码如下:

第二种,当SELECT语句不在一个显式的事务块内,则通过获取最新快照(在事务开始的时候,),然后读取数据。此时,因基于快照的一致性读不需要加锁,所以其加锁情况对应到了表-9中的编号2对应的情况。

InnoDB实现序列化隔离级别的方法(innodb怎么实现)

表-9 序列化隔离级别加锁情况

说明:

S0:SELECT * FROM bluesea WHERE c1=2; //使用主键索引做WHERE条件

另外,对于FLUSH...WITH READ LOCK语句,序列化隔离级别下也需要加读锁LOCK_S

代码如下:

与序列化相关的,还有innobase_query_caching_of_table_permitted()函数,序列化隔离级别不允许缓冲查询。

总结

本文链接地址:https://www.jiuchutong.com/biancheng/349725.html 转载请保留说明!

上一篇:mysql创建本地用户及赋予数据库权限的方法示例(mysql在本地主机创建用户账号)

下一篇:MySQL 复制详解及简单实例(mysql复制命令)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络