什么是存储引擎
存储引擎就是存储数据、建立索引、更新、查询数据等技术的实现方式。
mysql体系结构
MySQL服务端的组成:
连接层:通过网络或本地socket和客户端通信,登录、授权认证等安全方案。
服务层:接收SQL语句,进行语句分析,下发指令让引擎层执行。
引擎层:存储引擎真正的负责了 MySQL 中数据的存储和提取,不同的需求可以使用不同的引擎。
存储层:文件系统,用于存储数据。并完成与存储引擎的交互。
IO操作:Input (数据存储到磁盘) Output (从磁盘读取数据)
常用引擎:
InnoDB(默认):支持事务(ACID)、支持行级锁、聚簇索引,适合高并发、高安全场景,金融、电商、订单系统。
MyIsAM:不支持事务、支持表级锁,适合对事务没要求、读多写少的场景。被MongoDB替代;
MEMORY:内存型存储引擎,支持哈希(hash)索引,优点:读写速度快;缺点:断电数据会丢失。适合缓存临时数据。被Redis替代了;
CSV: 文本存储,列与列默认用“逗号”分隔;
优点:可直接用文本编辑器查看或修改数据,兼容性强(适合与其他系统交换数据)。
缺点:性能差,不支持事务、索引、锁
适合:简单的数据存储例如:日志
引擎选择
InnoDB 引擎与 MyISAM 引擎的区别 ?
1.InnoDB 引擎, 支持事务, 而 MyISAM 不支持。
2.InnoDB 引擎, 支持行锁和表锁, 而 MyISAM 仅支持表锁, 不支持行锁。
3.InnoDB 引擎, 支持外键, 而 MyISAM 是不支持的。
区别及特点
指令语法
# 查询当前数据库支持的存储引擎 show engines; # 建表时指定引擎 CREATE TABLE user ( id INT, name VARCHAR(50) ) ENGINE = INNODB; # 某个表的存储引擎 SHOW TABLE STATUS LIKE '你的表名'; # 查看所有表 SHOW TABLE STATUS; 注:如果是 MySQL 5.5 之前,默认引擎可能是 MyISAM;之后默认是 InnoDB。
原创
MySQL存储引擎
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法