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

相关推荐
8号看台4 分钟前
ORA-01017: 用户名/口令无效; 登录被拒绝
数据库·oracle
计算机毕设VX:Fegn08955 分钟前
计算机毕业设计|基于springboot + vue在线音乐播放系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
qq_2518364577 分钟前
基于java Web 个人网站系统设计与实现
java·开发语言·数据库
计算机毕设VX:Fegn08959 分钟前
计算机毕业设计|基于springboot + vue博物馆展览与服务一体化系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
龙亘川17 分钟前
【课程5.3】功能设计:城管核心指标与设施分布(处置效率、违建数量等指标定义)
数据库·oracle·智慧城市·一网统管ai平台
ybb_ymm23 分钟前
@Async修饰不生效
java·前端·数据库
Psycho_MrZhang31 分钟前
MySQL/PgSQL设计思想总结
数据库·mysql
风吹落叶花飘荡33 分钟前
将mysql数据库的内容备份至阿里云 oss归档存储
数据库·mysql·阿里云
数据大魔方1 小时前
【期货量化入门】期权交易入门:从零开始学期权量化(TqSdk完整教程)
数据库·python·mysql·算法·区块链·程序员创富
虫小宝1 小时前
导购APP高可用数据库设计:主从分离与分库分表在返利系统中的应用
android·数据库