2,压力测试 一是基准测试,所有测试数据和实际数据不一定相符合,但这样可以保证绝对的数据全面。
二是虚拟数据测试,根据真实数据为基础,造出假数据,但是这样造出来的数据有局限性,而且耗时,所以不推荐使用。
3,剖析数据库查询性能,耗时的位置有两个,一是查询时间,二是等待时间,然后通过MySql自带的慢查询日志或者第三方工具(比如Percona Server),判断查询时间,可以是从controller一直到db再返回去,也可以是只判断查询db的时间。
查询可以在一些典型的时间窗口如业务高峰期的一小时内记录查询,如果业务趋势比较均衡,一分钟甚至更短的时间内捕获需要优化的低效查询也是可行的,然后应该生成一个剖析报告(使用pt-query-digest工具),如果需要,则可以再查看日志中需要特别关注的部分,自上向下是比较好的方式,否则有可能像前面提到的,反而导致业务的逆优化。
附:###### 设置数据库属性的语句 set global XXXX = X 例如:
set global long_query_time=1
set global slow_query_log = on
查询语句:
show variables like XXXX 例如:
show variables like ‘%long_query_time%’;
show variables like ‘%slow_query_log%’
show profile
通过 set profiling = 1开启 查询分析
也可以在查询语句前加 explain 得出更多的分析资料,还有如下sql
SELECT
STATE,
SUM( duration ) AS Total_R,
ROUND( 100 * SUM( DURATION ) / ( SELECT SUM( DURATION ) FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = @query_id ), 2 ) AS Pct_R,
COUNT( * ) AS Calls,
SUM( DURATION ) / COUNT( * ) AS “R/Call”
FROM
INFORMATION_SCHEMA.PROFILING
WHERE
QUERY_ID = @query_id
GROUP BY
STATE
ORDER BY
Total_R DESC
mysql数据库
最新推荐文章于 2023-02-03 09:56:48 发布