- mysql 执行顺序
- 解析器 解析sql 提示语法错误
- 优化器 优化查询索引使用 执行顺序
- 执行器 操作引擎,返回结果
- 日志模块
- bin log
- 所有引擎都可使用 追加写入,不会覆盖
- Binlog有两种模式,statement 格式的话是记sql语句, row格式会记录行的内容,记两条,更新前和更新后都有
- redo log
- inno db 特有的 循环使用
- 先写日志 在写磁盘
- Redo log不是记录数据页“更新之后的状态”,而是记录这个页 “做了什么改动”
- bin log
- 索引
- 哈希表
- 适合做等值查询,由于数据无序,不适用区间查询,如nosql
- 有序数组
- 适合做静态数据索引
- B+索引
- 主键索引,叶子节点存放数据
- 普通索引查询需要回表
- 主键使用自增主键可以提升插入性能和节省空间
- mysql 索引
- 使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本,慎用 ,影响性能
- 索引选取的越长,占用的磁盘空间就越大,相同的数据页能放下的索引值就越少,搜索的效率也就会越低
- 哈希表