mysql engine存储引擎

来源:互联网 发布:相片合成软件下载 编辑:程序博客网 时间:2024/05/17 02:51


一、存储引擎

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语句

存储大量独立的、作为历史记录的数据,如日志记录和聚合分析




1 0