MySQL速记小册(1)

1

【Q】:Mysql中的数据排序是怎么实现的?

【A】:

  1. 排序过程中如果字段有索引,则利用索引排序。反之使用文件排序。在文件排序中,如果数据量少则在内存中排序,使用单路排序或双路排序。如果数据量大则利于磁盘文件进行外部排序,一般是归并排序。

2

【Q】:Mysql的Chang Buffer是什么?

【A】:

  1. Chang Buffer是Mysql InnoDB存储引擎的一个机制,用于暂存对二级索引的删除和更新操作的变更,而不是立刻执行这些操作,随后,当InnoDB进行合适的条件时(如页被读取或Flush操作),会将这些变更写入到二级索引中。
  2. 作用:
    1. 提高写入性能,提高对二级索引的变更缓存,可以减少对磁盘的频繁写入,提升插入和更新操作的性能。
    2. 批量处理,Chang Buffer 可以在后续的操作中批量处理这些变更,减少了随机写入的开销。

3

【Q】:详细描述一下一条SQL语句在MySQL的执行过程

【A】:

  1. 先通过连接器校验权限。
  2. 再利用分析器进行SQL语句的词法分析和语法分析,构建解析树。
  3. 使用优化器选择合适的索引和表连接顺序,最终选择一个最佳的执行计划。

4

【Q】:Mysql主要的存储引擎包括:

【A】:

  1. InnoDB:支持事务 ,行级锁和外键。提供高并发性能,适用于高负载的OLTP应用。数据以聚集索引的方式存储,提高检索效率。
  2. MyISAM:不支持事务和外键,适用表级锁。适合读取多,更新少的场景,如数据仓库。具有较高的读性能和较快的表级锁定
  3. MEMORY和NDB和ARCHIVE。

5

【Q】:Mysql的索引类型有什么?

【A】:

  1. 从数据结构角度来看,Mysql索引可以分为以下几类:
    1. B+树索引
    2. 哈希索引
    3. 倒排索引(即全文索引 Full-Text)
    4. R-树索引(多维空间树)
  1. 从常见的基于InnoDB B+树索引角度来看,可以分为:
    1. 聚簇索引
    2. 非聚簇索引
  1. 索引性质角度来看,普通索引,主键索引,联合索引,唯一索引,全文索引,空间索引

6

【Q】:InooDB 引擎中的聚簇索索引和非聚簇索引区别

【A】:

  1. 聚簇索引
    1. 索引叶子节点存储的是数据行,可以直接访问完整数据。
    2. 每一个表只能有一个聚簇索引,通常是主键索引,适合访问查询和排序
  1. 非聚簇索引
    1. 索引叶子节点存储的是数据行的主键和对应的索引列,需通过主键才能访问完整的数据行。
    2. 一个表可以有多个非聚簇索引,适用于快速查找特定列的数据。

7

【Q】:MySQL里面的回表是什么?

【A】:

  1. 回表是指在使用二级索引(非聚簇索引)作为进行查询时,由于二级索引中只存储了索引字段的值和对应的主键值,无法获得其他数据。如果要查询数据行中的其他数据,需要根据主键去聚簇索引中查找实际的数据行,这个过程被称为回表。

8

【Q】:索引的最左前缀匹配原则是什么?

【A】:

  1. Mysql索引的最左前匹配原则是指在使用联合索引时,查询条件必须从索引条件的最左侧开始匹配。如果一个联合索引包含多个列,查询条件必须包含第一列的条件,然后是第二列,以此类推。
  2. 底层原理:因为联合索引在B+树中的排序方式遵循“从左到右”的顺序,列如联合索引(frist_name,last_name, age)会按照此顺序在B+树中进行排序。
  3. 组合索引能从左到右依次高效匹配,跳过最左侧字段会导致无法利用该索引。

9

【Q】:Mysq覆盖l索引是什么?

【A】:

  1. Mysql覆盖索引是指二级索引中包含了查询所需的所有字段,从而使查询可以仅通过访问二级索引而不需要访问实际的表数据(主键索引)。

10

【Q】:索引下推是什么?

【A】:

  1. 索引下推是一种减少回表查询,提高查询效率的技术。允许Mysql在使用索引查找数据时,将部分查找条件下推到存储引擎层过滤,从而减少需要从表中读取的数据行,减少IO(本应该由service做的操作交给了存储引擎层操作,因此叫做下推)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值