MySQL问答二

LarsMySQLMySQL大约 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