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

相关推荐
苏打水com2 分钟前
数据库进阶实战:从性能优化到分布式架构的核心突破
数据库·后端
shan~~44 分钟前
linux达梦数据库操作
linux·数据库·chrome
武文斌771 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
CoderIsArt1 小时前
SQLite架构
数据库·sqlite
lixora2 小时前
银河麒麟高级服务器操作系统(ADM64 版)V10(SP1)搭建 Oracle 19c RAC
数据库
郝学胜-神的一滴2 小时前
使用Linux的read和write系统函数操作文件
linux·服务器·开发语言·数据库·c++·程序人生·软件工程
哲Zheᗜe༘2 小时前
了解学习MySQL数据库基础
数据库·学习·mysql
咋吃都不胖lyh2 小时前
MySQL 多表查询中,联合查询(UNION) 和子查询
mysql·数据分析
Miqiuha2 小时前
sql的表join怎么学?
数据库·sql
TiAmo zhang3 小时前
调查问卷管理系统开发 │ 系统功能概述
数据库·sqlserver