V2.3.0 版本的 OCP SQL 监控服务主要有 TopSQL 和 SlowSQL 两部分,目前可开放给 DBA 以及普通用户,用来定位集群运行性能异常及普通 SQL 执行异常,通过分析 TopSQL 和 SlowSQL,达到解决集群性能异常问题和提高 SQL 执行效率的目的。
区别
- TopSQL 为不同内容的 SQL 按执行效率高低进行排序展示;
- 慢查询为所有超过慢查询阈值的 SQL 按执行效率进行排序展示,可通过指定 SQL 内容分析某个具体 SQL 在不同时间段内性能变化的原因。
用途
- TopSQL查询结果通常可反映出一个 OB集群/租户/服务器在某段时间内所执行所有不同类型 SQL 的性能差异,通常用它可定位到数据库中性能较差的 SQL;
- 而慢查询查询结果通常可反映出某条 SQL 在不同的时间段内性能变化,通常用它可定位出 SQL 性能变化的原因。
TopSQL
您可以通过筛选条件筛选出异常的 SQL,并通过 SQL 历史趋势和物理执行计划来定位 SQL 执行异常的原因,从而解决您的问题。
操作步骤
- 登录 OCP 。
- 单击左侧导航栏 监控>TopSQL,进入 TopSQL 监控界面。
- 在页面上方,可选择目标集群组、集群、ZONE、服务器、租户以及时间范围维度(集群组和集群必选),建议时间起止时间不超过一天,否则可能导致界面查询超时。
- 在搜索到目标范围内的SQL集合后,在扩展列下拉列表勾选需要展示的性能指标,SQL类型下拉列表中勾选制定类型。
- 通常用户可通过响应时间、最慢一次执行耗时指标精确定位到对应的SQL,单击 SQL 序号,进入 SQL 详情界面,查看详细SQL文本及 SQL 历史趋势。
图二:SQL详情界面
- 在详情界面单击物理执行计划变化,通过物理执行计划找到 SQL 执行异常原因。
SlowSQL
慢 SQL 问题极大的影响数据库的稳定性。从数据库角度看:每个 SQL 执行都需要消耗一定 I/O 资源,SQL 执行的快慢,决定资源被占用时间的长短。假设总资源是 100,有一条慢 SQL 占用了 30 的资源共计 1 分钟。那么在这 1 分钟时间内,其他 SQL 能够分配的资源总量就是 70,如此循环,当资源分配完的时候,所有新的 SQL 执行将会排队等待,从而影响数据库系统的吞吐率。从应用的角度看:SQL 执行时间长意味着等待,在 OLTP 应用当中,用户的体验较差。所以当数据库出现负载高、性能抖动等问题,DBA 或者开发首先都会查看是否有慢 SQL 在执行。
操作步骤
- 登录 OCP。
- 单击左侧导航栏监控>SlowSQL,进入 SlowSQL 监控界面。
- 在页面上方,可选择群组、集群、租户、用户名、SQL_ID(通常相同执行计划的SQL拥有相同的SQL_ID)、Query SQL、时间维度,点击“搜索”后即可得到指定时间内包含“Query SQL”输入的内容的SQL统计,注意此界面展示指标为固定指标,无法像TopSQL结果指标一样进行自选指标。
- 单击查看,可看到具体SQL明细内容,其中 elapsed_time 指标单位为微秒。
说明
如上图所示,通过比较可看到两个相同执行计划的 SQL,由于具体参数不一样导致盘读数不一致,从而导致耗时差异。