面试题——数据库篇(存储引擎)

MyISAM 索引文件和

  • 存储引擎是属于表的
  • 数据库的数据存储在 安装位置/data
  • MYISAN 引擎存储文件,后缀是frm(存储的是表的结构),MYD(数据行的数据)MYI(存储的是索引)
  • 索引B+TREE 结构,叶子结点存储的是数据行记录的磁盘地址(查找的过程跨两个文件,MYI—>MYD
  • innodb存储引擎存储的文件。后缀是frm和ibd ibd 存储的是 索引文件和数据文件的合并
  • INNODB 叶子节点存储的是数据,不是磁盘地址, 表数据本身就是按B+TREE组织的一个索引结构文件
  • 聚集索引–叶节点包含了完整的数据记录。MYISAM 是非聚集索引,INNODB是聚集索引
  • 为什么INNODB表必须要建主键,最好是整型自增的?
    • 因为INNODB表数据文件本身就是按B+TREE组织的一个索引文件
    • 如果不见主键,会自动选择一个不重复的列作为主键,都没有,会在后台生成一个唯一的列(帮你维护B+tree的数据结构)
  • INNODB为什么要用整型自增主键?
    • 索引查找时比较大小,整型要快于字符串(UUID),整型的存储空间更小,对磁盘的使用越少越节约资源,为什么选用自增的呢?B+TREE 和B 树的一个不同是,叶子结点之间存在指针。
  • HASH索引的等值查询也很快,为什么大多数用B+TREE索引啊?
    • 范围查找,B+TREE可以很好的支持范围查找。他的叶子节点是按照顺序,从左到右由小到大排列的,并且存在指针。
  • 联合索引的底层存储结构长什么样子呢?
    • 遵守最左前缀法则,指的是索引要从左边开始,explain 这种工具,去看一下sql是否走索引,
  • 如果一张表有多个索引,是不是有多个B+TREE?
    • INNODB 只有主键所以你叶子节点才会存储所有的数据, 非主键索引存储的是主键。(为了一致性和节省存储空间)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值