InnoDB 跟 MyISAM的区别
InnoDB 和 MyISAM的区别
一、InnoDB 和 MyISAM的区别
1. MyISAM使用前缀压缩技术使得索引更小,InnoDB则按照原数据格式进行存储。
2. MyISAM索引通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行。InnoDB在移动时无须更新二级索引中的这个“指针”,但是使用主键值作为指针会让二级索引占用更多空间。
3. MyISAM主键索引是B-Tree + 唯一非空索引。InnoDB主键索引是B-Tree + 聚簇索引。聚簇索引:主键为索引,叶子节点包含索引和行数据。
4. MyISAM对整张表加锁,InnoDB有行级锁。
二、索引

索引是在存储引擎层而不是服务器层实现的。
聚簇索引:并不是一种单独的索引类型,而是一种数据存储方式。叶子页包含索引和行数据。InnoDB通过主键聚集数据,如果没有主键,InnoDB会选择一个唯一的非空索引替代。

自增主键ID顺序插入性能高,UUID主键ID随机I/O,频繁页分裂操作,数据碎片化。UUID适用于分布式数据库,防止自增主键主键冲突。
一、InnoDB 和 MyISAM的区别
1. MyISAM使用前缀压缩技术使得索引更小,InnoDB则按照原数据格式进行存储。
2. MyISAM索引通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行。InnoDB在移动时无须更新二级索引中的这个“指针”,但是使用主键值作为指针会让二级索引占用更多空间。
3. MyISAM主键索引是B-Tree + 唯一非空索引。InnoDB主键索引是B-Tree + 聚簇索引。聚簇索引:主键为索引,叶子节点包含索引和行数据。
4. MyISAM对整张表加锁,InnoDB有行级锁。
二、索引
索引是在存储引擎层而不是服务器层实现的。
聚簇索引:并不是一种单独的索引类型,而是一种数据存储方式。叶子页包含索引和行数据。InnoDB通过主键聚集数据,如果没有主键,InnoDB会选择一个唯一的非空索引替代。
自增主键ID顺序插入性能高,UUID主键ID随机I/O,频繁页分裂操作,数据碎片化。UUID适用于分布式数据库,防止自增主键主键冲突。