MySQL学习大纲(持续更新)

221 阅读1分钟

本文主要是标记一下MySQL的学习大纲,然后自己慢慢填坑。

底层

架构分离

众所周知,mysql分为连接层、server层、存储引擎层、数据层。

其中,引擎层是插件式的,所以可以针对性地应对各种业务需求。

优秀的架构应该是分层的、隔离的、面向接口的、可自由切换的。

MySQL架构概览

存储引擎 //todo

优化读

作为一个数据库,海量数据的查询是必不可少的,而搜索和磁盘读是首先要考虑的。

便于搜索的数据结构有哈希表、链表、树、跳跃表等。

而mysql最后选择了B+树,有几点原因:

  • 搜索快,且尽可能减少了磁盘IO。
  • 所有查询都落到了子节点,查询稳定。
  • 子节点有序,便于范围查询。

具体细节:

MySQL为什么要用B+树?

学MySQL的第一座大山---索引

再此基础上,mysql还添加了预读机制:

MySQL怎么缓解读的压力的?---buffer pool

优化读:缓存,预读,

优化写

凡是要优化写,首选:

随机IO优化成顺序IO

单次写优化成批次写

MySQL怎么缓解写的压力?--- change buffer

高可用

binlog用于无限回放

redolog用于重启恢复

//todo

数据一致性

锁,隔离级别,

学MySQL的第二座大山---锁,事务

应用

  • 表设计

学习mysql的最后一座大山---表设计

  • SQL语句