MySQL存储引擎InnoDB 和MyISAM的区别和使用

简介

  • 存储引擎是数据库存储数据,建立索引,更新/查询数据等技术的实现方式。
  • 存储引擎是基于数据库表的,而不是基于库的。
  • MySQL 5.5之后 默认存储引擎是 InnoDB

存储引擎有哪些?

  • MEMORY:存储在内存,用于做临时表
  • MyISAM
  • InnoDB (重要) 默认 支持事务 外键 行级锁

InnoDB

兼顾高可靠和高性能的通用存储引擎 5.5之后作为MySQL默认的存储引擎

ACID: 原子性 一致性 隔离性 持久性

特点:

  • DML操作遵循ACID模型, 支持事务
  • 行级锁,提高并发访问性能
  • 支持 外键 FOREIGH KEY 约束,保证数据的完整性和正确性

MyISAM

早期MYSQL默认的存储引擎

特点:

  • 不支持事务,不支持外键
  • 支持表锁,不支持行锁
  • 访问速度快

Memory

数据存储在内存中的 ,由于受到硬件问题,断电等影响,只能将这些表作为临时表或缓存使用

特点:

  • 内存存放
  • hash索引(默认)

InnoDB和MyISAM的区别


存储引擎的选择

合适的业务选择合适的引擎就可以了

  1. 事务的完整性和在并发条件下对数据的一致性有要求比较高,可以选择InnoDB引擎
  2. MyISAM引擎适合读写为主,只有少量的更新和删除操作,对事务的完整性,并发性要求不是很高, 比如 日志,电商项目中的足迹评论等相关数据。不是业务系统的核心数据 哪怕是丢了一两条也不会影响
  3. Memory:保存在内存,访问速度快 用作缓存,表的大小是有限制的,而且无法保障数据的安全性

绝大多数情况下使用InnoDB 默认的, MongoDB 替代MyISAM 方案

MEMORY被Redis方案代替

总结:

  1. MYSQL体系结构

    • 连接层 :授权校验
    • 服务层 :SQL接口 解析 优化
    • 引擎层:索引 不同引擎索引不同
    • 存储层:具体数据的存储
  2. 存储引擎简介

    数据库中存储获取,建立索引的,更新查询的方式

  3. 存储引擎的特点

    InnoDB: 事务 外键 行级锁

    MyISAM: 不支持事务 不支持外键 表锁

  4. 存储引擎的应用:

    根据不同的业务需求选择不同的引擎

    InnoDB :存储系统中对于业务,数据完整性较高的核心数据

    MyISAM:存储业务系统中的非核心数据 比如评论 ,日志等

    绝大多数场景都是选择InnoDB 都要保证事务

相关推荐
玉衡子13 分钟前
MySQL基础架构全面解析
数据库·后端
梦中的天之酒壶15 分钟前
Redis Stack扩展功能
数据库·redis·bootstrap
GreatSQL23 分钟前
GreatSQL分页查询优化案例实战
数据库
Leo.yuan1 小时前
不同数据仓库模型有什么不同?企业如何选择适合的数据仓库模型?
大数据·数据库·数据仓库·信息可视化·spark
麦兜*1 小时前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
chat2tomorrow1 小时前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl
稻草人想看远方1 小时前
关系型数据库和非关系型数据库
数据库
考虑考虑1 小时前
Postgerssql格式化时间
数据库·后端·postgresql
依稀i1231 小时前
Spring Boot + MySQL 创建超级管理员
spring boot·mysql
千里码aicood1 小时前
【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
java·数据库·spring boot