ITPub博客

首页 > 数据库 > 数据库开发技术 > openGauss学习笔记-300 openGauss AI特性-AI4DBAI子功能-SQL Rewriter SQL语句改写

openGauss学习笔记-300 openGauss AI特性-AI4DBAI子功能-SQL Rewriter SQL语句改写

原创 数据库开发技术 作者:shuchaoyang 时间:2024-02-26 07:00:00 0 删除 编辑

openGauss学习笔记-300 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQL Rewriter SQL语句改写300.1 概述300.2 使用指导300.2.1 前提条件300.2.2 使用方法示例300.3 获取帮助300.4 命令参考300.5 常见问题处理

openGauss学习笔记-300 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQL Rewriter SQL语句改写

300.1 概述

SQL Rewriter是一个SQL改写工具,根据预先设定的规则,将查询语句转换为更为高效或更为规范的形式,使得查询效率得以提升。

说明:

  • 本功能不适用包含子查询的语句;

  • 本功能只支持SELECT语句和DELETE对整个表格删除的语句;

  • 本功能包含12个改写规则,对不符合改写规则的语句,不会进行处理;

  • 本功能会对原始查询语句和改写后语句进行屏幕输出,不建议对包含涉敏感信息的SQL语句进行改写;

  • union转union all规则避免了去重,从而提升了查询性能,所得结果有可能存在冗余;

  • 语句中如包含‘order by’+ 指定列名或‘group by’+ 指定列名,无法适用SelfJoin规则。

300.2 使用指导

300.2.1 前提条件

数据库状态正常、连接正常。

300.2.2 使用方法示例

以tpcc数据库为例:

gs_dbmind component sql_rewriter 5030 tpcc queries.sql --db-host 127.0.0.1 --db-user myname --schema public

queries.sql为需要改写的SQL,内容如下:

select cfg_name from bmsql_config group by cfg_name having cfg_name='1';
delete from bmsql_config;
delete from bmsql_config where cfg_name='1';

结果为多个改写后的查询语句,显示在屏幕(无法改写的语句,显示为空),如下:

+--------------------------------------------------------------------------+------------------------------+
| Raw SQL                                                                  | Rewritten SQL                |
+--------------------------------------------------------------------------+------------------------------+
| select cfg_name from bmsql_config group by cfg_name having cfg_name='1'; | SELECT cfg_name              |
|                                                                          | FROM bmsql_config            |
|                                                                          | WHERE cfg_name = '1';        |
| delete from bmsql_config;                                                | TRUNCATE TABLE bmsql_config; |
| delete from bmsql_config where cfg_name='1';                             |                              |
+--------------------------------------------------------------------------+------------------------------+

300.3 获取帮助

使用SQL Rewriter前,您可以通过以下指令获取帮助。

gs_dbmind component sql_rewriter --help

显示如下帮助信息:

usage:  [-h] [--db-host DB_HOST] [--db-user DB_USER] [--schema SCHEMA]
      db_port database file

SQL Rewriter

positional arguments:
db_port           Port for database
 database           Name for database
file               File containing SQL statements which need to rewrite

optional arguments:
 -h, --help         show this help message and exit
 --db-host DB_HOST Host for database
 --db-user DB_USER Username for database log-in
 --schema SCHEMA    Schema name for the current business data

密码通过管道输入或交互式输入,对于免密用户,任意输入都可通过检验。

300.4 命令参考

表 1 命令行参数说明

300.5 常见问题处理

  • SQL无法改写:请查看SQL是否符合改写规则或SQL语法是否正确。


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!


原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303582