MySQL InnoDB 表的优势

时间:2024-04-16 08:37:49

Mysql中InnoDB引擎的主要优点有:

1 如果服务由于软件或者硬件原因突然崩溃,无论当时发生了什么,在重启MySQL服务之前你不需要做任何事情,InnoDB 崩溃恢复功能会自动完成服务崩溃前已经提交的事务和丢弃未提交的事务;

2 InnoDB引擎维在主内存中护了一个buffer pool,用来缓存表和索引,频繁访问的数据会直接在内存中操作。这个缓存适用许多信息并加快处理速度。在专用的数据库服务器上,建议分配80%的物理内存给buffer pool.

3 对外键的支持。

4 如果缓存中或者磁盘中的数据有损坏,MySQL的数据校验机制会在你使用它之前提醒你。

5 设计表时为每个表添加了主键,会自动优化涉及列的操作,换句话说就是基于主键的查询,排序,聚合性能会很高。

6 对insert, update, delete, 操作,会自动使用称为change buffering的优化(也即是内存中写),innodb 不仅仅允许对同一张表的并发读写,它还缓存了数据的变更来优化磁盘IO.

 7 性能上的优势不局限在长时间查询的大表,当从一个表中重复访问相当的行时,一个被称为“adaptive hash index”(哈希索引)会接管查询,数据就像从hash table 中取一样快。

8 支持表和索引的压缩。

9 对比使用共享表空间,truncate 一个独立表空间的表非常快,并且可以释放磁盘空间。

10 对于text和blob字段,DYNAMIC row format更加高效。

11 可以通过查询INFORMATION_SCHEMA 的表来监控存储引擎的内部工作。

12 可以通过查询 Performance Schema 的表来监控存储引擎的性能问题。

13 支持混合使用MySQL提供的其他存储引擎,即便是在同一个SQL语句中也可以使用多种存储引擎的表。

14 InnoDB的设计初衷是为了在处理大量数据时提供CPU效率和性能。

15 InnoDB可以存储大量的数据,即使操作系统现在单个文件大小为2G的系统上也如此。