MySQL 架构概览

show processlist;命令查询所有正在运行的线程

MySql架构从上到下分为网络连接层,系统服务层,存储引擎层,文件系统层

1.网络连接层主要负责维护客户端的连接,保存session会话,以及多线程下的连接管理。

2.系统服务层,主要功能包括提供SQL查询的API,以及其他所有跨存储引擎的功能,具体组件包括解析器,优化器,缓存区

解析器是进行语法权限等分析和翻译的,优化器可以生成执行计划,缓存区是为了加快查询效率而存在

3.存储引擎层,是与磁盘打交道的子系统,负载管理表,索引的管理

4.文件系统层,所有文件的读写,包括表结构文件,数据文件,索引文件,日志文件等

关于MySQL连接池和线程池的问题

生产环境客户端连接一般会使用连接池,主要维护的是网络连接;MySQL线程池维护的是工作线程,它位于MySQL服务器的网络连接层。

也就是客户端发起SQL请求时,先是在客户端程序中获取空闲连接,如果没有则创建新的TCP连接,然后服务端这边进行账号校验,接着判断是否有空闲工作线程并安排执行任务。

日志文件主要有以下几种:

1.binlog二进制日志,主要记录MySQL数据库的所有写操作(增删改)。

2.redo-log重做/重写日志,MySQL崩溃时,对于未落盘的操作会记录在这里面,用于重启时重新落盘(InnoDB专有的)。

3.undo-logs撤销/回滚日志:记录事务开始前修改数据的备份,用于回滚事务。

原理为:它会在ibdata文件中拷贝修改前的数据,并将文件位置记录在表行数据因此字段roll_ptr中,如果回滚则从ibdata拷贝原内容到ibd文件中实现回滚。

如果一个事务有多个该行数据的修改,则通过roll_ptr回滚指针,组成一个单向链表,这个是MVCC机制实现的关键。

4.error-log:错误日志:记录MySQL启动、运行、停止时的错误信息。

5.general-log常规日志,主要记录MySQL收到的每一个查询或SQL命令。

6.slow-log:慢查询日志,主要记录执行时间较长的SQL。

7.relay-log:中继日志,主要用于主从复制做数据拷贝。

相关推荐
闲云野鹤在人间8 分钟前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
要开心吖ZSH2 小时前
MySQL 慢 SQL 排查操作手册-个人笔记版
java·笔记·sql·mysql·慢查询
Gl�ria3 小时前
MySQL 单机版 vs 高可用版:宕机排查 + 故障处理
mysql·adb·架构
Titan20244 小时前
MySQL索引学习笔记
笔记·学习·mysql
ClouGence5 小时前
数据库迁移工具 CloudCanal v6.5.0.0 发布:新增 TDSQL PostgreSQL 多条链路,支持 MongoDB 双向同步
数据库·mysql·mongodb
这个DBA有点耶6 小时前
Change Buffer深入:二级索引写入的隐形加速器与它的代价
数据库·mysql·代码规范
for_ever_love__6 小时前
MySQL 事务隔离级别讲透:MVCC、幻读与四个级别怎么选
java·数据库·mysql·事务·mvcc·不可重复读·幻读
这个DBA有点耶10 小时前
关系数据库管理系统选型指南:四步决策框架与主流产品技术路线对比
数据库·sql·程序人生·mysql·database·dba
我不会起名字32211 小时前
MVCC 快照读为什么读不到刚提交的数据:ReadView 的 4 条可见性规则
数据库·mysql·innodb·mvcc·事务隔离
螺蛳粉 螺蛳粉11 小时前
第四篇:Keepalived + MySQL 主从高可用实战
数据库·mysql·adb·keepalived·高可用