关于MySQL,你未必知道的!

架构师之路年终总结(七)-MySQL篇


今年(去年)写了几万字关于MySQL的文章,年终稍作总结,希望对大家有帮助。


1.索引到底是怎么实现的?

这两篇文章很重要,讲解MySQL索引底层实现,也是阅读量最高的几篇之一。


数据库索引,到底是什么做的?

这一篇,介绍了哈希索引树索引数据预读/局部性原理B+树的优化思路


MyISAM与InnoDB的索引差异究竟是啥?

在上一篇基础之上,用图例讲述了MyISAM与InnoDB的索引差异与实践。


2.InnoDB,为何并发如此之高?
文章介绍了:
(1)什么是并发控制;
(2)并发控制的常见方法:锁,数据多版本;

(3)redo,undo,回滚段的实践;

(4)InnoDB如何利用回滚段实现MVCC,实现快照读。


结论是,快照读(Snapshot Read),这种不加锁的读,是InnoDB高并发的核心原因之一。


番外篇:《快照读,在RR和RC下的差异

快照读,在可重复读读提交两种事务隔离级别下,有微小的差异,文章通过案例做了简单叙述。

3.InnoDB的七种锁

先从一个有意思的案例,引出了锁的话题。

接下来的几篇文章详细的介绍了InnoDB内核中的七种锁。


InnoDB插入自增列,是表锁吗?

这一篇,介绍了InnoDB内核的第一种锁,自增锁(Auto-inc Locks)


InnoDB并发插入,会不会互斥?

这一篇,介绍了InnoDB内核的三种锁:

  • 共享/排他锁Shared and Exclusive Locks)

  • 意向锁Intention Locks)

  • 插入意向锁Insert Intention Locks)


InnoDB,select为何会阻塞insert?

这一篇,介绍了InnoDB内核最有意思的三种锁:

  • 记录锁(Record Locks)

  • 间隙锁(Gap Locks)

  • 临键锁(Next-Key Locks)


这几篇文章,有大量的案例,相信大家会有收获。


4. InnoDB如何巧妙实现,事务的4种隔离级别?
聊MySQL,聊锁,聊事务,一定逃不开事务的隔离级别,本文简述了
读未提交读提交可重复读串行化的巧妙实现。


5.别废话,各种SQL到底加了什么锁?
这是一篇直接给结论的文章:

  • 普通select

  • 加锁select

  • update与delete

  • insert

各类SQL语句分别加了什么锁?


6.超赞,InnoDB调试死锁的方法!
死锁的复现和调试都是很困难的,本文通过几个案例,分享了复现与调试并发事务+死锁的方法,大家一定要动起手来,这样印象才会更加深刻。


7.MySQL不为人知的主键与唯一索引

本文分享了MySQL中最常见的两类约束:主键与唯一索引约束,并细聊了这两类约束在InnoDB与MyISAM上的差异,有个MyISAM大坑,一定要注意绕过。


8.其他
InnoDB的五项最佳实践,知其所以然
这是一篇聊InnoDB实践的文章:关于count(*),关于全文索引,关于事务,关于外键,关于行锁与表锁,不仅会使用,还要知其所以然。


MySQL5.6,InnoDB的一些新特性

MySQL5.6,介绍了InnoDB的一些新特性,例如:居然能够支持memcached插件了,居然能把InnoDB表放在DVD或者CD里,是不是有点意思?

这个数据库内核系列,查阅了
大量官网英文资料,也自己动手实践了很多案例,以保证知识的体系性与准确性,希望大家有收获。


知其然,知其所以然。

思路比结论重要。

640?wx_fmt=jpeg

架构师之路-分享可落地的技术文章


推荐阅读:

“立体化监控告警平台”-年终总结(一)

“缓存架构,一篇搞定”-年终总结(五)

“技术人如何带团队”-年终总结(六)


MySQL,有收获吗?谢

画外音:信我,仔细读完,定有收获(大部分同学估计只扫了一眼?)。

猜你喜欢

转载自blog.csdn.net/z50L2O08e2u4afToR9A/article/details/87311373
今日推荐