1. MySQL架构逻辑设计
1.1 MySQL的逻辑架构图
Mysql的架构总体分为四层:
-
客户端:各种语言都提供了连接mysql数据库的方法,比如jdbc、php、go等,可根据选择 的后端开发语言选择相应的方法或框架连接mysql
-
server层:包括连接器、查询缓存、分析器、优化器、执行器等,涵盖mysql的大多数核心服务功能,以及所有的内置函数(例如日期、世家、数 学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
-
存储引擎层:负责数据的存储和提取,是真正与底层物理文件打交道的组件。 数据本质是存储在磁盘上的,通过特定的存储引擎对数据进行有组织的存放并根据业务需要对数据进行提取。存储引擎的架构模式是插件式的,支持Innodb,MyIASM、Memory等多个存储引擎。现在最常用的存储引擎是Innodb,它从mysql5.5.5版本开始成为了默认存储引擎。
-
物理文件层:存储数据库真正的表数据、日志等。物理文件包括:redolog、undolog、binlog、errorlog、querylog、slowlog、data、index等。
- binlog由server层产生,无论什么搜索引擎都有binlog;redolog只有innodb存储引擎产生。
1.2 什么是MySQL高性能?
什么是高性能,每个人都有不同的回答,如:“每秒查询次数”、“CPU利用率”、“可扩展性”。《高性能Mysql》中给出的定义是“响应时间”,它认为CPU利用率来作为高性能的指标是悖论,CPU利用率低恰恰说明性能差对cpu利用率不高,真正有效的是“查询响应时间”。
mysql的高性能主要体现在写和读上,在写的层面公司DBA已经进行了主从主备的高可用部署,同时对redolog、binlog等有很好的管理,基于我们目前对快速读的需求比较多,本文主要探讨怎么高性能读?
1.3 基本概念
原理先行,实践为后,我们需要先明白mysql优化中常见的基本概念。
(1) 数据页