MySQL问答二
MySQLMySQL大约 2 分钟
说一下数据库引擎
说一下Innondb中的锁
说一下BufferPool
说一下执行计划
说一下MySQL的各种log
Undo Log(回滚日志):保证事务期间的原子性(存储引擎层日志)
- 事务未提交前,mysql会将还没更新的原始数据记录到undolog中
- 涉及到的操作:新增、删除、更新
- 每条log中都至少有两个信息:
- roll_pointer:指向下一条undolog的指针,串联所有的undolog
- trx_id:该条记录对应的事务id

- Undo-log 实现事务回滚,保证事务的原子性
- Undo-log+ReadView实现MVCC(多版本并发控制)
redo log(重做日志):保证事务期间的持久性(存储引擎层日志)
bin log
说一下主从复制原理
说一下事务隔离级别
说一下MySQL的XA分布式事务(内部、外部)
说一下创建索引的优势、负面影响
- 优势:提高查询速度和效率
- 缺点:提高存储成本、表结构变更导致索引变更复杂
索引的使用原则
索引优化方案
::: success
- 覆盖索引:减少回表
- 前缀索引:防止索引站用过多空间
- 防索引失效
:::
索引分类
数据类型分类
B+树索引、Hash索引、Full-Text索引
数段数量分类
单列索引、联合索引
字段特性分类
主键索引、唯一索引、普通索引、前缀索引
物理存储分类
聚簇索引:即主键索引 二级索引:辅助索引,最终需要回表查数据
索引匹配规则
索引使用中遇到的问题
什么是MVCC
什么是回表
在二级索引的B+树查询到记录的主键id后,返回主键索引B+树查询数据内容的过程即为回表
什么是索引覆盖
在二级索引的B+树查询到记录的主键id后,不需要回表查询,即2级索引结果集中已经包含要的字段
什么是索引条件下推
select * from table where a > 1 and b = 2
联合索引(a,b),其中a>1条件使用了索引,获取到数据集,需要再回表查询数据,在执行器进行条件判断 引入索引下推后: a>1条件使用了索引,获取到数据集,直接通过联合索引中的b进行判断,无需回表
Powered by Waline v2.14.1