数据库存储引擎是数据库管理系统用于从数据库进行增删改查数据的底层软件组织。不同存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。
在MySQL 5.5.5以后,InnoDB作为其默认存储引擎。支持事务安全表(ACID)、支持行锁定和外键。
查看存储引擎
MySQL提供了多种不同的存储引擎,具体可通过如下命令进行查看:
代码语言:javascript复制SHOW ENGINES;Copy
结果:
代码语言:javascript复制mysql> SHOW ENGINES;
-------------------- --------- ---------------------------------------------------------------- -------------- ------ ------------
| Engine | Support | Comment | Transactions | XA | Savepoints |
-------------------- --------- ---------------------------------------------------------------- -------------- ------ ------------
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
-------------------- --------- ---------------------------------------------------------------- -------------- ------ ------------ Copy
Support列表示某种引擎是否能用。
存储引擎的选择
不同存储引擎有不同的特点,以适应不同的需求。具体比较如下图所示:
功能 | MyISAM | MEMORY | InnoDB | Archive |
---|---|---|---|---|
存储限制 | 256TB | RAM | 64TB | None |
支持事务 | N | N | Y | N |
支持全文索引 | Y | N | N | N |
支持树索引 | Y | Y | Y | N |
支持哈希索引 | N | Y | N | N |
支持数据缓存 | N | N | Y | N |
支持外键 | N | N | Y | N |
InnoDB在提供提交、回滚和恢复的事务安全(ACID兼容)以及实现并发控制方面有良好的表现。
MyISAM主要用于数据表的插入、查询。
MEMORY引擎则适用于临时存放数据、数据量不大的情况。
Archive支持高并发的插入,但是本身并不是事务安全的。适用于存储归档数据。
温馨提示 一个数据库中的多个表可以使用不同的引擎以满足各种性能和实际需求,可灵活选择。