MySQL 数据类型
MySQL 创建数据表 

MySQL 存储引擎

MySQL 存储引擎是 MySQL 数据库管理系统中用于表数据存储和检索的底层软件组件。不同的存储引擎提供了不同的存储机制、索引特性、锁定水平和事务支持。可以使用“SHOW ENGINES”命令查看当前版本支持哪些存储引擎。

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | 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         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+


下面分别介绍一些常见的 MySQL 存储引擎及其特点:

1、InnoDB:

  • 默认的存储引擎(从 MySQL 5.5 开始)。

  • 支持事务、行级锁定和外键约束。

  • 提供了提交、回滚和崩溃恢复能力的事务安全特性。

  • 适合需要事务支持和高并发读写的应用。


2、MyISAM

  • 在 MySQL 5.5 之前是默认的存储引擎。

  • 不支持事务,但提供了全文索引。

  • 使用表级锁定,适合读密集型的应用。

  • 适合不需要事务支持的应用。


3、MEMORY:

  • 将所有数据存储在内存中,访问速度快,但数据在数据库服务器重启后会丢失。

  • 适合临时表和快速读取的场景。


4、Archive:

  • 用于存储大量未修改的数据,如日志信息。

  • 支持高压缩比,节省存储空间。

  • 只支持 INSERT 和 SELECT 操作。


5、Federated:

  • 允许访问远程 MySQL 服务器上的表。

  • 数据实际上存储在远程服务器上。


6、CSV:

  • 将数据存储为逗号分隔值的文本文件。

  • 适合数据导入导出和交换。


7、MRG_MYISAM:

  • 允许将多个表组合成一个逻辑上的单一表,而这个逻辑表可以跨多个物理表。


8、Performance Schema:

  • 用于监控数据库服务器的性能。


选择存储引擎的考虑因素

  • 事务支持需求: 如果应用需要事务支持(如保证数据的一致性、完整性),则应选择支持事务的存储引擎,如 InnoDB。

  • 并发读写能力: 如果应用需要高并发读写能力和行级锁定支持,应选择适合的存储引擎,如 InnoDB。

  • 数据完整性: 如果应用需要外键约束来保证数据完整性,则需要选择支持外键约束的存储引擎,如 InnoDB。

  • 性能需求: 根据应用的读写比例、数据量大小等因素选择适合的存储引擎以优化性能。

  • 特定功能需求: 如果需要特定的功能,如全文索引、内存表格等,选择支持这些功能的存储引擎。