一、存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
二、查看所用存储引擎、是否支持
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | 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 |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
三、使用存储引擎engine
create table table_name(column type) engine = Innodb;
alter table table_name engine = MyISAM;
四、引擎说明及区别
ISAM:读取数据速度很快,而且不占用大量的内存和存储资源;但是ISAM不支持事务处理、不支持外来键、不能够容错、也不支持索引。
如果硬盘崩溃,数据文件也无法恢复,因此若把ISAM用在关键任务上,就必须经常备份实时数据。
MyISAM适合:MyISAM强调了快速读取操作。(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。
静态MyISAM:如果数据库中的各个数据列的长度都是预先固定好的,服务器将自动选择这种表类型。(1)表中每一条记录所占用的空间都是一样的,所以存取和更新的效率非常高。(2)当数据受损时,回复工作也比较容易做。
动态MyISAM:如果数据表中出现varchar、xxxtex或xxxBLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储空间比较小。
压缩MyISAM:这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。
memory(heap)适合:HEAP允许只驻留在内存里的临时表格。因为数据仅存储在内存中,因此数据存取速度比ISAM和MYISAM都快。(记住,用完表格之后就删除表格)
InnoDB适合:具有提交、回滚和崩溃恢复能力的失误安全存储引擎。(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的。
archive适合:日志记录和聚合分析方面。archive不支持索引,仅支持insert和select语句。
存储引擎 | 优势 | 劣势 | 适用 |
ISAM | 快速读取,不占用大量的内存和存储资源 | 不支持事务、外来键、索引 | |
MYIAM | 快速读取 | 不支持事务 | 做很多count的计算; 插入不频繁,查询频繁; 不需要事务 |
HEAP | 有极高的插入、更新和查询效率,默认使用哈希索引 | 只主流在内存里的临时表格, 保存的数据具有不稳定性 | 用于临时表 |
INNODB | 有提交、回滚和崩溃恢复能力的失误安全存储引擎 | 读取速度比ISAM慢 | 表更新和查询都相当频繁,且表锁定的计划比较大的情况 |
ARCHIVE | 有高效的插入速度 | 不支持索引,仅支持insert和select语句 | 存储大量独立的、作为历史记录的数据,如日志记录和聚合分析 |