MySQL

Posted on Tue, Mar 26, 2024 learning

在云数据库工作了1年多了,形形色色的数据库都用过,随便记录一下相关的知识吧

MySQL的经典两个存储引擎—Innodb和MylSam(几乎没人用了,innodb比MylSAM性能优越太多了)

mylsam — 非聚集索引(非聚簇索引)

innodb — 聚集索引(聚簇索引)

非聚集索引:索引文件和数据文件分离 .myi 和 .myd 叶子节点存数据位置

聚集索引:叶子节点包含完整的数据记录 可进一步分为 一级索引、二级索引

一级索引:innodb的主键索引

二级索引:innodb的非主键索引

联合索引:一个索引里包含多个列

B+ Tree vs Hash

很多时候 hash效率更高,只有一次计算,即可定位位置(冲突例外)在 = IN 场景下,表现优秀。

hash 在范围查找上 > < 过于不友好,实际上很少使用,相当于全表扫描

hash 存在冲突问题,后面再详细说明

innodb 推荐 建表时使用 整型(int)、自增的主键

整型: 整型比大小快(字符串要逐位比较)、占用空间小(相对于UUID)

自增: 新增元素时,在叶子节点上自然往后插入,减少叶子节点分裂导致的数据存储空间改变的转移复制开销。

联合索引: