数据结构
- InnoDB 聚簇索引 数据和索引B+树存储在一起
InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形
- MyISM 非聚簇索引 主键B+树在叶子节点存储指向真正数据行的指针,而非主键
- 辅助索引B+树中检索Name,到达其叶子节点获取对应的主键
- 使用主键在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据
储存主键ID而不直接存储地址值,这样避免行移动或者数据页分裂时辅助索引的维护工作。
Page结构 InnoDB存储的最基本构件(最小单位)
InnoDB最大64TB的存储容量(16Kib * 2^32 = 64Tib)
题外话
如果数据不更改,使用MyISM性能也不错,但是数据一点不变,为什么不用redis呢?
MYSQL8 各方面超越5.7 如果新选择不要考虑5.7
窗口函数
多线程各方面性能
降序索引 DESC
主键不要使用uuid之类的,索引树的特性而要分裂、调整节点,十分低效。
辅助索引占用更多的空间,因为辅助索引保存主键的值。
自适应哈希索引(Adaptive Hash Index, AHI) 有一些触发条件创建