高性能MySQL笔记第一章

mysql archtecture

最上层是连接处理,网络认证等功能;第二层是查询优化,分析,优化,缓存,以及SQL内置函数的实现、跨存储引擎的操作 例如视图,存储过程等的实现;第三层就是各个不同的存储引擎,存储引擎提供一些基础的函数实现供上层调用。

MySQL会使用线程池缓存建立的线程,每个连接对应一个线程。

  • 并发控制
    • 读写锁
    • 表锁
    • 行锁

事务,ACID。

隔离级别:

- 未提交读
- 已提交读
- 可重复读
- 串行

事务:

事务日志可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久 在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用的是追加的方式,因此写日志的操作是磁盘上 一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志 持久以后,内存中被修改的数据在后台可以慢慢地刷回到磁盘。目前大多数存储引擎都是这样实现的,我们通常称之为 预写式日志(Write-AheadLogging),修改数据需要写两次磁盘。

多版本并发控制(MVCC):

使用记录快照的方式来实现,每一行数据都有一个版本号。具体实现待研究,据说是对修改的数据都是写在快照上,因此读的数据都会 一致,TODO。


更多文章
  • Redis源码阅读与分析二:双链表
  • Redis源码阅读与分析三:哈希表
  • Redis源码阅读与分析一:sds
  • Golang runtime 源码阅读与分析
  • Golang的一些坑
  • GC 垃圾回收
  • 设计一个路由
  • Go语言性能优化实战
  • 那些年开发的时候踩过的坑
  • (关系型)数据库优化总结
  • 动态规划民科教程
  • Golang 分布式异步任务队列 Machinery 教程
  • 使用geohash完成地理距离计算
  • 2018年就要到了,这一年都做了什么呢?
  • 算法导论阅读笔记 --- 排序算法