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

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:中继日志,主要用于主从复制做数据拷贝。

 


http://www.kler.cn/a/402935.html

相关文章:

  • 开源一个练手的项目,就叫新闻助手吧
  • vue中动态渲染静态图片资源
  • 如何用GPT-4o解读视频
  • 线性回归Tensorflow实现
  • net某高校社交学习平台的设计与实现
  • 多传感器融合感知算法-后融合
  • 【Linux】开发工具(yum)
  • Uniapp运行环境判断和解决跨端兼容性详解
  • Android开发实战班 - Android开发基础之 Kotlin语言基础与特性
  • ThinkPHP中使用ajax接收json数据的方法
  • 深度学习-循环神经网络RNN
  • 【c++入门】打开新世界大门之初遇c++
  • 一种构建网络安全知识图谱的实用方法
  • RDD触发算子:一些常用的触发算子(count、foreach、saveAsTextFile、first)
  • Linux 常用命令大全
  • 7 设计模式原则之合成复用原则
  • LabVIEW三针自动校准系统
  • java:简单小练习,面积
  • (Linux)搭建静态网站——基于http/https协议的静态网站
  • Redis的特性