
架构师之路
文章平均质量分 83
every__day
这个作者很懒,什么都没留下…
展开
-
4种事务的隔离级别,InnoDB如何巧妙实现?
本文取自微信公众号——《架构师之路》事务ACID特性,其中I代表隔离性(Isolation)。什么是事务的隔离性? 隔离性是指,多个用户的并发事务访问同一个数据库时,一个用户的事务不应该被其他用户的事务干扰,多个并发事务之间要相互隔离。一个事务怎么会干扰其他事务呢? 咱们举例子来说明,假设有InnoDB表: t(id PK, name);表中有三条记录: 1, shenji...转载 2018-09-17 10:10:36 · 311 阅读 · 0 评论 -
1分钟了解MyISAM与InnoDB的索引差异
本文取自微信公众号——《架构师之路》《数据库索引,到底是什么做的?》介绍了B+树,它是一种非常适合用来做数据库索引的数据结构: (1)很适合磁盘存储,能够充分利用局部性原理,磁盘预读; (2)很低的树高度,能够存储大量数据; (3)索引本身占用的内存很小; (4)能够很好的支持单点查询,范围查询,有序性查询;数据库的索引分为主键索引(Primary Inkex)与普通索引(Seco...转载 2018-10-15 09:32:12 · 196 阅读 · 0 评论 -
InnoDB,快照读,在RR和RC下有何差异?
本文取自微信公众号——《架构师之路》InnoDB是非常适合互联网业务的存储引擎,其多版本并发控制(Multi Version Concurrency Control, MVCC),快照读(Snapshot Read)机制,能够通过读取回滚段(rollback segment)中数据的历史版本,在事务读取记录的时候不用加锁,以支持超高的并发。【并发控制,快照读,回滚段】辅助阅读: 《Inn...转载 2018-09-29 15:35:56 · 1395 阅读 · 0 评论 -
InnoDB的快照读,到底和什么相关?
本文取自微信公众号——《架构师之路》InnoDB是非常适合互联网业务的存储引擎,其多版本并发控制(Multi Version Concurrency Control, MVCC),快照读(Snapshot Read)机制,能够通过读取回滚段(rollback segment)中数据的历史版本,在事务读取记录的时候不用加锁,以支持超高的并发。【并发控制,快照读,回滚段】辅助阅读: 《Inn...转载 2018-10-08 11:29:24 · 469 阅读 · 0 评论 -
数据库索引,到底是什么做的?
本文取自微信公众号——《架构师之路》近期写数据库,不少朋友留言问MySQL索引底层的实现,今天简单聊一聊,少讲“是怎么样”,更多说说“为什么设计成这样”。问题1. 数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去? 于是,图书管理员设计了一套规则: (1)一楼放历史类,二楼放文学类,三楼放IT类… (2)IT类,又分软件类,...转载 2018-10-12 17:24:11 · 189 阅读 · 0 评论 -
InnoDB并发插入,居然使用意向锁?
本文取自微信公众号——《架构师之路》一,案例说明 MySQL,InnoDB,默认的隔离级别(RR),假设有数据表: t(id AUTO_INCREMENT, name);数据表中有数据: 1, shenjian 2, zhangsan 3, lisi事务A先执行,还未提交: insert into t(name) values(xxx);事务B后执行: insert ...转载 2018-10-11 14:21:19 · 300 阅读 · 0 评论 -
InnoDB的快照读,到底和什么相关?
本文取自微信公众号——《架构师之路》InnoDB是非常适合互联网业务的存储引擎,其多版本并发控制(Multi Version Concurrency Control, MVCC),快照读(Snapshot Read)机制,能够通过读取回滚段(rollback segment)中数据的历史版本,在事务读取记录的时候不用加锁,以支持超高的并发。【并发控制,快照读,回滚段】辅助阅读: 《Inn...转载 2018-09-26 17:37:06 · 274 阅读 · 0 评论 -
插入InnoDB自增列,居然是表锁?
本文取自微信公众号——《架构师之路》一,案例说明 MySQL,InnoDB,默认的隔离级别(RR),假设有数据表: t(id AUTO_INCREMENT, name);数据表中有数据: 1, shenjian 2, zhangsan 3, lisi事务A先执行,还未提交: insert into t(name) values(xxx);事务B后执行: insert ...转载 2018-09-15 15:39:43 · 407 阅读 · 0 评论 -
InnoDB,select为啥会阻塞insert?
本文取自微信公众号——《架构师之路》MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。InnoDB的细粒度锁,是实现在索引记录上的。一,InnoDB的索引 InnoDB的索引有两类索引,聚集索引(Clustered Index)与普通索引(Secondary Index)。InnoD...转载 2018-09-15 15:38:04 · 212 阅读 · 0 评论 -
InnoDB并发如此高,原因竟然在这?
本文取自微信公众号——《架构师之路》一、并发控制 为啥要进行并发控制? 并发的任务对同一个临界资源进行操作,如果不采取措施,可能导致不一致,故必须进行并发控制(Concurrency Control)。技术上,通常如何进行并发控制? 通过并发控制保证数据一致性的常见手段有: 锁(Locking) 数据多版本(Multi Versioning)二、锁 如何使用普通锁保证一致性...转载 2018-09-14 17:10:47 · 237 阅读 · 0 评论 -
InnoDB,5项最佳实践,知其所以然?
本文取自微信公众号——《架构师之路》第一篇,说说MySQL两个最常用的存储引擎,MyISAM和InnoDB。照自己的理解,把一些知识点总结出来,不只说知识点,多讲“为什么”。一、关于count(*) 知识点:MyISAM会直接存储总行数,InnoDB则不会,需要按行扫描。潜台词是,对于select count(*) from t; 如果数据量大,MyISAM会瞬间返回,而InnoDB...转载 2018-09-14 17:07:51 · 203 阅读 · 0 评论 -
别废话,各种SQL到底加了什么锁?
本文取自微信公众号——《架构师之路》这个月花了一些功夫写InnoDB:并发控制,MVCC,索引,锁… 有朋友留言:你TM讲了这么多,锁分了这么多类型,又和事务隔离级别相关,又和索引相关,究竟能不能直接告诉我,一个SQL到底加了什么锁!?我竟无言以对。好吧,做过简单梳理之后,今天尝试着直接回答,尽量做到不重不漏,各种SQL语句究竟加了什么锁。一、普通select (1)在读未提...转载 2018-09-23 16:09:39 · 398 阅读 · 0 评论 -
InnoDB的快照读,到底和什么相关?
本文取自微信公众号——《架构师之路》InnoDB是非常适合互联网业务的存储引擎,其多版本并发控制(Multi Version Concurrency Control, MVCC),快照读(Snapshot Read)机制,能够通过读取回滚段(rollback segment)中数据的历史版本,在事务读取记录的时候不用加锁,以支持超高的并发。【并发控制,快照读,回滚段】辅助阅读: 《Inn...转载 2018-10-26 16:43:31 · 216 阅读 · 0 评论