暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

gaussdb中什么是归一化SQL

小小星月明 2025-02-14
185

在 GaussDB 中,归一化 SQL(Normalized SQL)是指将接收到的每个 SQL 语句进行解析和处理,生成一个唯一的标识符(Unique SQL ID),用于标识一类相似的 SQL 语句。归一化 SQL 的主要目的是为了更高效地统计和分析 SQL 语句的执行情况,从而为性能调优和维护提供依据

归一化 SQL 的定义

归一化 SQL 是通过对 SQL 语句的文本字符串进行解析,生成内部解析树,然后遍历解析树并忽略其中的常数值,以一定的算法计算出来一个整数值作为 Unique SQL ID。这个 ID 用来唯一标识一类 SQL 语句。例如,以下两条 SQL 语句:

sql复制
select * from t1 where id = 1;
select * from t1 where id = 2;

这两条 SQL 语句的统计信息会汇聚到同一个 Unique SQL 上:

sql复制
select * from t1 where id = ?;

归一化 SQL 的功能

归一化 SQL 的主要功能包括:

  • 统计执行信息:归一化 SQL 可以统计 SQL 语句的执行次数、响应时间、Cache/IO 信息、行活动等。这些信息可以帮助数据库管理员了解 SQL 语句的执行性能

  • 性能调优:通过归一化 SQL,可以定位消耗不同资源的 Top SQL,为集群性能调优和维护提供依据

  • 查询过滤:归一化 SQL 的特征值(如 unique_sql_idsql_hash)可以用于查询过滤,帮助快速定位和分析特定的 SQL 语句

归一化 SQL 的视图

GaussDB 提供了 GS_INSTR_UNIQUE_SQL 视图,用于显示当前节点收集的 Unique SQL 的执行信息。该视图包括以下内容:

  • Unique SQL ID:归一化的 Unique SQL ID。

  • 归一化后的 SQL 文本:归一化后的 SQL 语句文本。

  • 执行次数:成功执行的次数。

  • 响应时间:数据库内部的 SQL 执行时间,包括最小、最大和总时间。

  • Cache/IO 信息:包含块的物理读、逻辑读次数。

  • 行活动:包含 SELECT 语句的结果集返回行数、更新行、插入行、删除行等信息

使用归一化 SQL 的注意事项

  • 统计信息的约束:只有执行成功的 SQL 才会显示其详细的统计信息,否则可能只记录查询、节点、用户等信息

  • 事务块的支持:对于类似 BEGIN;...;COMMIT; 等形式的事务块,当前不支持统计子句的解析时间(parse_time

  • Unique SQL 的超时时间:可以通过 GUC 参数设置 Unique SQL 的超时时间,后台线程会定期检查并删除过期的 Unique SQL

通过使用归一化 SQL,GaussDB 能够更高效地管理和分析 SQL 语句的执行情况,从而提升数据库的性能和稳定性。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论