MySQL索引小记

先说一下存储引擎

MySQL5.1.X之前默认是MyISAM,从MySQL5.5.X开始,默认存储引擎为InnoDB Plugin

MyISAM

结构

每个MyISAM在磁盘上会将数据存储成三个文件,分别是:.frm文件存储表定义,.myd文件是数据文件,.myi文件是索引文件

特点

表级索、不支持事务支持全文索引

InnoDB

结构

.frm文件存储表定义,.idb文件存储数据和索引文件

特点

行级索、支持事务、不支持全文索引

如何选择

假如一个商城系统,在设计订单表和商品表时,如何选择引擎

订单表:一般后台操作,对事务要求高,查询少,用InnoDB

商品表:一般前台展示,查询多,用MyISAM

索引

常用索引类型一般为唯一性索引和普通索引,而索引方法有BTREE和HASH,常用BTREE,而不同引擎下对应的结构不同,那么其对应的索引也就不相同了

MyISAM下的索引

mysql_myisam01.png

MyISAM引擎使用B+Tree作为索引结构,叶子节点的data域存放的是数据记录的地址,Col1为主键,上图是主索引的原理图

mysql_myisam02.png

Col2建立的一个辅助索引,上图是基索引的原理图
MyISAM的这种索引方式叫做非聚集索引,即索引和数据分开放

InnoDB下的索引

mysql_innodb01.png

InnoDB也使用B+Tree,但实现方式与MyISAM不同,InnoDB的数据文件本身就是索引文件,上图是Col1作为主键的主索引的原理图

mysql_innodb02.png

InnoDB的辅助索引data域存储相应记录主键的值而不是地址,即InnoDB的所有辅助索引都引用主键作为data域,上图为col3的辅助索引
像InnoDB这样数据和索引都放在同一文件叫做聚集索引,这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录

关于聚集索引

  1. 默认拿主键作为聚集索引
  2. 如果没有主键,会去取非空唯一的索引作为聚集索引
  3. 如果上面都没有,Innodb自己去维护一个唯一索引

总结

优缺点

优点:
提高检索速度,降低IO、CPU消耗
缺点:
占空间,索引字段更新会有性能损耗

用索引

  1. 单表单库,出现查询性能瓶颈,大概在500万
  1. 排序字段
  1. 分组字段

不用索引

  1. 频繁更新的字段不适合建立索引
  2. where没有使用的字段
  3. 表的数据很少
  4. 数据重复且分布均衡的字段,如性别字段状态字段
  5. 参与列计算的时候不适合建立索引

优化思路

  1. 建索引
  2. sql解析
  3. 缓存
  4. 拆分(分库,分表(垂直,水平))
  5. scale out 水平扩展 增加机器 集群负载 (建议)
    scale up 提高服务器性能,增加CPU,增加磁盘,SSD (很有钱的基础上面)

扩展阅读

  1. MySQL索引背后的数据结构及算法原理
  2. B+/-Tree原理及mysql的索引分析
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容