tencent cloud

TDSQL-C MySQL 版

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
产品架构
产品规格
实例类型
产品功能列表
数据库版本
地域和可用区
常用概念
使用限制
使用规范建议
自研内核
内核概述
内核版本更新动态
内核优化版本
功能类特性
性能类特性
安全类特性
稳定性特性
分析引擎特性
内核问题检查与修复
购买指南
计费概述
产品价格
创建集群
变配说明
续费说明
欠费说明
退费说明
按量转包年包月
按量转 Serverless
增值服务计费说明
查看费用账单
快速入门
数据库审计
简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
查看审计任务
授权子用户使用数据库审计
Serverless 服务
Serverless 简介
创建和管理 Serverless 版集群
弹性管理工具
Serverless 资源包
多可用区部署
配置变更
常见问题
Serverless 成本预估器
操作指南
操作总览
控制台切换集群页面视图
数据库连接
实例管理
配置变更
实例形态管理
集群管理
只读实例管理
数据库代理
账号管理
数据库管理
数据库管理工具(DMC)
参数配置
多可用区部署
全球数据库
备份与恢复
操作日志
迁移数据
并行查询
列存索引 CSI
分析引擎
数据库安全和加密
监控与告警
SQL 基本操作
使用 SCF 连接 TDSQL-C MySQL 版
标签
实践教程
TDSQL-C MySQL 版数据库审计等保实践
通过 DTS 升级数据库版本 MySQL5.7至8.0
TDSQL-C MySQL 版使用规范
新版本控制台
数据库代理多连接地址实现多 RO 组
数据库代理的优势
如何选择存储空间计费模式
通过 DTS 构建异地灾备
为集群创建 VPC
如何进行数据恢复
如何解决 CPU 使用率高的问题
如何授权子用户查看监控
白皮书
安全白皮书
性能白皮书
故障处理
连接相关
性能相关
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
常见问题
基础概念
购买与计费
兼容与格式
连接与网络
功能特性
控制台操作
数据库表
性能与日志
数据库审计
TDSQL-C MySQL 版和云数据库 MySQL 有什么区别
相关协议
服务等级协议
服务条款
TDSQL-C 政策
隐私政策
数据处理和安全协议
通用参考
标准与认证
词汇表
联系我们
文档TDSQL-C MySQL 版实践教程如何解决 CPU 使用率高的问题

如何解决 CPU 使用率高的问题

PDF
聚焦模式
字号
最后更新时间: 2025-06-03 15:17:39

问题描述

TDSQL-C MySQL 版集群 CPU 利用率过高通常容易导致系统异常,例如:响应变慢、无法获取连接、超时等,大量的超时重试往往是性能“雪崩”的罪魁祸首。CPU 利用率过高场景,很多时候都是由异常 SQL 所导致,大量锁冲突、锁等待或事务未提交也有可能导致实例 CPU 利用率高。
当数据库执行业务查询、修改语句时,CPU 会先从内存中请求数据块:
如果内存中存在对应的数据,CPU 执行计算任务后会将结果返回给用户,可能涉及到排序类高消耗 CPU 的动作。
如果内存中不存在对应的数据,数据库会触发从磁盘获取数据的动作。
这两个数据获取过程分别称为逻辑读和物理读。因此,性能较低的 SQL,在执行时容易让数据库产生大量的逻辑读,从而导致 CPU 利用率过高,也可能让数据库产生大量的物理读,从而导致 IOPS 和 I/O 时延过高。

解决方案

数据库智能管家 DBbrain 为用户提供如下功能来排查和优化导致 CPU 利用率过高的异常 SQL 语句:
异常诊断:7 * 24小时异常发现诊断,提供实时优化建议。
慢 SQL 分析:针对当前实例出现的慢 SQL 进行分析,并给出慢 SQL 的优化建议。

方式一:使用“异常诊断”功能排查数据库异常情况(推荐)

异常诊断功能提供故障主动定位和优化,不需要任何数据库运维经验,不仅包括 CPU 利用率过高的异常,还几乎涵盖所有集群下读写实例或只读实例高频的异常和故障。
操作步骤及示例如下:
1. 登录 DBbrain 控制台,在左侧导航选择诊断优化,在上方选择异常诊断页。
2. 在左上角选择实例 ID(可输入和搜索),切换至目标实例。
3. 在页面中选择实时历史要查询的时间,若该时间段内存在故障,可在右侧的“诊断提示”中查看到概要信息。
4. 单击“实时/历史诊断”栏的查看详情诊断提示栏的诊断项可进入诊断详情页。
事件概要:包括诊断项、起止时间、风险等级、持续时长、概要等信息。
现象描述:异常事件(或健康巡检事件)的外在表现现象的快照和性能趋势。
智能分析:分析导致性能异常的根本原因,定位具体操作。
专家建议:提供优化指导建议,包括但不限于 SQL 优化(索引建议、重写建议)、资源配置优化和参数调优。
5. 选择优化建议页,即可查看 DBbrain 针对该故障给出的优化建议,本例中是 SQL 语句的优化建议。

方式二:使用“慢 SQL 分析”功能排查导致 CPU 利用率过高的 SQL

1. 登录 DBbrain 控制台,在左侧导航选择诊断优化,在上方选择慢 SQL 分析页。
2. 在左上角选择实例 ID(可输入和搜索),切换至目标实例。
3. 在页面中选择要查询的时间,若此实例在该时间段中有慢 SQL,SQL 统计会以柱形图的方式展示慢 SQL 产生的时间点和个数。 单击柱形图,下方的列表会显示对应的所有慢 SQL 信息(模板聚合之后的 SQL),右方会显示该时间段内 SQL 的耗时分布。
4. 针对 SQL 列表中 SQL 执行的数据进行判断和筛选,下面简单介绍一种判断方式:
4.1 先按照平均耗时(或者最大耗时)降序,重点关注耗时处在 top 的 SQL,不推荐使用总耗时,容易受到执行次数多而累加的干扰。
4.2 然后关注返回行数和扫描行数的值。
若发现“返回行数”与“扫描行数”值相等的 SQL,大概率是全表查找并返回了。
若发现几行 SQL 都有很多扫描行数,但返回行数都为0或特别小,说明系统产生了大量的逻辑读和物理读。当查找的数据量过大且内存不足时,该请求必然会产生大量的物理 I/O 请求,导致 I/O 资源大量消耗;大量的逻辑读便会占用大量的 CPU 资源,导致 CPU 利用率过高。
5. 单击 SQL 语句,可查看该 SQL 语句的详情、资源消耗以及优化建议。
分析页:可查看完整的 SQL 模板、SQL 样例以及优化建议和说明,可根据 DBbrain 给出的专家建议优化 SQL,提升 SQL 性能,降低 SQL 执行的耗时。
统计页:可根据统计报表的总耗时占比、总锁等待时间占比、总扫描行数占比、总返回行数占比,横向分析该条慢 SQL 产生的具体原因,以及进行对应优化。
明细页:可查看该类型的 SQL 的 user 来源、IP 来源、数据库以及其他明细信息。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈