MySQL存储引擎是表的存储引擎
1.Myisam存储引擎
1.1.Myisam存储引擎底层表的存储结构如下
- user.frm 文件存储表的表结构
- user.MYD 文件存储表的数据行记录
- user.MYI 文件存储表的索引字段
**
1.2 Myisam底层SQL查询过程**
- 假如查找col1=49,先判断col1是否是索引字段,如果是索引字段,
就在MYI文件查找磁盘文件地址针,根据B+树的特点查找磁盘文件地址针,
并一次性定位到MYD文件的行元素
2.InnoDB存储引擎
*
2.1.InnoDB存储引擎底层表的存储结构如下*
- user.frm 文件存储表的表结构
- user.ibd 文件存储表的数据和索引
.聚集索引:索引跟数据放在一起, InnoDB主键索引就是一个聚集索引
自增主键与UUID的对比
- 自增ID是在设计表时将id字段的值设置为自增的形式,这样当插入一行数据时无需指定id会自动根据前一字段的ID值+1进行填充。在MySQL数据库中,可通过sql语句AUTO_INCREMENT来对特定的字段启用自增赋值, 优点是数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利,数字型,占用空间小,易排序,在程序中传递也方便;
- UUID含义是通用唯一识别码 (Universally Unique Identifier),指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。换句话说能够在一定的范围内保证主键id的唯一性。缺点是uuid之间比较大小相对数字慢不少, 影响查询速度。uuid占空间大, 如果你建的索引越多, 影响越严重