数据库是后端开发不可或缺的存储组件,本文详细介绍了数据库索引,事务,日志等核心原理,掌握原理,才能更好的开发上层应用
- mysql
- 索引
- 索引的概念
- 索引的类型
- 主键索引
- 唯一索引
- 普通索引
- 全文索引
- 组合索引
- 哈希索引
- 索引的实现方式
- B-Tree 索引
- Hash 索引
- Full-text 索引
- R-Tree 索引
- 索引的优缺点
- 优点
- 提高查询效率
- 减少IO操作
- 缺点
- 增加写操作的成本
- 占用更多的存储空间
- 可能会导致性能下降
- 索引的使用注意事项
- 索引的选择和创建
- 索引的使用规则
- 索引的维护
- 索引的性能优化
- 索引覆盖
- 聚簇索引
- 避免过度索引
- 索引下推
- 索引的常见问题和解决方法
- 索引失效
- 索引不当使用
- 索引过多
- 索引碎片化
- 索引在数据库优化中的应用
- 查询优化
- 数据库设计优化
- 数据库运维优化
- 事务
- 事务的概念
- 事务的定义
- 事务的特性
- MySQL 存储引擎
- 存储引擎的定义
- InnoDB 存储引擎的特点
- MySQL 的事务实现
- 事务日志
- undo 日志
- redo 日志
- MySQL 的 MVCC 实现
- 事务的隔离级别
- 读未提交
- 读已提交
- 可重复读
- 串行化
- 死锁的处理
- 事务的应用
- 手动提交事务
- 自动提交事务
- 回滚事务
- 日志/持久化
- 什么是binlog
- binlog的概念和作用
- binlog的存储位置和格式
- binlog的类型
- statement格式
- row格式
- mixed格式
- binlog的写入
- binlog的写入时机和条件
- binlog的写入方法和原理
- binlog的读取和解析
- binlog的读取方法和原理
- binlog的解析工具和使用方法
- binlog的应用场景
- 数据库备份和恢复
- 数据库主从同步
- 数据库数据分析和迁移
- binlog的性能优化
- binlog的大小和性能关系
- binlog的滚动和清理策略
- binlog的异步写入和缓冲策略
- binlog的安全和保护
- binlog的访问控制和加密
- binlog的备份和恢复策略
- binlog的灾难恢复和应急响应
索引
索引的概念
索引是用于对数据库数据
快速检索
的数据结构,存储在磁盘上,不需要全部载入内存,在使用时按需读入内存。说白了,就是可以给数据库的数据在不同纬度(字段)上加上一个数据结构,能快速的根据这个纬度定位到特定的数据因此,评价一个索引的效率,
io次数(从磁盘读取索引到内存的次数)
就是一个很重要的指标。如果在一个很大的字段上建立了索引,就会导致索引树的
层数变高
,io次数变高
,导致效率变低
。
索引的类型
主键索引
- 在主键上建立的索引
- 如果一个表没有主键,innodb会自动分配一个整形的主键,因此,一般数据库建议都显式的加上整形的自增主键,如果有其他字段,也是唯一的,
建议是同样加上一个自增主键,再建立一个唯一索引
,因为,如果另外的字段不是整形,那么直接做主键索引,可能占用的空间更大,当回表
的时候,效率变低唯一索引
- 索引所在一个或者多个列的数据组成,是唯一的,主键索引一定是唯一索引
普通索引
- 数据不是唯一的,这种索引当数据重复度很大时,效率不高
全文索引
- 倒排索引
- 涉及到全文索引的,一般都用
es
了组合索引
- 多个字段上组合建立的索引,查询时遵从
最左匹配原则
,指的是索引建立的时候的字段左右,不是查询的时候哈希索引
- myisam使用的索引,innodb都是B+树
- hashtable
聚簇索引/非聚簇索引
- 叶子结点存的就是数据,innodb主键索引是
聚簇索引
,没有指定主键,会自动创建一个6字节的字增id,用于聚簇索引 - myIsam使用B+树构建索引时,叶子结点存的数据为磁盘地址,所以是使用的
非聚簇索引
- 非聚簇索引存的是指向数据的指针,可以理解还要经过一次地址才能访问到数据
- innodb的非主键索引,存的是主键id,这个应该也不能称为聚簇索引
索引的实现方式
B-Tree 索引
- 数据都存在
叶子结点
,主键索引叶子结点存数据
,非主键索引叶子结点存主键id
- 因此主键值改变的时候,需要更新所有索引保存的主键值
- 本身是有序树,结点内也是有序的,二分查找
- 叶子结点之间,双向链表,方便遍历,范围查询,排序
- 支持前缀查询
like xx%
,
Hash 索引
- hashtable为底层数据结构,需要全部载入内存
- 范围查询只能全表扫描
Full-text 索引
- 倒排索引
R-Tree 索引
待定
https://cloud.tencent.com/developer/article/2121055
https://www.cnblogs.com/xuwc/p/13873293.html
https://juejin.cn/post/7092056967216119845
https://www.cnblogs.com/qdhxhz/p/15598873.html