数据库原理与应用 第 4 章 · 第一节
课程 › 第 4 章 › 第一节 章首概述比较InnoDBMyISAM 和 MEMORY怎样选择 版式
第 4 章 数据库的创建和管理 · 第一节

MySQL 的存储引擎

存储引擎是什么,常用的存储引擎各有什么特点,怎样选择
本 节 知 识 点
  1. 01第 4 章 数据库的创建和管理
  2. 02存储引擎概述
  3. 03常用存储引擎的比较
  4. 04InnoDB 存储引擎
  5. 05MyISAM 与 MEMORY 存储引擎
  6. 06存储引擎的选择
01
第 4 章 · 第一节 · 课件第 1、2 页

第 4 章 数据库的创建和管理

数据怎样存,文字用什么编码存,以及怎样建立数据库。

课件第 1 页

分清楚

内容在哪一节
存储引擎第一节
字符集与校对规则第二、三节
创建和管理数据库第四节

重 点

建库时指定字符集和校对规则。建表时可以指定存储引擎,一般用默认的 InnoDB。

02
第 4 章 · 第一节 · 课件第 3、4、5 页合并重做

存储引擎概述

存储引擎决定数据怎样存储、怎样建索引、怎样查询。

4.1 MySQL 数据库的存储引擎课件第 3 至 5 页合并

存储引擎概述

存储引擎是决定如何存储数据库中的数据、如何为数据建立索引、如何更新和查询数据的机制。
  • MySQL 提供了多种存储引擎,可以根据不同的需求为数据表选择不同的存储引擎
  • 常用的存储引擎有 InnoDB、MyISAM、MEMORY 和 MERGE 等
  • MySQL 8.0 默认的存储引擎是 InnoDB
查看支持的存储引擎
SHOW ENGINES;
查看默认的存储引擎
SHOW VARIABLES
LIKE '%storage_engine%';
设置默认的存储引擎
SET default_storage_engine = InnoDB;
查看默认存储引擎的结果
Variable_nameValue
default_storage_engineInnoDB
default_tmp_storage_engineInnoDB
disabled_storage_engines
internal_tmp_mem_storage_engineTempTable

重 点

SHOW ENGINES 的结果中,Support 为 DEFAULT 的就是默认的存储引擎。

实 验

实验 1-1 查看存储引擎

实 验

实验 1-2 默认存储引擎

03
第 4 章 · 第一节 · 课件第 6、10 页合并重做

常用存储引擎的比较

七种存储引擎各有特点,适合不同的用途。

4.1 MySQL 数据库的存储引擎课件第 6、10 页合并

常用存储引擎的比较

存储引擎主要特点典型用途
InnoDB支持事务、外码和行级锁,崩溃后能自动恢复电商、银行等需要事务的系统
MyISAM查询速度快,不支持事务和外码,只有表级锁以读为主的网站、日志统计
MEMORY数据存储在内存中,速度快,重启后数据丢失临时表、统计的中间结果
MERGE把多个结构相同的 MyISAM 表合成一个逻辑表按月分表存放的日志,合起来查询
BLACKHOLE写入的数据立即丢弃,不保存任何数据验证语句的语法,测试二进制日志
CSV数据以 CSV 文件存储,不支持索引与其他软件交换数据,导出报表
ARCHIVE高压缩比存储,只能插入和查询保存很少访问的历史数据

分清楚

要求选哪一种
需要事务InnoDB
以查询为主MyISAM
临时数据MEMORY
历史数据ARCHIVE
04
第 4 章 · 第一节 · 课件第 7 页

InnoDB 存储引擎

InnoDB 是默认的存储引擎,支持事务和外码。

课件第 7 页

重 点

InnoDB 支持提交、回滚和崩溃修复,第 9 章的事务要用 InnoDB 表。

05
第 4 章 · 第一节 · 课件第 8、9 页合并重做

MyISAM 与 MEMORY 存储引擎

MyISAM 查询快但不支持事务,MEMORY 的数据在内存中。

4.1 MySQL 数据库的存储引擎课件第 8、9 页合并

MyISAM 与 MEMORY 存储引擎

MyISAM
  • MySQL 5.5 之前的默认存储引擎
  • 不支持事务,也不支持外码约束,但查询和插入的速度快
  • 数据量增大以后,崩溃后的恢复能力变弱
  • 没有专门的缓冲池,靠操作系统缓存读写的数据,有时效率比 InnoDB 低
  • 每张表的数据和索引分别存在扩展名为 .MYD 和 .MYI 的文件中
MEMORY
  • 表中的数据存储在内存中,数据库重启或崩溃后,表中的数据都会消失
  • 适合存放临时数据,例如统计的中间结果
  • 表的定义保存在磁盘上,数据只在内存中,处理速度快
  • 默认使用哈希(HASH)索引

想一想

把统计的中间结果放在 MEMORY 表中,重启后还在吗?

06
第 4 章 · 第一节 · 课件第 11 页

存储引擎的选择

根据是否需要事务、读写的比例和数据的安全来选择。

课件第 11 页

重 点

没有特别的理由,就用默认的 InnoDB。

保山学院·人工智能教研室·曹鼎鼎