mysql存储引擎类型及存储引擎的选择

来源:互联网 发布:mac set android ndk 编辑:程序博客网 时间:2024/05/05 03:11

 (一)存储引擎查看

     mysql支持多种存储引擎,在处理不同类型的应用时,可以通过选择使用不同的存储引
擎提高应用的效率,或者提供灵活的存储。
mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、
ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引
擎都是非事务安全表。

 

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

最常使用的2 种存储引擎:
     1. Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默
认使用Myisam。
   每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm
(存储表定义)、.MYD (MYData,存储数据)、.MYI (MYIndex,存储索引)。数据文件和
索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
   2. InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam
的存储引擎,InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索
引。

    (1)查看默认的存储引擎:

 

mysql> show variables like '%storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
| storage_engine         | InnoDB |
+------------------------+--------+
2 rows in set (0.01 sec)

mysql>

 

(二)各类 存储引擎的选择:

选择标准: 根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际情况选择
多种存储引擎进行组合.
下面是常用存储引擎的适用环境:
1. MyISAM:默认的MySQL 插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常
使用的存储引擎之一
2. InnoDB:用于事务处理应用程序,具有众多特性,包括ACID 事务支持。
3. Memory:将所有数据保存在RAM 中,在需要快速查找引用和其他类似数据的环境下,可
提供极快的访问。
4. Merge:允许MySQL DBA 或开发人员将一系列等同的MyISAM 表以逻辑方式组合在一起,
并作为1 个对象引用它们。对于诸如数据仓储等VLDB 环境十分适合。