avatar

一条在知识海洋的咸鱼

这个家伙很懒,啥也没有留下😋

  • 首页
  • Linux
  • OCJP
  • Java核心技术卷
  • J2EE相关标准
  • 深入理解Java虚拟机
  • NIO与SOcket编程技术指南
  • Java多线程编程核心技术
  • Redis开发与运维
  • Spring Cloud Alibaba 微服务原理与实践
  • DevOps
  • Docker
  • MySQL必知必会
  • AI自学路线
  • Spring Boot 编程思想(核心篇)
主页 MySQL体系结构和存储引擎
文章

MySQL体系结构和存储引擎

发表于 2020-12-29 更新于 2026-06- 10
作者 Administrator
13~17 分钟 阅读

MySQL被设计为一个可移植的数据库,几乎在当前所有系统上都能运行,且基本能保证在各平台上的物理体系结构的一致性

  • 定义数据库和实例
    • MySQL数据库配置文件顺序
  • MySQL体系结构
  • MySQL存储引擎
    • InnoDB 存储引擎
    • MyISAM存储引擎
    • NDB存储引擎
    • Memory存储引擎
    • Archive存储引擎
    • Federated存储引擎
    • Maris存储引擎
    • 其他存储引擎
  • 各存储引擎之间的比较
    • 下载导入MySQL示例数据库
  • 连接MySQL
    • TCP/IP
    • 命名管道和共享内存
    • UNIX域套接字

定义数据库和实例

  • 数据库:物理操作系统文件或其他形式文件类型的集合
  • 实例:MySQL数据库由后台线程及一个共享内存区组成。数据库实例才是正真用于操作数据库文件的

总结:MySQL被设计为一个单进程多线程架构的数据库,MySQL数据库实例在系统上的表现就是一个进程

MySQL数据库配置文件顺序

image.png
由上图可知MySQL在Linux下以从左到右的顺序执行配置文件加载,且参数以最后配置文件为准
/etc/my.cnf 文件配置信息
image.png

  • datadir为数据库所在的路径

MySQL体系结构

  • 理解两个概念数据库和数据合实例:
    数据库:数据库是文件数据的集合
    数据库实例:通过数据库实例来完成对数据库的操作

540235201609270838545632139392246.jpg
上图为MySQL体系架构图(MySQL官方手册)
包含:

  • 连接池组件
  • 管理服务和工具组件
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插件式存储引擎
  • 物理文件

MySQL数据库区别于其他数据库的最重要点为:插件式的表存储引擎。
存储引擎是基于表的,而不是数据库

MySQL存储引擎

  • 存储引擎的好处:每个存储引擎都有各自的特点,能够根据具体的应用建立不同存储引擎表

由于MySQL数据库的开源特性,用户可以根据MySQL预定义的存储引擎接口编写自己的存储引擎,且可分为MySQL官方存储引擎和第三方存储引擎

InnoDB 存储引擎

支持事务,主要面向在线事务处理(OLTP)的应用。
特点为行锁设计、支持外键,并支持类似于Oracle的非锁定读(默认读取操作不会产生锁)。
从5.5.8开始,InnoDB为默认的存储引擎。
每个InnoDB存储引擎的表单独存放到一个独立的ibd文件中。

MyISAM存储引擎

不支持事务、表锁设计,支持全文检索,主要面向一些LOAP数据库应用。
MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件

NDB存储引擎

集群存储引擎,类似于Oracle的RAC集群
NDB的特点是数据全部放在内存中

Memory存储引擎

以前称HEAP存储引擎,将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。非常适合用于存储临时数据的临时表

Archive存储引擎

只支持INSERT和SELECT操作,适合存储归档数据,如日志信息

Federated存储引擎

不存放数据,只是指向一台远程MySQL数据库服务器上的表

Maris存储引擎

设计目标是用来替代原有的MyISAM存储引擎

其他存储引擎

Merge、CSV、Sphinx和Infobright

##总结常见问题

  • 1.为什么MySQL不支持全文索引?
    MySQL支持全文索引,MyISAM、InnoDB和Sphinx储存引擎都支持全文索引

  • 2.MySQL数据库速度块是因为不支持事务?
    InnoDB是支持的,快是相对于不同的应用来说的

-3.当表的数据流大于1000万时MySQL的性能会急剧下降吗?
不!MySQK是数据库,不是文件,随着数据行数的增加,性能会有所下降,但下降时线性的。官方手册提及在InnoDB上存储超过1TB的数据,处理插入/更新的操作平均800次/秒

各存储引擎之间的比较

image.png
详情可查看官方文档5.6 https://dev.mysql.com/doc/refman/5.6/en/

//查看当前MySQL支持的存储引擎
SHOW ENGINES;

下载导入MySQL示例数据库

https://dev.mysql.com/doc/index-other.html
image.png
跳转到github,转存到gitee网址
https://gitee.com/useager/test_db

//查看MySQL数据库所支持的存储引擎
SHOW ENGINES

image.png

连接MySQL

连接MySQL操作是一个连接进程和MySQL数据库实例进行通信。本质上是进程通信。
进程通信可以通过:管道、命令管道、命名字、TCP/IP套接字、UNIX域套接字

TCP/IP

MySQL在任何平台下都提供的连接方式,命令行 mysql -h IP地址 -u 用户名 -p 密码 -P 端口
其他参数使用可以mysql --help查看
image.png

命名管道和共享内存

在Windows平台上,且通信进程在同一台服务器上

  • 命名管道:在配置文件中启用 --enable-named-pipe
  • 共享内存:配置文件中添加--shared-memory,客户端也必须使用--protocol=memory

UNIX域套接字

在UNIX和UNIX-like平台上,且通信进程在同一台服务器上
配置文件中指定套接字文件路径,如--socket=/tmp/mysql.sock,数据库启动示例后可通过

//获取UNIX域套接字文件路径
SHOW VARIABLES LIKE 'socket'

//使用得到的值进行连接
mysql -u用户名 -S UNIX域套接字文件路径

MySQL技术内幕
MySQL原理
许可协议: 
分享

相关文章

1月 4, 2021

InnoDB存储引擎

InnoDB是事务安全的MySQL存储引擎,类似于Oracle数据库的架构InnoDB存储引擎概述InnoDB存储引擎的版本InnoDB各版本区别InnoDB体系架构后台线程Master ThreadIO ThreadPurge ThreadPage Cleaner Thread内存缓冲池缓冲池内存

12月 29, 2020

MySQL体系结构和存储引擎

MySQL被设计为一个可移植的数据库,几乎在当前所有系统上都能运行,且基本能保证在各平台上的物理体系结构的一致性定义数据库和实例MySQL数据库配置文件顺序定义数据库和实例数据库:物理操作系统文件或其他形式文件类型的集合实例:MySQL数据库由后台线程及一个共享内存区组成。数据库实例才是正真用于操作

下一篇

走进Java

上一篇

简单查询

最近更新

  • 55 异常兜底:工具失败、非法输出、空检索与超时
  • 54 Agent Memory:短期记忆、用户上下文与摘要
  • 53 Human-in-the-loop:让关键动作暂停、确认与恢复
  • 52 工单 Tool:字段校验、创建结果与失败补偿
  • 51 订单 Tool:Mock、鉴权、状态解析与脱敏

热门标签

java基础 微服务 maven Spring Tomcat DDD Linux Linux基础 SQL基础 数据结构算法

目录

©2026 一条在知识海洋的咸鱼. 保留部分权利。

使用 Halo 主题 Chirpy