GaussDB-支持SQL PATCH

GaussDB-支持SQL PATCH

可获得性

本特性自503.1.0版本开始引入。

特性简介

SQL PATCH能够在避免直接修改用户业务语句的前提下对查询执行的方式做一定调整。在发现查询语句的执行计划、执行方式未达预期的场景下,可以通过创建查询补丁的方式,使用Hint对查询计划进行调优或对特定的语句进行报错短路处理。

客户价值

在业务产生查询计划不优导致的性能问题或系统内部错误导致服务不可用问题时,可以在数据库内通过运维函数调用对特定的场景进行调优或提前报错,以规避更严重的问题,能够大幅降低上述问题的运维成本。

特性描述

SQL PATCH主要设计给DBA、运维人员及其他需要对SQL进行调优的角色使用,用户通过其他运维视图或定位手段识别到业务语句存在计划不优导致的性能问题时,可以通过创建SQL PATCH对业务语句进行基于Hint的调优。目前支持行数、扫描方式、连接方式、连接顺序、PBE custom/generic计划选择、语句级参数设置、参数化路径的Hint。此外,对于部分由特定语句触发系统内部问题导致系统可服务性受损的语句,在不对业务语句变更的情况下,也可以通过创建用于单点规避的SQL PATCH,对问题场景提前报错处理,避免更大的损失。

SQL PATCH的实现基于Unique SQL ID,所以需要打开相关的运维参数才可以生效(enable_resource_track = on,instr_unique_sql_count > 0),Unique SQL ID在WDR报告和慢SQL视图中都可以获取到,在创建SQL PATCH时需要指定Unique SQL ID,对于存储过程内的SQL则需要设置参数 instr_unique_sql_track_type = 'all' 后在dbe_perf.statement_history视图中查询Unique SQL ID。

特性增强

无。

特性约束

  1. 仅支持针对Unique SQL ID添加补丁,如果存在Unique SQL ID冲突,用于Hint调优的SQL PATCH可能影响性能,但不影响语义正确性。
  2. 仅支持不改变SQL语义的Hint作为PATCH,不支持SQL改写。
  3. 不支持逻辑备份、恢复。
  4. 不支持在DN上创建SQL PATCH。
  5. 仅初始用户、运维管理员、监控管理员、系统管理员用户有权限执行。
  6. 库之间不共享,创建SQL PATCH时需要连接目标库。如果创建SQL PATCH的CN被剔除并触发全量Build,则会继承全量Build的目标CN中的SQL PATCH,因此建议在各个CN上尽量都创建对应的SQL PATCH。
  7. CN之间由于Unique SQL ID不同,不共享SQL PATCH,需要用户手动在不同的CN上创建对应的SQL PATCH。
  8. 限制在存储过程内的SQL PATCH和全局的SQL PATCH不允许同时存在。
  9. 使用PREPARE + EXECUTE语法执行的预编译语句执行不支持使用SQL PATCH。
  10. SQL PATCH不建议在数据库中长期使用,只应该作为临时规避方法。遇到内核问题所导致的特定语句触发数据库服务不可用问题,以及使用Hint进行调优的场景,需要尽快修改业务或升级内核版本解决问题。并且升级后由于Unique SQL ID生成方法可能变化,可能导致规避方法失效。
  11. 当前,除DML语句之外,其他SQL语句(如CREATE TABLE等)的Unique SQL ID是对语句文本直接哈希生成的,所以对于此类语句,SQL PATCH对大小写、空格、换行等敏感,即不同的文本的语句,即使语义相同,仍然需要对应不同的SQL PATCH。对于DML,则同一个SQL PATCH可以对不同入参的语句生效,并且忽略大小写和空格。

依赖关系

本特性依赖于资源实时监控功能。对于不同的语句,数据库无法保证生产的Unique SQL ID哈希值全局唯一,如果不同的语句生成的Unique SQL ID冲突,会导致SQL PATCH命中预期外的其他语句。其中使用DBE_SQL_UTIL.create_hint_sql_patch/DBE_SQL_UTIL.create_remote_hint_sql_patch接口创建的用于调优的Hint PATCH可能会影响错误命中语句的性能,使用DBE_SQL_UTIL.create_abort_sql_patch/DBE_SQL_UTIL.create_remote_abort_sql_patch接口创建的用于避险的Abort PATCH需要谨慎使用。

 
posted @ 2024-10-30 09:06  jerrywang1983  阅读(10)  评论(0)    收藏  举报