PERFORMANCE_SCHEMA引擎: “服务器监控”引擎
SHOW ENGINES 语句查看可用的MySQL存储引擎.
引擎 | 支持 | 描述 | 事务 | XA | Savepoints |
MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
CSV | YES | CSV storage engine | NO | NO | NO |
InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
MyISAM | YES | MyISAM storage engine | NO | NO | NO |
PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
ARCHIVE | YES | Archive storage engine | NO | NO | NO |
MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
FEDERATED | NO | Federated MySQL storage engine |
自5.5版本(2010年7月) InnoDB 是默认的存储引擎. (之前是MyISAM).
InnoDB: 高可靠高性能的通用引擎
- MVCC
- 遵循ACID模型, 支持事务
- 行锁
- 外键
- 具有崩溃恢复能力
MyISAM: 适合于读写密集型引擎
- 没有MVCC,批量插入效率更高
- 表锁, 读取速度更快
- 没有外键
- 不支持事务
- 适用只读查询操作较多的场景、需要快速查询和报告的数据仓库和报表场景
在MySQL 8.0之前,MyISAM的批量插入效率明显优于InnoDB, 因为MyISAM没有MVCC,也不保证持久性。
使用MySQL 8.0,InnoDB可以选择禁用持久性,禁用redo-logs,提高批量插入效率。
MEMORY: 内存引擎
- 快速访问和低延迟
- 表锁
- 不支持事务
- 易丢失
顾名思义内容储存在内存里, 由于数据在内存中,具有快速访问的优势,易丢失的劣势,所以一般做临时表、缓存表使用.
CSV: 纯文本引擎
- 轻量的数据存储(类似sqllite)
- 逗号分隔值格式将数据存储在文本文件中,文件的名称为:表名.CSV。
- 可以通过Excel等读写。
ARCHIVE: 存档引擎
- Zlib无损数据压缩存储,用很小的空间存大量数据
- 行锁
- 不支持delete或update
BLACKHOLE: “黑洞”引擎
- 接受数据,但将其扔掉,不存储数据。检索总是返回一个空结果
检察sql语法正确性?, 日志记录插入操作? 我不知道有什么用….
MERGE: MyISAM聚合引擎
- 可以聚合表的结构相同的 MyISAM表、作为一个表使用,方便操作
- 可以按某个属性将一个大表拆分成多个小的只读表, 小表查询速度快、便于维护
FEDERATED: “远程”引擎
- 本地只存表机构不存数据、访问时从远程表获取数据
- 远程的数据库必须是MySQL服务器
- 不支持事务
- 不支持ALTER TABLE, DROP TABLE只会丢弃本地表,而非远程表。
- 无法感知远程表变化
- 批量插入将分批发送远程表从而提高性能
从远程MySQL数据库访问数据,而无需使用复制或集群技术。查询本地FEDERATED表会自动从远程(联合)表中提取数据。本地表上没有存储任何数据。
PERFORMANCE_SCHEMA引擎: “服务器监控”引擎
- 使用服务器源代码中的“仪器点”收集事件数据。
- 收集的事件存储在performance_schema数据库的表中。可以使用SELECT语句查询这些表
- 使用内存表。内容从服务器启动开始填充,并在服务器关闭时丢弃。