赞
踩
1. 问题原因
1.1 应用负载(QPS)高
1.2. 查询执行成本(查询访问表数据行数 avg_lgc_io)高
2. 解决方法
2.1 应用负载(QPS)高
2.2 查询语句执行成本(查询访问表数据行数)高
3. 避免出现 CPU 使用率达到 100% 影响业务的一般原则
1. 问题原因:
应用提交的查询(包括数据修改操作)执行所需大量的逻辑读(逻辑IO,执行查询所需访问的表的数据行数),系统需要消耗大量的 CPU 资源用于维护从存储系统读取到内存中的数据一致性。
注:本文不排除由于MySQL 其他原因(比如大量行锁冲突、行锁等待)或后台任务原因导致的实例 CPU 使用率高,但这种情况出现的概率是非常低的,在此不做讨论。
通过一个简化的模型来说明 系统资源、语句执行成本 以及 QPS(Query Per Second 每秒执行的查询数)之间的关系:
条件:应用模型恒定(应用没有修改),
avg_lgc_io:每条查询执行需要的平均逻辑 IO
total_lgc_io:实例 CPU 资源单位时间能够处理的 逻辑IO 总量
公式:
total_lgc_io = avg_lgc_io x QPS -- 单位时间 CPU 资源 = 查询执行平均成本 x 单位时间执行的查询数量
下面列出 2 种典型 CPU 使用 100% 的场景:
1.1 应用负载(QPS)高
特征:实例的 QPS(每秒执行的查询次数)高,查询比较简单、执行效率高、优化余地小。
表现:没有出现慢查询(或者慢查询不是问题主要原因),QPS 和 CPU
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。