前 看了前几篇随笔,感觉有点翻译的味道,以后我尽量避免。 这次我们要看的是关于数据库的并行控制的paper,是1976年的老文章了。这篇paper分为两个部分,第一部分介绍多粒度锁,讲的是在继承结构下的加锁方法,第二部分介绍关于多层级的isolation。 多粒度锁 直觉上,排外锁(X)和共享锁(S ...
分类:
其他好文 时间:
2020-11-17 12:46:44
阅读次数:
8
近一个多月,写了一些MySQL内核的文字,稍作总结,希望对大家有帮助。1.《InnoDB,为何并发如此之高?》文章介绍了:(1)什么是并发控制;(2)并发控制的常见方法:锁,数据多版本;(3)redo,undo,回滚段的实践;(4)InnoDB如何利用回滚段实现MVCC,实现快照读。结论是,快照读(SnapshotRead),这种不加锁的读,是InnoDB高并发的核心原因之一。番外篇:《快照读,在
分类:
数据库 时间:
2020-11-17 12:10:05
阅读次数:
12
近期写了不少InnoDB锁相关的文章,不少小伙伴问,如何在MySQL终端模拟并发事务,如何复现之前文章中的案例。今天,咱们一起动起手来,模拟并发事务的互斥与死锁。【事前准备】安装MySQL服务端安装MySQL客户端安装能够模拟多个并发事务的终端画外音:楼主使用的是MySQL5.6,官方客户端mysql,模拟并发终端用的SecureCRT。【配置的确认与修改】要测试InnoDB的锁互斥,以及死锁,有
分类:
数据库 时间:
2020-11-17 12:07:49
阅读次数:
11
昨天挖了一个坑《InnoDB的快照读,到底和什么相关?》,今天来填坑。为了保证文章知识体系的完整性,先简单解释下快照读,读提交,可重复读。快照读(SnapshotRead)MySQL数据库,InnoDB存储引擎,为了提高并发,使用MVCC机制,在并发事务时,通过读取数据行的历史数据版本,不加锁,来提高并发的一种不加锁一致性读(ConsistentNonlockingRead)。读提交(ReadCo
分类:
数据库 时间:
2020-11-17 12:07:32
阅读次数:
8
MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。InnoDB的细粒度锁,是实现在索引记录上的。一,InnoDB的索引InnoDB的索引有两类索引,聚集索引(ClusteredIndex)与普通索引(SecondaryIndex)。InnoDB的每一个表都会有聚集索引:(1)如果表定义了PK,则PK就是聚
分类:
数据库 时间:
2020-11-17 12:04:17
阅读次数:
11
《挖坑,InnoDB的七种锁》初步说明了InnoDB中,会使用七种不同类型的锁,今天就介绍其中的第一种,自增锁(Auto-incLocks)。一,案例说明MySQL,InnoDB,默认的隔离级别(RR),假设有数据表:t(idAUTO_INCREMENT,name);数据表中有数据:1,shenjian2,zhangsan3,lisi事务A先执行,还未提交:insertintot(name)val
分类:
数据库 时间:
2020-11-17 12:03:43
阅读次数:
13
Case1MySQL,InnoDB,默认的隔离级别(RR),假设有数据表:t(idPK,name);数据表中有数据:10,shenjian20,zhangsan30,lisi事务A先执行,还未提交:insertintotvalues(11,xxx);事务B后执行:insertintotvalues(12,ooo);问:事务B会不会被阻塞?Case2MySQL,InnoDB,默认的隔离级别(RR),
分类:
数据库 时间:
2020-11-17 12:03:25
阅读次数:
13
《InnoDB行锁,如何锁住一条不存在的记录?》埋了一个坑,没想到评论反响剧烈,大家都希望深挖下去。原计划写写InnoDB的锁结束这个case,既然呼声这么高,干脆全盘系统性的写写InnoDB的并发控制,锁,事务模型好了。体系相对宏大,一篇肯定写不完,容我娓娓道来,通俗地说清楚来龙去脉。一、并发控制为啥要进行并发控制?并发的任务对同一个临界资源进行操作,如果不采取措施,可能导致不一致,故必须进行并
分类:
数据库 时间:
2020-11-17 12:02:54
阅读次数:
12
《InnoDB,5项最佳实践,知其所以然?》发布后,不少同学留言希望讲讲MySQL的InnoDB行锁机制。要细聊MySQL的行锁,难以避免的要从事务的四种隔离级别说起。四种隔离级别,又脱不开聊读脏,不可重复读,读幻象等问题。事务隔离级别,行锁机制等都比较垂直,应用开发中大部分同学都用不到,不确定是否大部分朋友都感兴趣。今天,先抛出一个问题,如果大家确定对这类话题感兴趣的话,后续我花时间细聊这一系列
分类:
数据库 时间:
2020-11-17 12:02:33
阅读次数:
10
python中对象的管理与引用计数相关,,当引用计数变为0时,该对象便会被垃圾回收器回收,当撤销对一个对象的引用时,python 解释器对对象以及计数管理会分为以下两步: 1,使用引用计数减一 2.判断该计数是否为0,如果为0,则销毁该对象 假设a,b线程同时引用一个对象obj,此时该对象的引用计数 ...
分类:
编程语言 时间:
2020-11-16 14:01:33
阅读次数:
19