15、存储引擎

存储引擎

数据库中的各表均被指定的存储引擎来处理
服务器可用的引擎依赖于以下因素

  • MySQL版本
  • 服务器在开发时如何被配置
  • 启动选项

可使用show engines\G查看当前放服务器有哪些引擎可用
在创建表时,可使用engine选项为表格指定存储引擎
create table 表名(...) engine=MyISAM;
若创建表格时未指定引擎,则使用ny.ini中配置的默认引擎
已有表格的存储引擎,可使用alter table emp2 engine=INNODB;来更改

1、MyISAM存储引擎

MyISAM是MySQL最常用的引擎
有以下特征

  • 使用三个文件表示每个表

    • 格式文件,存储表结构的定义(xxx.frm)
    • 数据文件,存储表行的内容(xxx.myd)
    • 索引文件,存储表的索引(xxx.myi)
  • 灵活的auto_increment字段处理

  • 可被转换为压缩、只读表来节省空间

MyISAM表适合于大量的数据读而少量数据更新的混合操作

2、InnoDB存储引擎

InnoDB存储引擎是MySQL的缺省引擎
有以下特征

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

如果查询中包含较多的数据更新操作,应使用InnoDB

3、MEMORY存储引擎

使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快
有以下特征

  • 在数据库目录内,每个表均以.frm格式的文件表示。
  • 表数据及索引被存储在内存中。
  • 表级锁机制。
  • 不能包含TEXT或BLOB字段。

MEMORY存储引擎以前被称为HEAP引擎
可使用MEMORY存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据

你可能感兴趣的:(15、存储引擎)