【MySQL系列2】深入分析MySQL索引的存储结构和优化方案,看完这篇再也不怕面试官问索引了

  • INDEX MERGE

  • 索引的种类

    • B+树索引的类型及使用
    • 普通索引
  • 唯一索引

  • 前缀索引

  • 多列联合索引

  • 全文索引

    • 全文索引不得不说的事
  • 哈希索引

  • 索引信息分析

    • 关于Cardinality
  • Cardinality的更新策略

  • Cardinality的计算方式

  • 索引的使用原则

    • 离散度
  • 最左匹配原则

    • like和_的最左匹配方式
  • 联合索引的最左匹配方式

  • 其他无法使用索引场景

  • 无法使用索引中的特例

    • <> 和not in特例
  • 最左匹配原则特例

  • 总结

MySQL系列文章汇总

========================================================================

| MySQL系列文章 | 飞机票 |

| — | — |

| MySQL索引为何选择B+树 | 登机入口 |

| 深入分析MySQL索引 | 登机入口 |

| MySQL执行计划EXPLAIN详细说明和举例 | 登机入口 |

| MySQL中事务以及MVCC的实现原理 | 登机入口 |

| 深入分析MySQL中锁并详解幻读问题 | 登机入口 |

| select语句和update语句的执行流程 | 登机入口 |

| InnoDB引擎存储结构及Change Buffer和Double Writer分析 | 登机入口 |

| InnoDB中四种行格式分析及对varchar和char的限制 | 登机入口 |

前言

===============================================================

上一篇,我们介绍了MySQL为什么最终选择了B+树来作为索引存储的数据结构,想要详细了解,请点击这里。本文将为大家介绍一下B+树在MySQL中是如何落地的,本文主要会对比常用的两种存储引擎InnoDB和MyISAM来进行比较分析。

存储引擎介绍

===================================================================

MySQL的存储引擎是插件式管理的,我们可以自由选择,MySQL中常用的存储引擎有很多种,但是最常用的就是InnoDB和MyISAM,其他存储引擎不在本文内容之列,就不做过多介绍,主要简单介绍一下InnoDB和MyISAM存储引擎。

MyISAM引擎


MyISAM存储引擎不支持行级锁,只有表级锁;不支持事务,也不支持外键,主要面向OLAP应用,是MySQL数据库5.5.8之前版本默认的存储引擎,MyISAM适用于不需要关心事务,读多写少的场景。每张MyISAM表在磁盘上会创建三个文件:.frm,.MYD和.MYI,其中.frm文件为表结构,每个存储引擎都会有这个文件,是用来存储表结构的,.MYD文件用来存储数据,.MYI用来存储索引,也就是说MyISAM的数据和索引是分开存储的,这一点和InnoDB不一样。

在MySQL5.0之前,MyISAM默认支持的表只有4GB,如果要修改默认表大小的话,需要修改参数MAX_ROWS和AVG_ROW_LENGTH的大小,不过这一点在MySQL5.0之后得到了改善,默认大小为256TB,这个大小在绝大部分应用应该都是可以满足要求的。

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值