Mysql 体系结构

来源:互联网 发布:速干毛巾 知乎 编辑:程序博客网 时间:2024/06/08 01:17

要想掌握MySQL的体系结构,首先必须要记住的4个线程,MYSQL的体系结构围绕这4个线程进行:

 

1.session thread:将改变记录到二进制文件中,并返回事务成功标记。

2.binlog dump thread:读取masterbinary log events并发送到slave

3.slave I/O thread:当执行start slave语句时,从服务器将会创建一个I/O线程,它连接到主机,读取主服务器中的二进制日志,转储线程发送更新,并将其转储为relay log

4.slave SQL thread:读取并应用中继日志中的事件。

 

MySQL主从复制是异步进行的。

 

(一) mysqld(服务器程序)进程可以划分为以下三个层:

1) 连接层:处理连接。此层存在于所有服务器软件(Web/邮件/LDAP服务器)上。

2) SQL 层:处理所连接的应用程序发送的SQL查询。

3) 存储层:处理数据存储。数据可以按不同格式和结构存储在不同物理介质上。

 

 

连接层 可通过多种通信协议接受来自应用程序的连接:

 

1) TCP/IP

2) UNIX 套接字

3) 共享内存

4) 命名管道

5) TCP/IP 适用于整个网络。

 

SQL 建立连接后,MySQL服务器将处理以下进程:

 

1) 授权和解析器:解析器验证语法是否正确,然后,授权验证是否允许所连接的用户运行特定查询。

2) 优化器:创建每个查询的执行计划,这是有关如何以最优化的方式执行查询的分步指令集。确定要使用哪些索引以及采用何种顺序处理表是此步骤的最重要部分。

3) 查询执行:完成每个查询的执行计划。

4) 查询高速缓存:(可选)可配置的查询高速缓存,可用于存储(并立即返回)执行的查询和结果。

5) 查询日志记录:可以启用以跟踪执行的查询。

 

 

【一条SQL语句的处理过程

一条SQL语句进入SQL层之后,首先由数据缓存区判断该语句是否已经执行过,如果是,则检查高速缓存,直接从中读出结果。

如果是第一次执行,那么首先会通过解析器验证语法是否正确,并判断时候具有相关的权限,然后通过优化器指定最优的执行计划,执行完执行计划之后,更新高速缓存,将查询结果记录到数据缓存区中,然后返回结果。

(笔者自己总结,如有问题,望多多指教!)


0 0
原创粉丝点击