作者:俊达
MySQL是一种开源的关系型数据库管理系统,与Oracle、SQL Server等数据库相比,有两个关键的特点:
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 | 支持事物。 |
支持MVCC多版本。并发读写性能高。 | |
MyISAM | 早期版本的默认存储引擎。 |
不支持事物。 | |
mysql实例或所在主机异常crash的情况下,可能会有数据丢失 | |
表容易crash,需要修复。大表修复耗时可能会很长。 | |
mysql的一些系统表是myisam存储引擎 | |
索引数据在mysql内部缓存,受参数key_buffer_size控制 | |
数据由OS文件系统的Page Cache缓存。 | |
MRG_MYISAM | 本身不存储数据,可以将多个MyISAM表模拟成一个单独的表使用。 |
方便历史数据清理归档。 | |
Memory | 数据存储在内存中,实例重启会清空数据。 |
mysql一些内部表使用了memory引擎。 | |
业务上要避免使用memor存储引擎。 | |
在主备复制架构下,主库或备库重启,容易引起主备复制中断。 | |
每个表可存储的数据受参数max_heap_table_size控制 | |
CSV | csv文件格式。 |
外部csv文件可以通过csv表挂到mysql中,用于数据分析。 | |
不支持索引。 | |
mysql slow log可以以csv格式存储,便于数据采集和分析。 | |
Blackhole | 不存储数据。 |
Archive | 归档存储。不支持索引。 |
PERFORMANCE_SCHEMA | mysql系统内部表。 |
Federated | 本身不存储数据。从其他数据库实例获取数据。类似oracle的db link。 |
绝大部分情况下,建议业务统一使用InnoDB存储引擎。mysql 5.7开始默认存储引擎就是innodb。
第三方存储引擎
在 MySQL 社区中有一些第三方存储引擎,它们在特定的使用场景下可能具有一些优势:
在实际的应用当中,应该基于需求,结合具体场景来选择最为合适的存储引擎,从而更好的优化数据库性能。值得注意的是,使用第三方存储引擎可能需要谨慎考虑,因为它们可能不同于 MySQL 默认的 InnoDB 存储引擎,可能需要特定的配置和调优。
更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw