1:数据库性能常用的度量指标
(1)运行时间 run time
(2)QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
(3)TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
2:数据库性能常见的依赖因素
(1)环境
a: 机器配置:
磁盘、存储文件系统规划;
CPU主频、核数;
linux OS系统内核配置:/etc/sysctl.conf; (配置生效时: sysctl -p) ;blog/20170412_04.md at master · digoal/blog · GitHub
网络带宽时延、网络带宽、防火墙;
资源限制:/etc/security/limits.conf
b: HA\集群架构(同步、异步复制策略)
c: 数据库参数(postgresql.conf 刷盘策略等, 下面会介绍一些常用的参数设置技巧)
(2)业务场景
表定义
数据量
SQL
事务隔离级别
并发度
3:数据库运行时间消耗
(1) 客户端:建连\断连, SQL发送、 结果集接受、处理
(2) 数据库服务端: 通信层(采用连接池、用户态网络、逻辑连接), SQL优化(优化)\执行层(线程池),写日志(并发)、数据刷盘(刷页线程、shared)、结果输出
(3) 网络延迟
4: SQL执行时间分析
SQL--->查询解析(词法分析token keyword、语法分析parsetree、语义分析querytree)---> 查询优化 (查询重写)---> 优化器 (代价估算、生成执行计划 plantree) -------> 绑参 ------> 执行器 ----->存储引擎
5: 逻辑上常见的SQL执行顺序【】
【7】select 【8】distinct 【11】<select_list>
【1】from <left_table>
【3】<join_type> join <right_table>
【2】on <join_condition>
【4】where <condition><