MySQL-体系结构

2021-07-01  本文已影响0人  Zeppelin421

体系结构

网络连接层

最上层是一些客户端和链接服务,包含本地socket通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

服务层

第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询顺序,是否利用索引等,最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。

引擎层

存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。

存储层

数据存储层,主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

tips: 和其他数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎上,插件式的存储引擎架构,将查询处理和其他的系统任务以及数据的存储提取分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。

运行机制

show processlist;  // 查看用户正在运行的线程信息
・id:线程ID
・user:启动这个线程的用户
・Host:发送请求的客户端的IP和端口号
・db:当前命令在哪个库执行
・Command:该线程正在执行的操作命令
  ・Create DB:正在创建库操作
  ・Drop DB:正在删除操作
  ・Execute:正在执行一个PreparedStatement
  ・Close Stmt:正在关闭一个 PreparedStatement
  ・Query:正在执行一个语句
  ・Sleep:正在等待客户端发送语句
  ・Quit:正在退出
  ・Shutdown:正在关闭服务器
・Time:表示该线程处于当前状态的时间,单位秒
・State:线程状态
  ・Updating:正在搜索匹配记录,进行修改
  ・Sleeping:正在等待客户端发送新请求
  ・Starting:正在执行请求处理
  ・Checking table:正在检查数据表
  ・Closing table:正在将表中数据刷新到磁盘中
  ・Locked:被其他查询锁住了记录
  ・Sending Data:只在处理SELECT查询,同时将结果发送给客户端
・Info:一般记录线程执行的语句,默认显示前100个字符,想查看完整的使用 show full processlist

  1. 通讯机制:
    全双工: 能同时发送和接收数据,例如平时打电话
    半双工:指的某一时刻,要么发送数据,要么接收数据,不能同时。例如早期对讲机
    单工:只能发送数据或只能接收数据。例如单行道

上一篇下一篇

猜你喜欢

热点阅读