一次面试引发的感悟

  so sad啊今天,快手的面试一轮就凉了,问了spring的DispacherServlet原理,spring的对象管理方式,这些基础的spring知识,没有好好的复习而且在用的过程中只是会用,包括spring的生命周期都不知道,这是编码久了不动自己的脑子长期下来,没有主动自我的学习的能力迟早被淘汰,新东方和快手都问了索引的基本原理,之前准备mysql培训就是一知半解的还没理解透,这又是我的一个问题,学的不扎实,不做笔记过一阵就忘了。没有刷编程题,letcode、剑指offer的问题,最简单的字符串调换位置都不会。
  唉算了,一切重新再来吧,先整理一下innodb的索引原理相关知识:
  1.  B树与B+树区别
      B树每个节点都存放主键和磁盘文件地址的指针,B+树所有元素都在叶子节点,叶子节点不存放地址指针,直接存放其他列数据。
  2.  innodb页大小默认是16Kb,data元素都存放再叶子节点上,非叶子节点可以存放更多的元素,例如biginit占据8个字节,64位,而B+树的非叶子节点除了存放id还存放下一层元素地址6个字节,一个2千万数据大约多少层2000 0000/16/16/16...
  3.  MyISAM结构的文件格式有frm、myd、myi
      frm 表结构信息 myd数据 myi表索引
      例如在MyISAM中select * from student where id =31;表where条件有索引,去MYI文件中定位到位置,把索引对应的value(磁盘地址),快速到myd中找到
   innodb结构的文件格式有 frm、ibd
   frm表结构信息 ibd文件数据
   ibd不存在索引所在的数据地址,而是存放其他的列的数据 
  4.  聚簇索引
 叶子节点包含所有的记录(主键索引) 非聚簇索引 数据和索引不在一起
  5. INNODB建表不设置主键时,底层会找到不重复数据当主键,如果找不到的话,增加一个列维护,我们看不到。MYISA,一级、二级索引差不多;INNODB一级、二级索引不一样,二级索引是不存其他列数据而是存主键
  6.  如果使用uuid既不是自增也不是整形的,存在大量比较大小、占用磁盘空间可以使用分库分表、雪花算法
  7. 为什么二级索引不是聚簇索引
     INNODB自己拓展一个二级索引,将主键值加到索引列后面,把拓展组合列索引例如index:name 就变成(name,id),优化器就会根据拓展后的二级索引列来决定使用哪个索引列
  8  hash索引把键和存放地址进行hash映射,hash查找得到一个值,与数据存放地址关联起来,但是hash索引弊端范围查询不行。
  9. 叶子节点从小到大,依次递增,叶子节点维护指针,如果不是自增的话,会有分裂,不平衡
 10.  最左匹配原则,必须按照顺序不能跳
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值