From 43a2c2df774de97c5f411e47e9750eceedcd6570 Mon Sep 17 00:00:00 2001 From: shijuzheng1997 Date: Wed, 19 Feb 2025 14:10:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=8C=96=E5=8A=9F=E8=83=BD=E7=9B=B8=E5=85=B3=E8=B5=84?= =?UTF-8?q?=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../figures/auto_parameterization_1.png | Bin 0 -> 55637 bytes ...50\345\217\202\346\225\260\345\214\226.md" | 66 ++++++++++++++++++ ...26\345\231\250\351\200\211\351\241\271.md" | 23 ++++++ content/docs-lite/zh/menu/index.md | 1 + .../figures/auto_parameterization_1.png | Bin 0 -> 55637 bytes ...50\345\217\202\346\225\260\345\214\226.md" | 66 ++++++++++++++++++ ...26\345\231\250\351\200\211\351\241\271.md" | 23 ++++++ content/zh/menu/index.md | 1 + 8 files changed, 180 insertions(+) create mode 100644 content/docs-lite/zh/docs/AboutopenGauss/figures/auto_parameterization_1.png create mode 100644 "content/docs-lite/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" create mode 100644 content/zh/docs/AboutopenGauss/figures/auto_parameterization_1.png create mode 100644 "content/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" diff --git a/content/docs-lite/zh/docs/AboutopenGauss/figures/auto_parameterization_1.png b/content/docs-lite/zh/docs/AboutopenGauss/figures/auto_parameterization_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd3aad03d54af377aa08028f704b73ed1f10188 GIT binary patch literal 55637 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 literal 0 HcmV?d00001 diff --git "a/content/docs-lite/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" "b/content/docs-lite/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" new file mode 100644 index 000000000..cbffa5084 --- /dev/null +++ "b/content/docs-lite/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" @@ -0,0 +1,66 @@ +# 自动参数化 + +## 可获得性 + +本特性自openGauss 7.0.0-RC1版本开始引入。 + +## 特性简介 + +openGauss的自动参数化功能是在需要反复执行相似/相同的SQL简单语句的情境下,通过复用执行计划缓存以减少SQL语句的执行时间。 + +## 客户价值 + +提升大量相似简单SQL重复执行情况下的性能表现。 + +## 特性描述 + +在存在大量相似/重复的简单SQL语句的场景下,对SQL语句进行参数化操作, 将其作为键值,并将相应的执行计划进行缓存,后续可通过相同参数化SQL语句直接寻找对应执行计划缓存,进而减少SQL语句执行时在查询重写,计划生成步骤所消耗的时间。 + +![](./figures/auto_parameterization_1.png) + +## 特性增强 + +无。 + +## 特性约束 + +- 仅支持IUD(Insert, Update, Delete)三类DML。 +- 仅支持Simple Query Protocol, 不支持Extended Query Protocol。 +- SQL语句的长度必须小于等于512。 +- 不支持RETURNING关键词。 +- 不支持WITH CLAUSE。 +- 不支持UPSERT CLAUSE。 +- 不支持HINT。 +- 不支持子查询。 +- 不支持ORDER BY关键词。 +- 不支持LIMIT关键词。 +- 不支持函数。 +- 不支持COLLATE关键词。 +- 不支持值的类型转换。 +- 不支持使用NULL关键词。 +- 不支持IGNORE关键词。 +- 不支持DEFAULT VALUES与DEFAULT关键词。 +- 不支持USING关键词。 +- 不支持ON DUPLICATE KEY UPDATE语法。 +- 不支持PARTITION关键词。 +- 最大可存储缓存计划为512。 + +## 依赖关系 + +无。 + +## 使用指导 + +自动参数化功能由会话级别GUC参数控制,开启相关参数后满足条件的SQL语句将会通过自动参数化功能处理。下列参数的设置可参考[此处](../DatabaseReference/其他优化器选项.md#section6842184123547)进行设置。 + +- **开启自动参数化功能** + +``` +SET ENABLE_QUERY_PARAMETERIZATION=ON; +``` + +- **设置最大可缓存的执行计划数量** + +``` +SET MAX_PARAMETERIZED_QUERY_STORED=512; +``` diff --git "a/content/docs-lite/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" "b/content/docs-lite/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" index 476c6bd53..4f292aa3c 100644 --- "a/content/docs-lite/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" +++ "b/content/docs-lite/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" @@ -807,3 +807,26 @@ set sql_beta_feature=none; - off:表示允许计划缓存变更结果类型格式。 **默认值**:true + +## enable\_query\_parameterization + +**参数说明**:该参数为自动参数化功能控制参数,开启该功能时满足条件的SQL语句将会进入参数化流程进行处理。 + +该参数属于USERSET类型参数,请参考[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:布尔型。 + +- on:开启自动参数化功能。 +- off:关闭自动参数化功能。 + +**默认值**:off + +## max\_parameterized\_query\_stored + +**参数说明**:该参数用于设置自动参数化功能开启时, 最大可缓存的执行计划数量。 + +该参数属于USERSET类型参数,请参考[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,1\~512。 + +**默认值**:256 \ No newline at end of file diff --git a/content/docs-lite/zh/menu/index.md b/content/docs-lite/zh/menu/index.md index 284b6daf7..f088f8552 100644 --- a/content/docs-lite/zh/menu/index.md +++ b/content/docs-lite/zh/menu/index.md @@ -41,6 +41,7 @@ headless: true - [行存转向量化]({{< relref "./docs/AboutopenGauss/行存转向量化.md" >}}) - [子事务并发回滚流程优化]({{< relref "./docs/AboutopenGauss/子事务并发回滚流程优化.md" >}}) - [大页内存]({{< relref "./docs/AboutopenGauss/大页内存.md" >}}) + - [自动参数化]({{< relref "./docs/AboutopenGauss/自动参数化.md" >}}) - [高可用]({{< relref "./docs/AboutopenGauss/高可用.md" >}}) - [主备机]({{< relref "./docs/AboutopenGauss/主备机.md" >}}) - [逻辑复制]({{< relref "./docs/AboutopenGauss/逻辑复制.md" >}}) diff --git a/content/zh/docs/AboutopenGauss/figures/auto_parameterization_1.png b/content/zh/docs/AboutopenGauss/figures/auto_parameterization_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd3aad03d54af377aa08028f704b73ed1f10188 GIT binary patch literal 55637 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 literal 0 HcmV?d00001 diff --git "a/content/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" "b/content/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" new file mode 100644 index 000000000..cbffa5084 --- /dev/null +++ "b/content/zh/docs/AboutopenGauss/\350\207\252\345\212\250\345\217\202\346\225\260\345\214\226.md" @@ -0,0 +1,66 @@ +# 自动参数化 + +## 可获得性 + +本特性自openGauss 7.0.0-RC1版本开始引入。 + +## 特性简介 + +openGauss的自动参数化功能是在需要反复执行相似/相同的SQL简单语句的情境下,通过复用执行计划缓存以减少SQL语句的执行时间。 + +## 客户价值 + +提升大量相似简单SQL重复执行情况下的性能表现。 + +## 特性描述 + +在存在大量相似/重复的简单SQL语句的场景下,对SQL语句进行参数化操作, 将其作为键值,并将相应的执行计划进行缓存,后续可通过相同参数化SQL语句直接寻找对应执行计划缓存,进而减少SQL语句执行时在查询重写,计划生成步骤所消耗的时间。 + +![](./figures/auto_parameterization_1.png) + +## 特性增强 + +无。 + +## 特性约束 + +- 仅支持IUD(Insert, Update, Delete)三类DML。 +- 仅支持Simple Query Protocol, 不支持Extended Query Protocol。 +- SQL语句的长度必须小于等于512。 +- 不支持RETURNING关键词。 +- 不支持WITH CLAUSE。 +- 不支持UPSERT CLAUSE。 +- 不支持HINT。 +- 不支持子查询。 +- 不支持ORDER BY关键词。 +- 不支持LIMIT关键词。 +- 不支持函数。 +- 不支持COLLATE关键词。 +- 不支持值的类型转换。 +- 不支持使用NULL关键词。 +- 不支持IGNORE关键词。 +- 不支持DEFAULT VALUES与DEFAULT关键词。 +- 不支持USING关键词。 +- 不支持ON DUPLICATE KEY UPDATE语法。 +- 不支持PARTITION关键词。 +- 最大可存储缓存计划为512。 + +## 依赖关系 + +无。 + +## 使用指导 + +自动参数化功能由会话级别GUC参数控制,开启相关参数后满足条件的SQL语句将会通过自动参数化功能处理。下列参数的设置可参考[此处](../DatabaseReference/其他优化器选项.md#section6842184123547)进行设置。 + +- **开启自动参数化功能** + +``` +SET ENABLE_QUERY_PARAMETERIZATION=ON; +``` + +- **设置最大可缓存的执行计划数量** + +``` +SET MAX_PARAMETERIZED_QUERY_STORED=512; +``` diff --git "a/content/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" "b/content/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" index 8f63888a3..e29c3d995 100644 --- "a/content/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" +++ "b/content/zh/docs/DatabaseReference/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" @@ -844,3 +844,26 @@ OPTIMIZE\_PLAN表示通过动态规划算法进行代价估算的最优plan, - off:表示允许计划缓存变更结果类型格式。 **默认值**:true + +## enable\_query\_parameterization + +**参数说明**:该参数为自动参数化功能控制参数,开启该功能时满足条件的SQL语句将会进入参数化流程进行处理。 + +该参数属于USERSET类型参数,请参考[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:布尔型。 + +- on:开启自动参数化功能。 +- off:关闭自动参数化功能。 + +**默认值**:off + +## max\_parameterized\_query\_stored + +**参数说明**:该参数用于设置自动参数化功能开启时, 最大可缓存的执行计划数量。 + +该参数属于USERSET类型参数,请参考[表1](../DatabaseAdministrationGuide/重设参数.md#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,1\~512。 + +**默认值**:256 \ No newline at end of file diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index dd1d885fc..1917fa35b 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -52,6 +52,7 @@ headless: true - [用户态网络]({{< relref "./docs/AboutopenGauss/用户态网络.md" >}}) - [非资源池化主备同步加速]({{< relref "./docs/AboutopenGauss/非资源池化主备同步加速.md" >}}) - [HTAP 行列融合]({{< relref "./docs/AboutopenGauss/行列融合.md" >}}) + - [自动参数化]({{< relref "./docs/AboutopenGauss/自动参数化.md" >}}) - [高可用]({{< relref "./docs/AboutopenGauss/高可用.md" >}}) - [主备机]({{< relref "./docs/AboutopenGauss/主备机.md" >}}) - [逻辑复制]({{< relref "./docs/AboutopenGauss/逻辑复制.md" >}}) -- Gitee