MySQL系列:4 体系架构Architecture

开门见山

         与大多数系统一样,mysql也是遵循C/S架构模型对外服务。其必要组成部分有:MySQL server—mysql 服务器,client programs—客户端程序, and MySQL non-client programs—非客户端程序,总体应用架构如下所示。

 

Client Programs

客户端程序用于连接至server并获取、修改、增加、删除数据。常用的有:

  1. mysql: Issue queries and view results. ---发起查询并查看结果;
  2. mysqladmin: Administer the server.—管理服务器程序;
  3. mysqlcheck: Check the integrity of database tables.—检查数据库表的完整性;
  4. mysqldump: Create logical backups.—创建逻辑备份;
  5. mysqlimport: Import text data files.—导入数据文件;
  6. mysqlshow: Show database, table, and column information.—查看数据库、表、列信息;
  7. mysqlslap: Emulate client load.—模拟客户端负载。

Administrative and Utility Programs

         非客户端程序(non-client programs),用于直接访问数据而不需要经过链接,常用的有:

  1. innochecksum: Check an InnoDB tablespace file offline.—离线检查InnoDB表空间文件;
  2. mysqldumpslow: Summarize the slow query log files.—查询mysql的慢查询日志;
  3. mysqlbinlog: Display the binary log files.—查看二进制日志

mysql server

    服务器进程。是指一个称为mysqld的进程,其为单进程多线程应用程序(unix系统)。用于管理数据的访问和存储、支持并发的客户端链接、支持多种存储引擎、支持事务型/非事务型表。后面将具体讲述mysqld服务器进程的架构。

服务端架构

         mysqld服务程序逻辑上分为:连接层、SQL层、存储层三部分。连接层用于处理各种不同方式(TCP/IP、unix socket等)的访问链接;SQL层用于处理客户程序提交的SQL请求;存储层用于管理数据的存储,包括不同的存储引擎、不同的存储方式(in-memory or file)等;

 

Connection Layer

         The connection layer accepts connections from applications over several communication

protocols:

• TCP/IP

• UNIX sockets

• Shared memory

• Named pipes

       连接层用于接收来自不同应用/不同协议的连接请求。允许的通信协议有:TCP/IP、unix域socket(类unix)、共享内存(windows)、命名管道(windows);

SQL layer

         SQL层用户处理连接后的各种SQL请求,包括:

  • Authorization and parser授权与解析: The parser validates the correct syntax, and then authorization verifies that the connected user is allowed to run a particular query.
  • Optimizer优化: Creates the execution plan for each query, which is a step-by-step instruction set on how to execute the query in the most optimal way. Determining which indexes are to be used, and in which order to process the tables, is the most important part of this step.

优化器为每个查询创建执行计划(一系列顺序执行的指令集用于指示如何以最优的方式去执行查询)。用于可以在SQL语句前添加 explain关键词查看系统为SQL语句创建的执行计划;

 

  • Query execution查询执行: Fulfills the execution plan for each query;
  • Query cache 查询缓存: Optionally configurable query cache that can be used to memorize (and immediately return) executed queries and results;

用于将查询结果缓存在内存中,后续相同的SQL可以直接在内存中获取结果。

  • Query logging查询日志记录: Can be enabled to track executed queries

根据如上描述,一个SQL语句在mysql的执行流程如下:

 

storage layer

         MySQL支持不同类型的存储(存储引擎),支持将数据存储于不同的媒介(内存-memory、磁盘disk、网络-network等);

其他

存储引擎

简介:Storage engines are server components that act as handlers for different table types.

         存储引擎用于存储数据、获取数据、通过索引查找数据。

MySQL磁盘空间使用

MySQL对磁盘空间的使用如下图所示。一个mysqld实例安装包括可执行程序文件、可执行程序日志文件和mysqld的数据目录等;其中mysqld的数据目录又包括:服务器日志文件、InnoDB日志文件、数据目录(触发器、数据和索引文件、数据格式文件)等。

 

MySQL内存使用

MySQL内存分为两类:Global 和 session。global全局级在进程的所有线程中共享;session会话级为每个线程单独分配,在线程创建和销毁是动态分配与销毁。

MySQL 插件接口

         MySQL的插件API允许动态加载/卸载服务端组件,如存储引擎、全文索引解析器等;

总结

         MySQL层次化的设计使各个功能组件最大化的解耦,与通信界的五层通信协议栈类似,各层独立负责各自的功能,下层对上层提供服务而不需要上层的细节。

猜你喜欢

转载自blog.csdn.net/zhaogang1993/article/details/96604194