数据库优化 学习笔记
一、MySQL 体系结构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
分层结构
1.1、网络层
第一层的连接服务,用于不同语言与 MySQL 的交互。
-- 命令查看MySQL实例的最大连接数和单个用户的最大连接数
show variables like '%connections%'
1.2、服务层(核心层)
二层服务层是 MySQL 的核心,MySQL 的核心服务层都在这一层,查询解析,SQL 执行计划分析,SQL 执行计划优化,查询缓存。以及跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等。
-
Management Serveices & Utilities:系统管理和控制工具
备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据。 -
Connection Pool:连接池
进行身份验证、线程重用,连接限制,检查内存,数据缓存;管理用户的连接,线程处理等需要缓存的需求。 -
SQL Interface:SQL 接口
进行 DML、DDL,存储过程、视图、触发器等操作和管理;用户通过 SQL 命令来查询所需结果。 -
Parser:解析器
查询翻译对象的特权;SQL 命令传递到解析器的时候会被解析器验证和解析。 -
Optimizer:查询优化器
-
Cache 和 Buffer:查询缓存
全局和引擎特定的缓存和缓冲区
服务层的内部结构:
1.3、存储引擎层
第三层为存储引擎层,存储引擎负责MySQL中数据的存储和提取,服务器通过API于存储引擎进行通信。
负责 MySQL 中数据的存储与提取。 服务器中的查询执行引擎通过 API 与存储引擎进行通信,通过接口屏蔽了不同存储引擎之间的差异。MySQL 采用插件式的存储引擎。MySQL 为我们提供了许多存储引擎,每种存储引擎有不同的特点。我们可以根据不同的业务特点,选择最适合的存储引擎。如果对于存储引擎的性能不满意,可以通过修改源码来得到自己想要达到的性能。例如阿里巴巴的 X-Engine,为了满足企业的需求 facebook 与 google 都对 InnoDB 存储引擎进行了扩充。
-- 命令查看系统支持的各个存储引擎信息
show engines;
-- 查看系统变量
-- default_storage_engine 默认存储引擎
-- default_tmp_storage_engine 临时表存储引擎
show variables like '%storgage_engine%';
1.4、系统文件层