精尽MSQL《一》MySQL架构体系

Posted 小韵豆子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精尽MSQL《一》MySQL架构体系相关的知识,希望对你有一定的参考价值。

 

mysql是一个典型的C/S模式,单进程多线程的服务结构。

MySQL自带的客户端工具在/usr/local/mysql/bin下,如:mysql、 mysqladmin、mysqldump等;服务端程序是mysqld(即守护进程,二进制的程序)

 

MySQL几大模块组件

 

 

Connectors(连接组件):对客户端提供连接,如java,.net,php等语言可以通过连接组件来执行SQL语句。

Connection Pool(连接池组件):负责监听对客户端向MySQL Server端的各种请求,接收请求,转发请求到目标模块。每个成功连接MySQL Server的客户请求都会被创建或分配一个线程,

                                                        该线程负责客户端与MySQL Server端的通信,接收客户端发送的命令,传递服务端的结果信息等。

Management Service & Utilities(管理服务组件和工具组​​​​​件):提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等。

SQL Interface(SQL接口组件):接收用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给客户端。

Parser(解析器组件):首先校验SQL命令语法的合法性,并尝试将SQL命令解析成数据结构,若解析失败,则提示SQL语句不合理。

Optimizer(优化器组件):按照标准流程对SQL命令进行优化分析。

Caches & Buffers(缓存主件):  缓存和缓冲组件

Pluggable Storage Engines(MySQL存储引擎):

          存储引擎的作用:作用一:管理表创建,数据检索,索引创建等,作用二:满足自定义存储引擎开发。

         存储引擎的分类:常见的存储引擎有InnoDB存储引擎,MyISAM存储引擎,Memory存储引擎等等

File System & File Logs(文件系统): 负责存储MySQL 数据库文件和日志文件

 

MySql工作原理

 

首先程序的请求会通过mysql的connectors与其进行交互,请求到处后,会暂时存放在连接池(connection pool)中并由处理器(Management Serveices & Utilities)管理。当该请求从等待队列进入到处理队列,管理器会将该请求丢给SQL接口(SQL Interface)。SQL接口接收到请求后,它会将请求进行hash处理并与缓存中的结果进行对比,如果完全匹配则通过缓存直接返回处理结果;否则,需要完整的走一趟流程:

   (1)由SQL接口丢给后面的解释器(Parser),解释器会判断SQL语句是否正确,若正确则将其转化为数据结构,否则抛出异常。

   (2)解释器处理完,再到优化器(Optimizer),它会产生多种执行计划,最终数据库会选择最优化的方案去执行。

   (3)确定最优执行计划后,此时SQL语句才能交由存储引擎(Storage Engines)处理,存储引擎将会到后端的存储设备中取得相应的数据,并原路返回给程序。

 


MySql管理工具

 

mysql(命令行SQL工具):可进入指定数据库,执行SQL语句脚本。

mysqladmin(执行管理操作的工具 ):

检查服务器配置,当前运行状态 ,创建,删除数据库 ,

设置新密码 ,flush-privileges,reload重新加载权限数据表 ,

refresh刷新数据表,重启日志 ,start-slave从服务器上启动复制 ,

stop-slave从服务器上停止复制

mysqldump(数据库逻辑备份程序 ):   示例 mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql

 

以上是关于精尽MSQL《一》MySQL架构体系的主要内容,如果未能解决你的问题,请参考以下文章

精尽MSQL《一》MySQL架构体系

MySQL入门基础一-Mysql的基础体系架构

msql数据迁移

Msql入门实战之下

Msql入门实战之下

(13)python连接msql