HTML5技术

mysql的并发处理机制_下篇 - 苏家小萝卜(5)

字号+ 作者:H5之家 来源:H5之家 2017-10-24 09:01 我要评论( )

当数据库支持ICP的时候,根据复合索引第一列 age 查找age between 5 and 22,然后在索引内部过滤score between 1 and 10后,取得索引值后,如果数据库支持 MRR,则会把取得的索引值放到buffer中,对主键进行排序,

      当数据库支持ICP的时候,根据复合索引第一列 age 查找 age between 5 and 22,然后在索引内部过滤 score between 1 and 10后,取得索引值后,如果数据库支持 MRR,则会把取得的索引值放到buffer中,对主键进行排序,然后可以根据顺序的主键值去 主键中查找行数据,如果不支持,则跳过这一步排序步骤,直接根据索引值内部的主键值,查找主键行数,最后过滤 name is not null 。

    

      加锁过程如下,tb_lock添加 IX 意向锁,在索引  ix_age_score 给索引值(7,10,5),(21,4,3)添加上 X record lock,并添加4个 X GAP LOCK,如图片红色素箭头展示,分别为((4,7,4), (7,10,5)),((7,10,5), (9,15,2)),((9,15,2),(21,4,3)),((21,4,3),(25,1,6)),最后在主键上给id=3及id=5 两行数就添加X record lock。

3.2 不支持ICP情况

      当数据库不支持ICP的时候,根据复合索引第一列 age 选择 age between 5 and 22,然后根据筛选的索引值 (7,10,5),(9,15,2),(21,4,3)中的主键 5、2、3,找到对应的行数据,再在行数据中 过滤 score between 1 and 10 and name is not null。

    

      加锁过程如下,tb_lock添加 IX 意向锁,在索引  ix_age_score 给索引值(7,10,5),(9,15,2),(21,4,3)添加上 X record lock,并添加4个 X GAP LOCK,如图片红色素箭头展示,分别为((4,7,4), (7,10,5)),((7,10,5), (9,15,2)),((9,15,2),(21,4,3)),((21,4,3),(25,1,6)),最后在主键上给id=2、id=3、id=5 两行数就添加X record lock。

 

参考文档:?p=771#_Toc374698321

 

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • bootstrap Table 服务端处理分页 后台是.net - tzzf

    bootstrap Table 服务端处理分页 后台是.net - tzzf

    2017-10-19 08:03

  • Entity Framework Code First实现乐观并发 - 东城慕水

    Entity Framework Code First实现乐观并发 - 东城慕水

    2017-10-12 11:00

  • Go语言学习笔记(八)golang 操作 Redis Mysql RabbitMQ - 索宁

    Go语言学习笔记(八)golang 操作 Redis Mysql RabbitMQ - 索宁

    2017-08-24 09:03

  • EntityFramework Core问题处理集锦(一) - Jeffcky

    EntityFramework Core问题处理集锦(一) - Jeffcky

    2017-08-07 11:00

网友点评
c