MySQL学习笔记-索引_3月18日2
1、什么是索引?
根据添加的索引列排序,查询的时候更快。
2、索引的优缺点:?
查询效率高,但是DML的时候维护成本也高(查询快,插入慢)。
3、mysql一张表最大多少条记录需要分表?
DDL的时候要锁,SSD的盘能支持单表1亿。(SAS盘iops 1000)
4、B+树 、page search、指针、叶子节点、page directory 、二分法找到记录。
5、disk 512字节、filesystem 4K、db 16K
6、页满的时候是如何split的?啥时候2层被split成3层?
7、online-DDL 、pt-online-schema-change的原理?解决主从延时问题,拷贝表耗时间。
general log查看 触发器 replace ingnor ,
触发器是触发的增量数据,全量数据insert into select 分批插入临时表。
8、什么是索引组织表IOT?
非叶子节点存放key+指针(6字节),聚集索引叶子节点存放数据,辅助索引的叶子节点存放(key,主键)。不加索引的表默认加主键的rowid.
9、page 16K, pk 8字节,行数据300字节,B+树的高度1、2、3、4的时候存放大概多少数据?
10、HDD IOPS 100 ,3次IO 多少秒? B+数3层,查询需要3次io,3/100=0.03秒。
11、根页是在内存的,不需要io。
12、回表?B+树3层,6次IO.
13、MyISAM是堆表,什么是堆表(heap table)?
数据是无序的,主键索引的叶子节点存放的指针,指向数据的。索引组织表的的叶子节点数据也是有序的。
14、堆表、索引组织表的优缺点?
堆表插入快?除非没有索引
堆表读快?聚集索引一样,回表相比的话,堆表key快。
堆表最大的缺点:行数据变大,物理地址变化,聚集索引的叶子节点和辅助索引的叶子节点也要更新。填充因子:
堆表主键范围查询慢。
15、怎么看B+树的高度?一般不会有这样的需求。
16、扇出表示有多少个指针。
17、<=> 存在null的表
select * from t where a = null;
select * from t where a = 1;
select * from t where a <=> 1;
18、复合索引是否创建的高效?
select * from t where a= ,b =, order by c
select * from t where a=,b=,c=;
(a,b,c) (b,a,c)
将选择度比较高的列放到前面。