• 沒有找到結果。

分析当前数据库运行线程来定位效率低的查询,再通过华为云数据管理服务(Data Admin Service,简称DAS)提供的建议优化这些SQL语句来降低实例的CPU使用率以 提升系统效率。

步骤1 连接MySQL实例。

具体操作请参见《关系型数据库快速入门》,通过内网和公网连接实例的内容。

步骤2 执行以下命令,查看当前执行操作,定位效率低的查询。

show full processlist

查看Time和State列,如下图,长事务的ID为4038566。

步骤3 得到需要优化的查询后,您可以使用华为云数据管理服务(Data Admin Service,简 称DAS),通过SQL诊断查询,您可获知资源消耗大、执行耗时长、执行次数频繁的 SQL语句。可根据诊断建议进行优化,保持数据库性能的稳定性。

1. 登录到数据管理服务控制台。

2. 在顶部菜单栏选择“SQL操作 > SQL查询 > SQL诊断”,进入SQL诊断页面。

1-5 SQL 诊断-1

3. 在SQL诊断页面,单击“新增SQL性能诊断”,新增SQL诊断任务。在新增SQL性 能诊断弹出框中,您根据实际需要选择输入SQL语句或者上传SQL文件,然后单击

“确定”,完成创建SQL诊断任务。

1-6 SQL 诊断-2

1-7 SQL 诊断-3

4. 在SQL诊断列表页面,您可选择“数据库”、“日期范围”单击“搜索”,进行 筛选诊断报告。在诊断列表中,您可在“操作”栏查看诊断详情。

1-8 SQL 诊断任务查询

在SQL诊断详情页面,您可了解本次诊断任务的基本信息、诊断状态预览、诊断 列表,并查看SQL列表中SQL诊断详情内容,获取语句优化建议等信息。

1-9 SQL 诊断详情

1-10 诊断详情

说明

– SQL诊断功能会获取相关表结构和数据分布信息(非原始数据),该信息仅用于诊断逻 辑,不会存储到DAS服务器。

– 获取表结构和数据分布信息的过程中,可能会对实例带来额外负载,但对性能影响甚 微。

– SQL诊断历史是唯一存储在DAS服务器上的数据,如果执行删除操作后,也将彻底从服 务器上删除。

----结束

1.4.5 MySQL 数据库内存使用率过高怎么处理

对于用户核心业务相关的库

请扩容实例规格,具体请参见变更实例的CPU内存规格。

对于非用户核心业务相关的库

查看本地计算机的内存使用率,如果使用率曲线持续平缓,则无需处理。

对于用户核心业务相关但是数据库规格配置很高的库

1. 在业务低峰期,将数据库参数“performance_schema”的值调整为“OFF”,对 于MySQL 5.6及以下版本,需要重启数据库才能生效。

2. 通过CES监控面板,观察实例的内存使用情况。

如果实例的内存使用率仍持续保持较高:

– 请扩容实例规格。

– 调整数据库参数“innodb_buffer_pool_size”的值:

数据库实例为2GB规格,参考值268,435,456 Byte(256MB)。

数据库实例为4GB规格,参考值1,073,741,824 Byte(1GB)。

数据库实例为8GB规格,参考值3,221,225,472 Byte(3GB)。

数据库实例内存大于8GB规格,则无需调整。

须知

● 请根据业务实际情况,调整参数“innodb_buffer_pool_size”的值。

● MySQL本身具有内存动态平衡机制,90%以下您可无需关注。

1.4.6 RDS 实例磁盘满导致实例异常的解决方法

随着业务数据的增加,原来申请的数据库磁盘容量可能会不足。尤其当实例显示“磁 盘空间满”状态,且数据库不可进行写入操作,会导致实例异常,从而影响业务正常 运行。