简介
- 存储引擎是数据库存储数据,建立索引,更新/查询数据等技术的实现方式。
- 存储引擎是基于数据库表的,而不是基于库的。
- MySQL 5.5之后 默认存储引擎是 InnoDB
存储引擎有哪些?
- MEMORY:存储在内存,用于做临时表
- MyISAM:
- InnoDB (重要) 默认 支持事务 外键 行级锁
InnoDB
兼顾高可靠和高性能的通用存储引擎 5.5之后作为MySQL默认的存储引擎
ACID: 原子性 一致性 隔离性 持久性
特点:
- DML操作遵循ACID模型, 支持事务
- 行级锁,提高并发访问性能
- 支持 外键 FOREIGH KEY 约束,保证数据的完整性和正确性
MyISAM
早期MYSQL默认的存储引擎
特点:
- 不支持事务,不支持外键
- 支持表锁,不支持行锁
- 访问速度快
Memory
数据存储在内存中的 ,由于受到硬件问题,断电等影响,只能将这些表作为临时表或缓存使用
特点:
- 内存存放
- hash索引(默认)
InnoDB和MyISAM的区别
存储引擎的选择
合适的业务选择合适的引擎就可以了
- 对事务的完整性和在并发条件下对数据的一致性有要求比较高,可以选择InnoDB引擎
- MyISAM引擎适合读写为主,只有少量的更新和删除操作,对事务的完整性,并发性要求不是很高, 比如 日志,电商项目中的足迹评论等相关数据。不是业务系统的核心数据 哪怕是丢了一两条也不会影响
- Memory:保存在内存,访问速度快 用作缓存,表的大小是有限制的,而且无法保障数据的安全性
绝大多数情况下使用InnoDB 默认的, MongoDB 替代MyISAM 方案
MEMORY被Redis方案代替
总结:
-
MYSQL体系结构
- 连接层 :授权校验
- 服务层 :SQL接口 解析 优化
- 引擎层:索引 不同引擎索引不同
- 存储层:具体数据的存储
-
存储引擎简介
数据库中存储获取,建立索引的,更新查询的方式
-
存储引擎的特点
InnoDB: 事务 外键 行级锁
MyISAM: 不支持事务 不支持外键 表锁
-
存储引擎的应用:
根据不同的业务需求选择不同的引擎
InnoDB :存储系统中对于业务,数据完整性较高的核心数据
MyISAM:存储业务系统中的非核心数据 比如评论 ,日志等
绝大多数场景都是选择InnoDB 都要保证事务