Skip to content

存储引擎和字符集

MySQL 默认存储引擎是 InnoDB 方式。

默认字符集是UTF-8

查看当前MySQL的存储引擎:

sql
show engines \G;

MyISAM存储引擎

  • MyISAM 存储引擎是 MySQL 最常用的引擎。
  • 它管理的表具有以下特征:
    • 使用三个文件表示每个表:
      • 格式文件— 存储表结构的定义(mytable.frm)
      • 数据文件— 存储表行的内容(mytable.MYD)
      • 索引文件— 存储表上索引(mytable.MYI)
    • 灵活的 AUTO_INCREMENT 字段处理
    • 可被转换为压缩、只读表来节省空间

InnoDB 存储引擎

  • InnoDB 存储引擎是MySQL的缺省引擎。
  • 它管理的表具有下列主要特征:
    • 每个InnoDB表在数据库目录中以 .frm 格式文件表示
    • InnoDB表空间tablespace被用于存储表的内容
    • 提供一组用来记录事务性活动的日志文件
    • 用 COMMIT(提交)、SAVEPOINT 及 ROLLBACK (回滚) 支持事务处理
    • 提供全 ACID 兼容
    • 在 MySQL 服务器崩溃后提供自动恢复
    • 多版本(MVCC)和行级锁定
    • 支持外键及引用的完整性,包括级联删除和更新
    • 无法压缩,无法只读

MEMORY 存储引擎

  • 使用 MEMORY 存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得 MEMORY 存储引擎非常快。
  • MEMORY 存储引擎管理的表具有下列特征:
    • 在数据库目录内,每个表均以 .frm 格式的文件表示。
    • 表数据及索引被存储在内存中。
    • 表级锁机制。
    • 不能包含 TEXT 或 BLOB 字段。
  • MEMORY 存储引擎以前被称为 HEAP 引擎。

选择合适的存储引擎

  • MyISAM 表最适合于大量的数据读而少量数据更新的混合操作。MyISAM 表的另一种适用情形是使用压缩的只读表。
  • 如果查询中包含较多的数据更新操作,应使用 InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制。
  • 可使用 MEMORY 存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。

本站除转载文章或特殊说明外,均遵循 CC BY-SA 4.0 协议发布。