存储引擎:
Mysql 给用户提供了许多不同的存储引擎, DBMS 使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。
show engines; 查看存储引擎
show variables like 'storage_engine'; 查看默认使用的引擎
常用的引擎
1、 InnoDB(支持事务)
事务型数据库的首选引擎,Mysql5.5之后默认使用InnoDB存储引擎,支持事务,支持行锁定和外键。
特性:
-
为Mysql 提供了提交、回滚、崩溃恢复能力,可实现并发控制。遵循四个特性:原子性、一致性、隔离性、持久性。
-
对InnoDB表,自增长列必须是索引。若为组合索引,也必须是组合索引的第一列。
-
Mysql 支持外键的存储引擎只有InnoDB ,在创建外键时,父表必须有对应的索引,子表在创建外键时也会自动创建对应的索引。
2、MyISAM存储引擎
基于ISAM存储引擎,并对其进行扩展。常用在web、数据存储和其他应用环境下。MyISAM拥有较高的插入、查询速度,表锁级别,只缓存索引。但不支持事务,不支持外键。是Mysql5.5之前默认的存储引擎。
有三个文件 :
-
.frm 定义数据表结构
-
MYD 存储数据
-
MYI 存储索引
特性:被大文件系统和操作系统支持。
每个MyISAM 表的最大索引数是64,这可通过编译来改变,每个索引最大的列数是16。
数据类型: blob text 可建立索引
3、 MEMORY
放在内存(缓存)中 能够快速的访问 但数据崩溃时极易损失
适合存放临时数据、数据量不大、数据不要求有较高的安全性的数据。
每个表支持多达32个索引,可在一个MEMORY表中有非唯一键。
4、 ARCHIVE:
只有插入和查询操作,支持高并发插入操作,但不是事务安全的。
使用合适的存储引擎,可以提高整个数据库的性能
InnoDB | MyISAM | MEMORY | ARCHIVE | |
---|---|---|---|---|
外键 | Y | |||
存储限制 | 64TB | 256TB | RAM | None |
支持事务 | Y | |||
全文索引 | Y | |||
数索引 | Y | Y | Y | – |
数据缓存 | Y | – | – | – |