内容简介:架构师之路年终总结(七)-MySQL篇今年(去年)写了几万字关于
架构师之路年终总结(七)-MySQL篇
今年(去年)写了几万字关于 MySQL 的文章,年终稍作总结,希望对大家有帮助。
1. 索引到底是怎么实现的?
这两篇文章很重要,讲解 MySQL 索引底层实现,也是 阅读量最高 的几篇之一。
《 数据库索引,到底是什么做的? 》
这一篇,介绍了 哈希索引 , 树索引 , 数据预读/局部性原理 , B+树的优化思路 。
在上一篇基础之上,用图例讲述了MyISAM与InnoDB的索引差异与实践。
2. 《 InnoDB,为何并发如此之高? 》
文章介绍了:
(1)什么是并发控制;
(2)并发控制的常见方法:锁,数据多版本;
(3)redo,undo,回滚段的实践;
(4)InnoDB如何利用回滚段实现MVCC,实现快照读。
结论是, 快照读 (Snapshot Read),这种不加锁的读,是InnoDB高并发的核心原因之一。
番外篇:《 快照读,在RR和RC下的差异 》
快照读,在 可重复读 与 读提交 两种事务隔离级别下,有微小的差异,文章通过案例做了简单叙述。
3. InnoDB的七种锁
先从一个有意思的案例,引出了锁的话题。
接下来的几篇文章详细的介绍了InnoDB内核中的七种锁。
这一篇,介绍了InnoDB内核的第一种锁, 自增锁 (Auto-inc Locks) 。
这一篇,介绍了InnoDB内核的三种锁:
-
共享/排他锁 ( Shared and Exclusive Locks)
-
意向锁 ( Intention Locks)
-
插入意向锁 ( Insert Intention Locks)
这一篇,介绍了InnoDB内核最有意思的三种锁:
-
记录锁 (Record Locks)
-
间隙锁 (Gap Locks)
-
临键锁 (Next-Key Locks)
这几篇文章,有大量的案例,相信大家会有收获。
4. 《 InnoDB如何巧妙实现,事务的4种隔离级别? 》
聊MySQL,聊锁,聊事务,一定逃不开 事务的隔离级别 ,本文简述了 读未提交 , 读提交 , 可重复读 , 串行化 的巧妙实现。
-
普通select
-
加锁select
-
update与delete
-
insert
各类SQL语句分别加了什么锁?
6. 《 超赞,InnoDB调试死锁的方法! 》
死锁的复现和调试都是很困难的 ,本文通过几个 案例 ,分享了复现与调试并发事务+死锁的方法,大家一定要 动起手来 ,这样印象才会更加深刻。
7. 《 MySQL不为人知的主键与唯一索引 》
本文分享了MySQL中最常见的两类约束: 主键与唯一索引约束 ,并细聊了这两类约束在InnoDB与MyISAM上的差异,有个MyISAM大坑,一定要注意绕过。
8. 其他
《 InnoDB的五项最佳实践,知其所以然 》
这是一篇聊InnoDB实践的文章:关于 count(*) ,关于 全文索引 ,关于 事务 ,关于 外键 ,关于 行锁与表锁 ,不仅会使用,还要知其所以然。
MySQL5.6,介绍了InnoDB的一些新特性,例如:居然能够支持 memcached插件 了,居然能 把InnoDB表放在DVD或者CD里 ,是不是有点意思?
这个数据库内核系列,查阅了 大量官网英文资料 ,也自己 动手实践了很多案例 ,以保证知识的体系性与准确性, 希望大家有收获。
知其然,知其所以然。
思路 比结论重要。
架构师之路 -分享 可落地 的技术文章
推荐阅读:
MySQL,有收获吗?谢 转 。
画外音:信我,仔细读完,定有收获(大部分同学估计只扫了一眼?)。
以上所述就是小编给大家介绍的《关于 MySQL,你未必知道的》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 谈谈大家想知道的、不知道的SDN
- 你知道和你不知道的冒泡排序
- JS数组中那些你知道或不知道的
- 掌握Python列表理解需要知道的9件事,你知道吗?
- 你所知道或不知道的CSS content属性
- 前端程序员不知道的14个JavaScript调试技巧,你知道几个?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。