Press "Enter" to skip to content

MySQL数据库引擎

存储引擎就是指表的类型。

数据库的存储引擎决定了表在计算机中的存储方式。
存储引擎的概念是MySQL的特点,用户可以根据自己的需求选择不同的存储方式、是否进行事务处理。
MySQL的存储引擎查询方式:

mysql>show engines\G
*************************** 1. row ***************************
      Engine: InnoDB    //引擎名称
     Support: DEFAULT   //MySQL是否支持,InnoDB为默认类型
     Comment: Supports transactions, row-level locking, and foreign keys//说明
Transactions: YES   //是否支持事务类型
          XA: YES   //是否支持分布式交易处理的XA规范
  Savepoints: YES   //是否支持保存点以便回滚
*************************** 2. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 8. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 9. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
9 rows in set (0.00 sec)

InnoDB

InnoDB是第一个提供外键约束的MySQL表引擎。支持自动增长类auto_increment。
创建的表结构存储在*.frm文件中,数据和索引存储在innodb_data_home_dir和innodb_date_file_path定义的表空间中。
InnoDB的优点是有良好的事务管理、崩溃修复和并发控制.
* 索引组织表
* 支持事务、行级锁
* 数据库缓存
* 日志持久化
* 稳定性好、性能好
缺点是读写效率差、占用空间大。

MyISAM

MyISAM存储引擎的表存储为3个文件。文件名字与表名相同。
扩展名包括frm、MYD和MYI。其中,frm为表的结构,MYD存储数据,MYI存储索引。
支持静态型、动态型和压缩型存储格式。
占用空间小、处理速度快。
* 堆表
* 不支持事务、不支持并发
* 只维护索引缓冲池,表数据缓存交由操作系统负责
* 锁粒度大
* 数据文件可以直接拷贝

MEMORY引擎

使用存储在内存中的内容来创建表,所有数据放在内存中。
每个memory引擎表对应一个磁盘文件,类型为frm,该表中只有表的结构。
默认使用hash索引。
处理速度非常快,但数据易丢失,生命周期短。