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

相关推荐
power 雀儿1 分钟前
集群聊天服务器---MySQL数据库的建立
服务器·数据库·mysql
骑着王八撵玉兔2 小时前
【性能优化与架构调优(二)】高性能数据库设计与优化
数据库·性能优化·架构
Edingbrugh.南空2 小时前
Flink MySQL CDC 环境配置与验证
mysql·adb·flink
BD_Marathon3 小时前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu
想要入门的程序猿3 小时前
Qt写入excel
数据库·qt·excel
Q_970956393 小时前
java+vue+SpringBoo校园失物招领网站(程序+数据库+报告+部署教程+答辩指导)
java·数据库·vue.js
Wyc724093 小时前
Maven
java·数据库·maven
程序猿小D3 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的电影小说网站管理系统,推荐!
java·数据库·mysql·spring·毕业设计·ssm框架·电影小说网站
羊小猪~~3 小时前
数据库学习笔记(十七)--触发器的使用
数据库·人工智能·后端·sql·深度学习·mysql·考研
背太阳的牧羊人4 小时前
Neo4j 的向量搜索(Neo4jVector)和常见的向量数据库(比如 Milvus、Qdrant)之间的区别与联系
数据库·neo4j·milvus