当前位置: 首页 > news >正文

【MySQL】MySQL数据存储机制之存储引擎

目录

1.如何理解存储引擎? 

2.MySQL 提供的存储引擎

3.存储引擎的功能特性

(1)存储介质

(2)事务处理能力

(3)锁定

(4)备份和恢复

(5)优化

(6)外键的引用完整性

(7)全文本搜索

(8)空间数据


1.如何理解存储引擎? 

存储引擎是MySQL 中负责数据存储和检索的服务器组件,它充当了不同表类型的处理程序。

存储引擎的主要任务包括:

  • 数据存储:将数据存储在磁盘或内存中;支持不同的存储格式(如 InnoDB 的表空间、MyISAM 的文件分离)。
  • 数据检索:提供高效的索引机制(如 B+ 树、哈希索引);支持快速的行操作(如插入、更新、删除)。
  • 事务和并发控制:支持事务(如 InnoDB)或提供简单的锁机制(如 MyISAM)。
  • 优化:提供行级优化(如 InnoDB 的 MVCC)和索引优化。

表的存储引擎通常不会影响SQL层的操作,通常,SQL层解析所有有效的SQL语句,存储层处理SQL层下发的行操作(如读取、写入、更新)。这种分层设计使得 MySQL 可以支持多种存储引擎,同时保持 SQL 层的统一性。

SQL 语句是独立于存储引擎的,除了以下语句:

  • CREATE TABLE 有一个ENGINE 选项,指定每个表使用哪个存储引擎。
  • ALTER TABLE 有一个ENGINE 选项,可以将表转换为使用不同的存储引擎。

某些功能仅在某些存储引擎中可用:

  • 仅InnoDB 和NDB 支持:外键 和 事务控制操作,如COMMIT 和ROLLBACK
  • 只有InnoDB 和MyISAM 支持全文索引

2.MySQL 提供的存储引擎

  • InnoDB(默认的内置存储引擎)
  • MyISAM (常用在旧的系统中)
  • MEMORY
  • ARCHIVE
  • BLACKHOLE
  • MERGE
  • CSV
  • FEDERATED (默认被禁用)
  • NDBCLUSTER (在MySQL Cluster 发行版中可用)

3.存储引擎的功能特性

(1)存储介质

存储引擎支持不同的存储介质,以适应不同的应用场景:

磁盘:大数据量、数据持久化存储。

内存:Memory 存储引擎将数据存储在内存中,读写速度极快。适合临时数据或缓存数据,但数据库重启后数据会丢失。

网络数据节点:分布式存储引擎(如 NDB)将数据存储在多个网络节点上。适合分布式系统和高可用性场景。

空 (BLACKHOLE):不存储任何数据,所有写入操作都会被丢弃。适合数据复制或测试场景。

(2)事务处理能力

多语句事务:支持事务的存储引擎(如 InnoDB)允许将多个 SQL 语句作为一个事务执行。事务可以提交(Commit)或回滚(Rollback)。

隔离级别:支持不同的事务隔离级别(如读未提交、读已提交、可重复读、串行化)。隔离级别决定了事务之间的可见性和并发性能。

(3)锁定

锁定机制用于管理并发访问。

锁定粒度

表级锁:锁定整个表(如 MyISAM)。

行级锁:锁定单行数据(如 InnoDB)。

更细粒度的锁可以提高并发性能。

多版本并发控制(MVCC)

MVCC 通过保存数据的多个版本来实现非阻塞读操作。适合高并发读写的场景(如 InnoDB)。

(4)备份和恢复

存储引擎的备份和恢复机制因复杂性不同而有所差异。

复杂存储引擎(如 InnoDB、NDB):在内部保持数据一致性,支持热备份和崩溃恢复。备份文件可能不包含数据库的一致快照,需要通过日志(如 Redo Log、Undo Log)恢复。

Q:什么是热备份?

A:在数据库运行期间进行备份,不需要停止服务。

Q:如何理解备份文件可能不包含数据库的一致快照?

A:复杂存储引擎的备份文件可能不是数据库在某一时刻的完整、一致的状态。这是因为备份过程中数据库可能仍在运行,数据可能正在被修改。

简单存储引擎(如 MyISAM):文件系统备份可以直接复制数据文件(如 .MYD 和 .MYI)。由于缺乏事务支持,备份文件与数据库状态一致。

(5)优化

存储引擎通过使用索引(使用 B+ 树、哈希等索引结构加速查询)、缓冲区(通过批量写入和延迟写入磁盘,优化写操作,提高磁盘性能。)和内存(将热点数据加载到内存中,减少磁盘 I/O)来优化性能。

(6)外键的引用完整性

  • 支持外键的存储引擎(如 InnoDB)可以保证数据的引用完整性。
  • 外键约束确保关联表之间的数据一致性。

(7)全文本搜索

持全文本搜索的存储引擎(如 InnoDB、MyISAM)可以高效地处理文本数据的搜索。全文本索引支持关键词搜索、模糊匹配等功能。

(8)空间数据

支持空间数据的存储引擎(如 InnoDB、MyISAM)可以存储和查询地理空间数据(如点、线、面)。空间索引(如 R 树)用于加速空间查询。

相关文章:

  • Vim 编辑器-实现基础跳转
  • MCP 开放协议
  • 55-交换机堆叠
  • P4924 [1007] 魔法少女小Scarlet
  • 模板初阶:
  • 判断一个数是否是质数(素数)
  • 【递归与动态规划(DP) C/C++】(1)递归 与 动态规划(DP)
  • 图书管理借阅系统(豪华版)
  • python二级每日十题(1)
  • css盒子模型第二章(margin padding border content)
  • 从零开始 | C语言基础刷题DAY3
  • 深入解析Hosts文件:从原理到实战应用(文末附Qwins下载)
  • Couldn‘t install PSEXESVC service: 拒绝访问。
  • 宇树科技纯技能要求总结
  • 大话数据结构第一章,数据结构绪论笔记
  • 项目实战系列:基于瑞萨RA6M5构建多节点OTA升级-系统设计<一>
  • DQN 玩 2048 实战|第三期!优化网络,使用GPU、Env奖励优化
  • 整形在内存中的存储(例题逐个解析)
  • Qemu 详解与 ARM 虚拟机搭建指南
  • Python递归与递推的练习(初步了解复杂度,全排列的价值,奇妙的变换,数正方形,高塔登顶方案)
  • 经济日报:美国滥施汽车关税损人不利己
  • 国务院关税税则委员会公布公告调整对原产于美国的进口商品加征关税措施
  • 外国游客“在华扫货”热:“带空箱子到中国!”
  • 图讯丨习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 新剧|《藏海传》定档,《折腰》《人生若如初见》今日开播
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用