本文主要是标记一下MySQL的学习大纲,然后自己慢慢填坑。
底层
架构分离
众所周知,mysql分为连接层、server层、存储引擎层、数据层。
其中,引擎层是插件式的,所以可以针对性地应对各种业务需求。
优秀的架构应该是分层的、隔离的、面向接口的、可自由切换的。
存储引擎 //todo
优化读
作为一个数据库,海量数据的查询是必不可少的,而搜索和磁盘读是首先要考虑的。
便于搜索的数据结构有哈希表、链表、树、跳跃表等。
而mysql最后选择了B+树,有几点原因:
- 搜索快,且尽可能减少了磁盘IO。
- 所有查询都落到了子节点,查询稳定。
- 子节点有序,便于范围查询。
具体细节:
再此基础上,mysql还添加了预读机制:
优化读:缓存,预读,
优化写
凡是要优化写,首选:
随机IO优化成顺序IO
单次写优化成批次写
MySQL怎么缓解写的压力?--- change buffer
高可用
binlog用于无限回放
redolog用于重启恢复
//todo
数据一致性
锁,隔离级别,
应用
- 表设计
- SQL语句