MySQL存储引擎详解

存储引擎

MySQL体系结构

  1. 连接层:与客户端连接,权限校验、连接池
  2. 服务层:SQL接口和解析、查询优化、缓存、函数
  3. 引擎层:索引、存储引擎
  4. 存储层:系统文件、日志(Redo、Undo等)

存储引擎介绍

不同的引擎有不同的应用场景

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。

存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型

默认:InnoDB

查询建表语句

show create table account;

查看数据库支持的存储引擎

show engines;
  • memory
  • MyISAM
  • InnoDB

创建表并指定 MyISAM 存储引擎

create table account(
    id int,
    name varchar(10)
) engine = MyISAM;

存储引擎简介

InnoDB

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎。

特点:

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

文件:

每张表对应一个表空间文件 xxx.ibd,存储表结构、数据和索引。

InnoDB逻辑存储结构:

MyISAM

MyISAM:MySQL早期的默认存储引擎。

特点:

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

文件:

  • xxx.sdi: 存储表结构信息
  • xxx.MYD: 存储数据
  • xxx.MYI1: 存储索引

Memory

Memory 引擎的表数据时存储在内存中的,只能将这些表作为临时表或缓存使用。

特点:

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

文件:xxx.sdi 存储表结构信息

存储引擎的选择

InnoDB:应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作。

MyISAM:应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高。

MEMORY:数据保存在内存中,访问速度快,通常用于临时表及缓存。缺点就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

MyiSAM -> MongoDB

MEMORY -> Redis

相关推荐

  1. MySQL存储引擎详解

    2024-05-11 19:02:13       66 阅读
  2. MySQL七 | 存储引擎

    2024-05-11 19:02:13       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 19:02:13       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 19:02:13       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 19:02:13       87 阅读
  4. Python语言-面向对象

    2024-05-11 19:02:13       96 阅读

热门阅读

  1. SpringBoot 中检测文件编码格式

    2024-05-11 19:02:13       37 阅读
  2. SpringBoot 中 zip 文件解压工具类

    2024-05-11 19:02:13       32 阅读
  3. 【Python】如何训练模型并保存本地和加载模型

    2024-05-11 19:02:13       35 阅读
  4. 计算机答辩常见问题汇总(一)

    2024-05-11 19:02:13       34 阅读
  5. 蒙特卡洛求PI(抛点法)TypeScript实现

    2024-05-11 19:02:13       33 阅读
  6. 第十周笔记

    2024-05-11 19:02:13       36 阅读
  7. WHAT - npm和npx

    2024-05-11 19:02:13       31 阅读
  8. 【LeetCode】每日一题:2960. 统计已测试设备

    2024-05-11 19:02:13       30 阅读