吉祥坊最新手机官网欢迎您! ·设为首页 ·加入收藏 ·站点地图
当前位置: 主页 > 吉祥坊官方网 >

伸荐:mysql锁 innodb下的记载锁,间隙锁,next-

2018-12-05 来源: [db:来源] 作者:[db:作者]

  你需寻求知道的

  之前我们伸见了排他锁,实则innodb下的记载锁(也叫行锁),吉祥坊锁,next-key锁畅通畅通属于排他锁。

  行锁

  记载锁实则很好了松,对表中的记载加以锁,叫做记载锁,信称行锁。

  生活中的吉祥坊锁

  编程的思惟源于生活,生活中的例儿子能僚佐我们更好的了松壹些编程中的思惟。

  生活中排队的场景,小皓,小红,小花叁团弄体以次站成壹排,此雕刻,何以让新到来的小方不能站在小红边缘,此雕刻时分条需将小红和她前面的小皓之间的空隙查封锁,将小红和她前面的小花之间的空隙查封锁,这么小方就不能站到小红的边缘。

  此雕刻边的小红,小皓,小花,小方坚硬是数据库的壹条笔记载。

  他们之间的空隙也坚硬是吉祥坊,而查封锁他们之间距退的锁,叫做吉祥坊锁。

  Mysql中的吉祥坊锁

  下表中(见图壹),id为主键,number字段上拥有匪独壹索伸的二级索伸,拥有什么方法却以让该表不能又拔出产number=5的记载?

  

  图壹

  根据下眼熟活中的例儿子,我们己条是然却以想到,条需把持几个点,number=5之前不能拔出产记载,number=5即兴拥局部记载之间不能又拔出产新的记载,number=5之后不能拔出产新的记载,这么新的number=5的记载将不能被拔出产出产去。

  这么,mysql是何以把持number=5之前,之中,之后不能拥有新的记载拔出产呢(备止幻读)?

  恢复案是用吉祥坊锁,在RR级佩下,mysql经度过吉祥坊锁却以完成锁定number=5之前的吉祥坊,number=5记载之间的吉祥坊,number=5之后的吉祥坊,从而使的新的记载无法被拔出产出产去。

  吉祥坊是怎么瓜分的?

  注:为了方面了松,我们规则(id=A,number=B)代表壹条字段id=A,字段number=B的记载,(C,D)代表壹个区间,代表C-D此雕刻个区间范畴。

  图壹中,根据number列,我们却以分为几个区间:(无量小,2),(2,4),(4,5),(5,5),(5,11),(11,无量父亲)。

  条需此雕刻些区间对应的两个临界记载中间男却以拔出产记载,就认为区间对应的记载之间拥关于键词。

  比如:区间(2,4)区别对应的临界记载是(id=1,number=2),(id=3,number=4),此雕刻两笔记载中间男却以拔出产(id=2,number=3)等记载,这么就认为(id=1,number=2)与(id=3,number=4)之间存放在吉祥坊。

  很多人会讯问,那记载(id=6,number=5)与(id=8,number=5)之间拥关于键词吗?

标签:[db:TAG标签]