数据库是如何通过索引定位数据,索引的原理讲解

前言

我们之前讲了MySQL索引的底层数据结构,以及索引的失效原理等知识点。那么索引在硬盘上到底是怎么存储的呢?怎么通过索引定位查询出一条真实的数据呢?

MySQL两大引擎MyIsamInnoDB他们的索引又有哪些不同点呢?

今天我们就来给大家揭晓一下

MyIsam 和 InnoDB常见区别

事务方面

InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一。

外键方面

InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败。

索引层面

InnoDB 是聚集(聚簇)索引,MyISAM 是非聚集(非聚簇)索引。后面会重点讲解这两种索引的区别。

MyISAM支持 FULLTEXT类型的全文索引, InnoDB不支持FULLTEXT类型的全文索引,但是InnoDB可以使用sphinx插件支持全文索引,并且效果更好。

锁粒度方面

InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。

一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。

这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一。

硬盘存储结构

MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。

  • .frm文件存储表的定义

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值