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 都要保证事务

相关推荐
User_芊芊君子12 分钟前
KFS异构同步_260条链路DDL自动转换解析
数据库·ai·大模型
xiancai_xianyu18 分钟前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
Zucker n34 分钟前
一款适合研究生科研工作安排的日历
linux·数据库·python
Sharewinfo_BJ1 小时前
Power BI沿袭视图详解:从看懂链路到做影响分析
数据库·数据分析·智信bi·上北智信
l1t1 小时前
DeepSeek总结的 DuckDB 2.0 中更简洁的变量语法
数据库·sql
sunshine8852 小时前
集成电路(IC)设计与封测行业10大常用ERP系统分析
大数据·数据库·人工智能
fen_fen2 小时前
Jmeter5.1.1连接oracle数据库的错误复盘
数据库·jmeter·oracle
imDwAaY3 小时前
MySQL 存储引擎是什么?
android·数据库·mysql
星云低代码开发平台3 小时前
ERP 与 CRM 客户信用核对:业务键、时点和权限验收
大数据·数据库·人工智能
for_ever_love__3 小时前
MySQL 8.0 数据类型选型指南:INT、DECIMAL、VARCHAR 与时间字段怎么选
mysql·adb·数据类型·varchar·长度·字段类型选择