【摘要】 GaussDB(DWS)提供了强大的运维工具TopSQL,对运行中和运行完成的语句全方面记录,帮助用户定位性能问题。本文主要介绍TopSQL的基本原理、能力及典型应用场景,并讲解如何使用好TopSQL这把运维利刃。
文章目录
在生产环境中,难免会面临查询语句出现异常中断、阻塞时间长等突发问题,如果没能及时记录信息,事后就需要投入更多的人力及时间成本进行问题的定位和解决,有时还无法定位到错误出现的地方。为了解决这种场景,GaussDB(DWS)提供了强大的运维工具TopSQL,对运行中和运行完成的语句全方面记录,帮助用户定位性能问题。而TopSQL被誉为性能定位、劣化分析等的重要基石,为用户提供覆盖内存、耗时、IO、网络、空间等多方面的信息记录。接下来将介绍TopSQL的基本原理、能力及典型应用场景,并讲解如何使用好TopSQL这把运维利刃。
一、TopSQL简介
1. 什么是TopSQL?
TopSQL是GaussDB(DWS)数据库中内置的一款功能十分强大的性能分析工具。在实际生产环境中,难免会出现一些突发情况,导致查询语句出现异常中断、阻塞时间长等情况,如果当时没能记录下来,那么事后就要投入更多的人力以及时间成本去对错误进行定位和解决,有时还往往定位不到错误出现的地方。
为了解决这样的窘迫的情况,GaussDB(DWS)开发了TopSQL功能,对运行中的语句记录(实时TopSQL),对运行完成的语句进行记录(历史TopSQL)。
TopSQL作为GaussDB(DWS)的性能诊断工具,记录GaussDB(DWS)中各个作业、算子级别的资源使用数据、耗时数据,包括下盘信息、内存、网络、耗时、自诊断告警、基础信息等作业执行的数据。
2. 怎么实现TopSQL功能?
在GaussDB中,通过设定GUC参数,来开启TopSQL功能,由于小功能不同,那么相应的小功能的GUC参数也会有所区别。
大部分都是开关类型的,想要自定义场景就只需要关注传参类型的参数,以及参数之间的依赖关系即可。下一章节将介绍常用系统表和参数的设置介绍。
开启TopSQL功能必须要确保如下参数设置(下列参数为开启TopSQL功能的必要条件):
- user_workload_manager = on(默认为on)
- enable_resource_track = on(默认为on)
- resource_track_level = query / perf / operator(默认为query)
- 若是8.2.1.200版本,新增一个枚举参数为operator_realtime
二、TopSQL系统表和参数介绍
1. 公共GUC参数
以GaussDB(DWS) 8.1.3版本为例,推荐TopSQL相关的一些参数,如下表所示:
参数配置 | 解释及用法 |
---|---|
enable_resource_track:on | 资源监控总开关,开启后TopSQL才能发挥作用。 |
enable_resource_record:on | 控制实时TopSQL是否做历史TopSQL转储,813版本推荐打开,方便对历史问题做定位分析。 |
resource_track_cost:0 | 执行代价超过预值,才会被记录,建议保持默认值0。 |
resource_track_duration:1 | 实时TopSQL是否转储到历史TopSQL,默认值为60秒,建议设置为1。 |
resource_track_level:query/perf | 语句级TopSQL信息记录到历史TopSQL的系统表中。 |
TopSQL_retention_time:30 | TopSQL老化时间为30秒,建议保持默认值。 |
enable_track_record_subsql:按需开启 | 控制子查询是否记录到TopSQL系统表中。 |
TopSQL系统表关键字段:
字段 | 字段说明 |
---|---|
username | 用户名 |
block_time | 排队时间,辅助定位CCN场景 |
Start_time | 语句执行的开始时间 |
duration | 语句执行时长,重 |