跳到主要内容

慢查询分析

NineData 的慢查询分析功能用于定位慢 SQL 和优化数据库,帮助开发人员和数据库管理员找出影响数据库性能的异常查询,并提供优化建议,主要包括慢日志采集、诊断和优化。

背景信息

慢查询通常会对企业数据库产生负面影响,其产生原因有多种因素,包括复杂的查询语句、不充分的索引设计、大量数据的处理、硬件资源不足等,导致数据库服务器消耗更多的资源和时间来执行查询,甚至导致数据库死机,无法响应业务请求。

慢查询分析是数据库管理和性能优化领域中的一个关键功能,其主要目的是监测数据库系统中影响数据库性能的异常查询,以便识别性能瓶颈、改进查询性能并提高系统的响应时间。

什么是 NineData 慢查询分析?

NineData 慢查询分析是一种数据库优化工具,用来帮助开发人员和数据库管理员找出影响数据库性能的查询,并提供优化建议,旨在提升数据库的运行效率和稳定性。

NineData 慢查询分析具有如下特性:

  • 慢查询采集:从数据库中收集影响数据库性能的查询并记录。记录中包含了查询的详细信息,如查询语句、执行时间、返回行数等。
  • 慢查询诊断:对收集后的慢查询进行深入的分析,找出可能导致查询速度变慢的原因。包括索引不足、表设计不合理、查询语句编写不当等各种因素。通过诊断可以更好地理解为什么某个查询会变慢,为优化提供依据。
  • 慢查询优化:在诊断的基础上进行。一旦找出了导致查询变慢的原因,系统会自动分析优化方式,可能包括添加或修改索引、调整表结构、重写查询语句等。优化的目标是提高查询的执行速度,提升数据库的整体性能。

使用场景

  • 数据库性能优化:如果您的数据库性能下降,或者有一些查询的执行时间过长,可以使用 NineData 慢查询分析来找出问题并进行优化。
  • 数据库 DevOps 和调试:在开发或调试 SQL 查询时,您可以使用NineData慢查询分析来检查查询的性能,并找出可能的优化点。
  • 数据库运维:对于数据库管理员来说,NineData 慢查询分析是一个强大的运维工具,可以帮助他们监控数据库的性能,及时发现并解决问题。

前提条件

  • 已创建或加入组织,并且该组织已开通,同时请确保您的包年包月订阅未过期。更多信息,请参见管理组织
  • 当前账号已切换到目标组织。更多信息,请参见切换到组织
  • 您使用的数据源为 MySQL、PostgreSQL、DB2、Oracle。
  • 您已将需要进行慢查询分析的数据源录入到 NineData 控制台,更多信息,请参见创建数据源
  • 您的 MySQL 数据源中已开启慢查询日志。开启方式请参见附录
  • 您的 PostgreSQL 数据源中已安装 pg_stat_statements 插件并完成配置。操作方式请参见附录 2

步骤一:开启慢查询采集

您需要先开启目标数据源的功能,才可以使用慢查询分析功能。

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 单击页签,展示所有支持慢查询分析功能的数据源,单击目标数据源右侧列的开关,开启该功能。

    提示

    如果您的 MySQL 数据库中未开启慢日志功能,页面会报错,请参见附录开启后重新尝试。

步骤二:查看慢查询大盘

慢查询次数的报表化呈现可以帮助您更清晰地了解慢查询的发展趋势。通过报表化的数据,您可以迅速识别数据库性能中的异常波动,及时采取措施解决问题,进一步提高系统的稳定性和性能表现。

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页签,默认展示所有开启了慢查询分析功能的数据源在内的慢查询趋势图,您可执行如下操作:

    slow_query_dashboard

    序号
    功能
    说明
    慢查询的时间范围选择需要在大盘中展示的慢查询时间范围,支持自定义开始时间和结束时间,同时支持预置时间段的选择:
    数据源筛选通过是否已收藏、标签名称、数据源类型、环境名称、数据源名称快速筛选需要查看的数据源。
    分组显示可基于标签、环境、数据源类型、数据源名称对慢查询进行分组显示。
    下载慢查询报表基于筛选后的大盘情况,下载慢查询报表。报表为 EXCEL 表格,包含数据源名称、连接地址、慢查询数量、采集时间等关键信息。单击下载后,单击页签,并单击目标报表右侧列的可以将报表下载至本地。
    查看慢查询详情单击目标数据源右侧列的,可以跳转至该数据源的慢查询详情页面。更多信息,请参见步骤三

步骤三:查看慢查询详情

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页签,单击目标数据源右侧列的

  4. 页面默认展示了该数据源 3 天内产生的所有慢查询记录,您可以根据需求调整时间范围。
    提示

    最多展示 3 天以内的慢查询记录。

  5. 慢查询分析功能分两层,最外层为 SQL 模版,即不包含具体参数的 SQL 框架,所有使用了相同 SQL 模版的慢查询都会被记录在该 SQL 模版下,第二层即具体的 SQL 语句。单击目标 SQL 模版左侧的 +,即可展开当前 SQL 模版下的所有 SQL 语句,以便定位具体库、执行时间、返回行数、执行的用户等详情。

  6. 单击目标 SQL 模版SQL 语句右侧的,可以查看针对该慢查询的等信息。

    提示

    SQL 模版选取的是其下方执行时间最长的 SQL 语句的记录。

  7. 单击区域右上角的,然后选择,即可创建报表。回到上一个页面,单击页签,并单击目标报表右侧列的可以将报表下载至本地。

附录:开启 MySQL 的慢日志功能

  1. 通过具备 SYSTEM_VARIABLES_ADMINSUPER 权限的账号登录到 MySQL 数据库。关于权限的更多信息,请参见System Variable Privileges

  2. 执行下列命令开启慢日志。

    SET GLOBAL slow_query_log=1;//开启慢查询日志。
    SET GLOBAL log_output='TABLE';//将慢查询日志存入 mysql 库中的 slow_log 表中。
    提示

    请关注 slow_log 表的大小,如果表太大影响业务,可以通过 TRUNCATE TABLE mysql.slow_log 命令清空该表。

  3. (可选)您可按需配置下列参数。

    SET GLOBAL long_query_time=1;//查询时间超过 1 秒的查询将定义为慢查询。
    SET GLOBAL log_queries_not_using_indexes=1; //未走索引的查询将定义为慢查询。
  1. 如需关闭 MySQL 数据库的慢日志功能,请执行 SET GLOBAL slow_query_log=0;

附录二:安装 pg_stat_statements 插件

  1. 在您的 PostgreSQL 数据库中,执行 CREATE EXTENSION IF NOT EXISTS pg_stat_statements; 创建 pg_stat_statements 插件。

  2. 打开您的 postgresql.conf 配置文件,配置如下两个参数即可。

    shared_preload_libraries = 'pg_stat_statements'
    pg_stat_statements.track = all

附录三:为数据源绑定标签

通过为特定的数据源配置标签,您可以根据业务逻辑、部门或其他需求,进行灵活的慢查询大盘分组展示,帮助您更精准地定位和解决性能瓶颈。

  1. 创建标签
  2. 在左侧导航栏单击 >
  3. 单击页签,找到需要绑定标签的数据源,将鼠标拖动到该数据源右侧列中,单击edit图标。
  4. 单击标签的下拉菜单选择目标标签,然后单击check图标确认绑定。