基础概念
数据库实例是由数据库后台进程/线程以及一个共享内存区组成。共享内存可以被运行的后台进程/线程所共享。需要注意的是,数据库实例才是真正用来操作数据库文件的。
MySQL体系架构
如图所示:
mysql体系架构- 最上层的连接服务,用于不同语言与SQL的交互。
- 可以通过【show variables like '%connections%'】命令查看MySQL实例的最大连接数和单个用户的最大连接数。
- 第二层MySQL Server,大多数MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存,所有跨存储引擎的功能都集中在这一层实现。
-
Management Serveices & Utilities:系统管理和控制工具
备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据。 -
Connection Pool:连接池
进行身份验证、线程重用,连接限制,检查内存,数据缓存;管理用户的连接,线程处理等需要缓存的需求。 -
SQL Interface:SQL 接口
进行 DML、DDL,存储过程、视图、触发器等操作和管理;用户通过 SQL 命令来查询所需结果。 -
Parser:解析器
查询翻译对象的特权;SQL 命令传递到解析器的时候会被解析器验证和解析。 - Optimizer:查询优化器
-
Cache 和 Buffer:查询缓存
全局和引擎特定的缓存和缓冲区
-
Management Serveices & Utilities:系统管理和控制工具
- 第三层为存储引擎层,存储引擎负责MySQL中数据的存储和提取,服务器通过API于存储引擎进行通信。
- 可以通过【SHOW ENGINES】命令查看各个存储引擎信息。
执行流程
mysql-architecture在 MySQL Server 中首先有一个 Cache,用来缓存 SQL 查询语句的查询结果,如果缓存命中,则直接返回结果,如果缓存没有命中,则对 SQL 语句进行语法分析,预处理和查询优化,最终得到该查询的执行计划,之后,该执行计划被送往数据库引擎,得到最终查询到的数据。数据库引擎并不会严格按照执行计划进行执行,而是会根据自身的架构和特性进行一些调整,以提高执行效率。
网友评论