MySQL运维实战(4.1) MySQL表存储引擎
MySQL表的特点
和其他数据库如Oracle、SQL Server相比,mysql有一些特点:
MySQL使用插件式存储引擎,同一个数据库中的表可以使用不同的存储引擎。存储引擎决定了表的物理存储格式。表可以在不同的存储引擎之间转换。
参数sql_mode。sql_mode会影响sql的执行。同一个sql,在不同的sql_mode下可能会有差异。
表的存储引擎
MySQL支持插件式存储引擎。系统默认支持多种存储引擎。同时提供了接口,支持第三方开发存储引擎,以满足特定的数据存储需求。
oracle mysql官方存储引擎
使用show storage engines命令或查询information_schema.engines表查看当前实例支持的存储引擎。
mysql> select engine, support, transactions, xa, savepoints from information_schema.engines; +--------------------+---------+--------------+------+------------+ | engine | support | transactions | xa | savepoints | +--------------------+---------+--------------+------+------------+ | InnoDB | DEFAULT | YES | YES | YES | | MRG_MYISAM | YES | NO | NO | NO | | MEMORY | YES | NO | NO | NO | | BLACKHOLE | YES | NO | NO | NO | | MyISAM | YES | NO | NO | NO | | CSV | YES | NO | NO | NO | | ARCHIVE | YES | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | NO | NO | NO | | FEDERATED | NO | NULL | NULL | NULL |
各存储引擎特点
存储引擎 | 特点 |
InnoDB |
|
MyISAM | 早期版本的默认存储引擎。
|
MRG_MYISAM | 本身不存储数据,可以将多个MyISAM表模拟成一个单独的表使用。 方便历史数据清理归档。 |
Memory |
|
CSV |
|
Blackhole | 不存储数据。 |
Archive | 归档存储。不支持索引。 |
PERFORMANCE_SCHEMA | mysql系统内部表。 |
Federated | 本身不存储数据。从其他数据库实例获取数据。类似oracle的db link。 |
绝大部分情况下,建议业务统一使用InnoDB存储引擎。mysql 5.7开始默认存储引擎就是innodb。
第三方存储引擎
社区的一些存储引擎:
TokuDB,数据压缩比高。
LevelDB存储引擎,基于LSM Tree(log structured merge tree)的存储引擎。
MyRocks,RocksDB存储引擎,基于LSM Tree(log structured merge tree)。