mysql(1)-逻辑架构
衡量指标
TPS
定义: 每秒传输的事务处理个数
公式: (COM_COMMIT+COM_ROLLBACK)/UPTIME
QPS
定义: 每秒查询处理量
公式: QUESTIONS/UPTIME
响应时间
定义: 执行sql等待返回结果的等待时间
逻辑架构
mysql逻辑架构主要包括:连接层,服务层,引擎层,存储层等.如下图
连接层
当mysql启动(mysql服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会创建一个新的线程处理(如果采取线程池,则分配一个空的线程)。每一个线程独立,拥有各自的内存处理空间。如果是查询请求则没有什么影响,但是修改数据,两个线程修改同一块内存会引发数据同步问题
服务层
安全处理
连接到数据库需要验证用户名和密码,一旦连接成功还要进行权限校验(某个库某个表的某个操作)
SQL处理
这一层的主要功能是sql语句的解析、优化,缓存的查询,mysql内置函数的实现.
查询(select)语句首先会查询缓存是否有相应结果,有就接返回,否则进行下一步(如果不是select语句,则直接进行下一步);
解析查询语句,创建一个内部数据结构(解析树),这个解析树主要用来sql语句的语法和语义的解析;
优化:优化sql语句,例如重写查询,决定表的读写顺序,以及选择需要的所以等。这一段用户是可以查询的,查询服务优化器是如何优化的,便于客户优化查询和修改配置达到最优化。如下图:
缓存
生产环境最好不要开启缓存,以免造成脏数据
查看当前缓存有没有开启
show variables like '%query_cache_type%'
查看缓存内存大小
SET GLOBAL query_cache_size = 4000;
修改缓存内存大小
SET GLOBAL query_cache_size = 134217728;
引擎层
查询当前数据库引擎
show engines;
查看默认数据库引擎
show variables like '%storage_engine%';
MyISAM
概述
mysql5.5之前默认的存储引擎,文件由MYD和MYI组成.
特性
- 并发级别与锁级别-表级锁
- 支持全文检索
- 支持数据压缩
使用场景
- 非事物型应用(数据仓库,报表,日志数据)
- 只读类应用
- 空间类应用(空间函数,坐标)
Innodb
概述
mysql5.5之后的默认存储引擎,支持系统表空间和独立表空间
系统表空间
- 有io瓶颈
- 不支持压缩数据
独立表空间(建议使用)
- 可以同时向多个文件刷新数据
- 支持数据压缩
特性
- 完全支持事务的ACID操作
- 支持行级锁(并发性更高)
适用场景
用于事务型应用
MyISAM和Innodb对比
存储层
上一篇: 20200915电商数据分析 - 偏逻辑思维(一)
下一篇: 网站赚钱 设计师可以通过网站接单子赚钱