架构师之路年终总结(七)-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里,是不是有点意思?

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

知其然,知其所以然。

思路比结论重要。

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

推荐阅读:

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

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

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

MySQL,有收获吗?谢转。

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

关于MySQL,你未必知道的!相关推荐

  1. linux 修改mysql root密码_Linux mysql如何更改root密码

    说到root密码,很多人想到的是电脑系统的root账号密码,其实mysql也有root密码,那么在Linux系统中,mysql要如何修改root密码呢?特别是忘记了root密码要怎么办? 通过登录my ...

  2. mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能

    MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...

  3. Linux下修改Mysql的用户(root)的密码

    修改的用户都以root为列. 一.拥有原来的myql的root的密码: 方法一: 在mysql系统外,使用mysqladmin # mysqladmin -u root -p password &qu ...

  4. 修改Mysql的root密码方法归纳

    修改的用户都以root为列. 一.拥有原来的myql的root的密码: 方法一: 在mysql系统外,使用mysqladmin # mysqladmin -u root -p password &qu ...

  5. linux路由修改密码,Linux中修改Mysql root用户密码的方法

    Linux中修改Mysql root用户密码的方法 下面给大家分享下在Linux下如何修改Mysql的用户(root)的密码,分两种情况:第一种当拥有原来的mysql的root密码,第二种情况忘记原来 ...

  6. Linux mysql设置密码

    修改的用户都以root为列. 一.拥有原来的myql的root的密码: 方法一: 在mysql系统外,使用mysqladmin # mysqladmin -u root -p password &qu ...

  7. 修改mysql的用户密码

    修改的用户都以root为列. 一.拥有原来的myql的root的密码: 方法一: #mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost ...

  8. linux mysql密码转义_linux忘记mysql密码处理方法

    linux忘记mysql密码处理方法: # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-n ...

  9. mysql root账号_修改mysql root账号密码

    一.拥有原来的myql的root的密码: 方法一: 在mysql系统外,使用mysqladmin # mysqladmin -u root -p password "test123" ...

  10. 重置或者修改mysql的root密码

    修改linux下安装mysql的root的密码 第一步: # mysql -uroot -p 第二步: Enter password:[此处无需输入,直接回车] 第三步: mysql>use m ...

最新文章

  1. 慢动作输出 Linux 命令结果并用彩色显示
  2. 能量分析攻击day02
  3. 十年开发教会我的那些事儿
  4. win 10+ iis 10 部署.net core 1.1 web api
  5. BZOJ3653: 谈笑风生
  6. 欧几里得算法和唯一分解定理
  7. 在Ubuntu下实现PDG文件的观看
  8. 独家中文汉化AE脚本 Animation Studio v2.3 Win/Mac一键安装版 预设持续更新 支持CC2020
  9. 智能电子标签的分类有哪几种
  10. Panic and Recover
  11. 头歌MySQL数据库
  12. Nacos的连接拒接丶解决方案
  13. 把图片转成像素点保存到Excel中
  14. python汉明距离_simhash+汉明距离计算文本相似度
  15. python的easygui属性错误_python - PythonAnywhere:尝试使用easygui模块时出现Tkinter.py错误 - 堆栈内存溢出...
  16. Arcgis二次开发——建立自己的小工程
  17. windows电脑上架app store的软件
  18. 收集整理的openstack java封装 api的第三方实现的选择
  19. 二叉树的公共最近祖先问题
  20. 【架构师】零基础到精通——康威定律

热门文章

  1. SVG滤镜+阴影+渐变--学习笔记
  2. php与go按位异或的差异
  3. Linux的上传和下载文件到Window_scp指令
  4. android 添加预装的方法
  5. 一种二值图像封闭孔洞的高效填充算法
  6. RPA流程自动化有什么优点?如何使用RPA机器人自动化养号?​
  7. 微信小程序 | 做一个小程序端的扫雷游戏
  8. MATLAB代码:电动汽车有序充电策略 基于峰谷分时电价引导下的电动汽车充电负荷优化
  9. js中关于length与size的区别
  10. python爬取微信聊天记录数据_[使用案例]python如何爬取微信好友信息?(上)