From 384e361e2ece2ef7cc1e39735b11e993b6fdcce6 Mon Sep 17 00:00:00 2001 From: "yongjiang.qi" Date: Mon, 30 Dec 2024 14:51:57 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(mogdb):=E6=96=B0=E5=A2=9E5.0.10?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../about-mogdb/mogdb-new-feature/5.0.10.md | 70 +++++++++++++++++++ .../mogdb-new-feature/release-note.md | 1 + .../v5.0/about-mogdb/terms-of-use.md | 2 +- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md diff --git a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md new file mode 100644 index 00000000..1b45044c --- /dev/null +++ b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md @@ -0,0 +1,70 @@ +--- +title: MogDB 5.0.10 +summary: MogDB 5.0.10 +author: qiyongjiang +date: 2024-12-31 +--- + +# MogDB 5.0.10 + +## 1. 版本说明 + +MogDB 5.0.10是MogDB 5.0.0的补丁版本,于2024-12-31发布,其在MogDB 5.0.9的基础上新增了部分特性并修复了部分缺陷,内容如下: + +
+ +## 2. 新增特性 + +### 2.1 支持匿名 plan cache 缓存 + +在用户通过 libpq 执行匿名计划缓存时,多次以匿名的方式调用 PQprepare 和 PQexec 执行同一个 SQL 会触发多次解析导致性能下降。 + +本特性通过支持将这些匿名计划进行一定程度的缓存,避免用户多次调用造成的重复解析,从而提升该场景的效率。 + +**相关页面**:[支持语句级Function Cache](../../characteristic-description/high-performance/plsql-function-cache.md) + +### 2.2 兼容性增强 + +在create table as 语句中的数值常量在创建表中,MogDB默认类型是int,而在Oracle中,默认是number类型,MogDB 新增通过GUC参数enable_int_to_numeric支持转换成number类型。行为与Oracle保持一致。 + +### 2.3 copy to逻辑增强 + +MogDB老版本在copy时,只输出任意精度数值本身,不会自动在左侧填充0,本特性在copy to逻辑中针对csv场景中的decimal类型做针对性处理,增加填充0以及+的相关逻辑,自动在任意精度数值左侧填充0。 + +### 2.4 逻辑复制支持DDL操作扩展 + +在MogDB 5.0.8逻辑复制支持DDL操作基础上,新增部分DDL解析,进一步增强MogDB和异构数据库的双轨并行能力。 + +**相关页面**:[逻辑复制支持DDL操作](../../developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md) + +
+ +## 3. 修复缺陷 + +1. 【9782】修复了B模式下多表有相同列时,别名与order by后的名称大小写不一致时报错问题。 + +2. 【9265】修复了gs_probackup 远程备份失败的问题。 + +3. 【5505】修复了MogDB 在从MogDB 3.0.x直升MogDB 5.0.x及之后的版本,升级前未将xlog索引相关日志回放完成,升级后回放索引日志会导致升级报错的问题。 + +4. 【9800】修复了修改A风格的自定义函数的返回类型,会导致引用这个函数的视图查询结果错误的问题。 + +5. 【9348】修复了CM自动拉起的VIP,远程访问概率性出现丢包的问题。 + +6. 【6780】修复了记录构造器函数(record_in)对于属性为空字符串处理的行为和A不一致的问题。 + +7. 【4884】修复了分区表exchange之后,wal2json捕获的数据变更记录不正确的问题。 + +8. 【9722】修复了在存在大量数据库对象(表),并且表上每一列都带有默认值,由于数据库syscache 清理流程中没有主动释放 adbin_on_update 字段使用的额外内存导致内存泄漏的问题。 + +9. 【9688】修复了B模式下数据库优化器同时在 sql mode full group 关闭的情况下触发了 min/max 优化导致的数据库宕机问题。 + +10. 【9675】修复了在使用逻辑解码,且使用序列的情况下,如果频繁的调用解码函数会有概率出现数据库宕机的问题。 + +11. 【9451】修复了B模式下select子句 where子句中 in() 条件较多时force index不生效的问题。 + +12. 【9673】修复了union all使用比较多时会导致内存膨胀的问题。 + +13. 【9823】修复了在使用copy from的时候会有内存堆积的问题。 + +14. 【9794】修复了在存储过程中使用index scan概率性导致数据库宕机的问题。 diff --git a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md index 00d53f45..e09cae68 100644 --- a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md +++ b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/release-note.md @@ -9,6 +9,7 @@ date: 2022-09-27 | 版本 | 发布日期 | 概述 | | ------------------- | ---------- | ------------------------------------------------------------ | +| [5.0.10](./5.0.10.md) | 2024/12/31 | MogDB 5.0.10在MogDB 5.0.9的基础上修复了部分缺陷,并新增支持匿名 plan cache 缓存等特性,同时对兼容性做了提升。 | | [5.0.9](./5.0.9.md) | 2024/10/31 | MogDB 5.0.9在MogDB 5.0.8的基础上修复了部分缺陷,并新增支持语句级PLSQL Function Cache。 | | [5.0.8](./5.0.8.md) | 2024/07/31 | MogDB 5.0.8版本在MogDB 5.0.7的基础上修复了部分缺陷,新增顺序扫描预读、UStore SMP并行执行等特性,同时对兼容性、性能、易用性均做了提升。 | | [5.0.7](./5.0.7.md) | 2024/05/30 | MogDB 5.0.7在MogDB 5.0.6的基础上修复了部分缺陷。 | diff --git a/product/zh/docs-mogdb/v5.0/about-mogdb/terms-of-use.md b/product/zh/docs-mogdb/v5.0/about-mogdb/terms-of-use.md index fc430675..e21fe349 100644 --- a/product/zh/docs-mogdb/v5.0/about-mogdb/terms-of-use.md +++ b/product/zh/docs-mogdb/v5.0/about-mogdb/terms-of-use.md @@ -7,7 +7,7 @@ date: 2021-06-01 # 法律声明 -**版权所有 © 2009-2023 云和恩墨(北京)信息技术有限公司。** +**版权所有 © 2009-2025 云和恩墨(北京)信息技术有限公司。** 您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名-相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问 了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 -- Gitee From ffe5562c7fc0998bb96223d31bb7471f41a68993 Mon Sep 17 00:00:00 2001 From: "yongjiang.qi" Date: Tue, 31 Dec 2024 10:31:32 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(mogdb):=E6=96=B0=E5=A2=9E5.0.10?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../about-mogdb/mogdb-new-feature/5.0.10.md | 10 ++- .../high-performance/anonymous-sql-cache.md | 65 +++++++++++++++++++ product/zh/docs-mogdb/v5.0/toc.md | 1 + product/zh/docs-mogdb/v5.0/toc_about.md | 1 + 4 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md diff --git a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md index 1b45044c..3676bf48 100644 --- a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md +++ b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.10.md @@ -15,13 +15,13 @@ MogDB 5.0.10是MogDB 5.0.0的补丁版本,于2024-12-31发布,其在MogDB 5. ## 2. 新增特性 -### 2.1 支持匿名 plan cache 缓存 +### 2.1 支持匿名 SQL 缓存 在用户通过 libpq 执行匿名计划缓存时,多次以匿名的方式调用 PQprepare 和 PQexec 执行同一个 SQL 会触发多次解析导致性能下降。 本特性通过支持将这些匿名计划进行一定程度的缓存,避免用户多次调用造成的重复解析,从而提升该场景的效率。 -**相关页面**:[支持语句级Function Cache](../../characteristic-description/high-performance/plsql-function-cache.md) +**相关页面**:[支持匿名 SQL 缓存](../../characteristic-description/high-performance/anonymous-sql-cache.md) ### 2.2 兼容性增强 @@ -37,6 +37,12 @@ MogDB老版本在copy时,只输出任意精度数值本身,不会自动在 **相关页面**:[逻辑复制支持DDL操作](../../developer-guide/logical-replication/logical-decoding/logical-decoding-support-for-DDL.md) +### 2.5 Ustore 热点更新页面优化 + +热点页面频繁更新,会导致存在大量历史版本,且存在TD链被反复复用的情况。本版本解决了在频繁更新的热点页面上查询时延倍数级劣化的问题。 + +**相关页面**:[In-place Update存储引擎Ustore](../../performance-tuning/system-tuning/configuring-ustore.md) +
## 3. 修复缺陷 diff --git a/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md new file mode 100644 index 00000000..d30da5ce --- /dev/null +++ b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md @@ -0,0 +1,65 @@ +--- +title: 支持匿名 SQL 缓存 +author: 刘宗昊 qiyongjiang +date: 2024-12-31 +--- + +# 支持匿名 SQL 缓存 + +## 可获得性 + +本特性自 MogDB 5.0.10 版本引入。 + +## 特性简介 + +支持缓存匿名 SQL 的解析信息,减少数据库运行时重复解析的成本。 + +## 特性描述 + +在创建,执行匿名 SQL 语句时,数据库会将解析之后的信息缓存起来。在下次创建匿名 SQL 语句时,可以直接从数据库缓存中获取到解析好的 SQL 信息,而不必重新解析 SQL,减少执行 SQL 的成本。示例如下: + +```c +const char* stmtname=(char*)""; /* 匿名 SQL */ + +for(;;) +{ + /* 创建匿名 SQL */ + res = PQprepare(conn, + stmtname, + "SELECT * FROM t1 WHERE a1 = $1", + 1, NULL); + + ... + /* 执行匿名 SQL */ + res = PQexecPrepared(conn, + stmtname, + 1, + NULL, + NULL, + NULL, + 0); + ... +} +``` + +在上述场景中,程序反复通过 `PQprepare` 接口创建匿名 SQL 会导致数据库反复解析该 SQL,浪费性能。在引入本特性后,数据库会在第一次 `PQprepare` 之后缓存住 SQL 的解析信息,并在后续调用 `PQprepare` 时复用第一次执行的解析信息,减少重复解析的成本。 + +## 参数说明 + +- 新增 USERSET 类型 GUC 参数 `max_retention_queries`,控制单个会话内匿名 SQL 缓存的数量,默认值为 1。 + + 当 `max_retention_queries` 为 1 时,数据库不会缓存匿名 SQL; + + 当 `max_retention_queries` 大于 1 时,数据库会根据匿名 SQL 的解析复杂度,执行频率来缓存特定数量的匿名 SQL。 + + **注意:此参数不宜设置过大,在内存不充足的情况下建议关闭。建议通过 session 独立 SQL 的个数进行设置,避免资源浪费。** + + 取值范围:1 ~ INT_MAX + + 默认值:1 + +## 特性约束 + +1. 仅适用于匿名 SQL,对于命名 SQL 没有缓存效果。(提示:JDBC 不会触发此特性) +2. 在开启全局计划缓存(Global Plan Cache)特性之后,匿名 SQL 缓存不会开启。 + diff --git a/product/zh/docs-mogdb/v5.0/toc.md b/product/zh/docs-mogdb/v5.0/toc.md index f05049e6..a9996462 100644 --- a/product/zh/docs-mogdb/v5.0/toc.md +++ b/product/zh/docs-mogdb/v5.0/toc.md @@ -8,6 +8,7 @@ + [MogDB简介](/overview.md) + [MogDB与openGauss](/about-mogdb/MogDB-compared-to-openGauss.md) + [MogDB发布说明](/about-mogdb/mogdb-new-feature/release-note.md) + + [MogDB 5.0.10](/about-mogdb/mogdb-new-feature/5.0.10.md) + [MogDB 5.0.9](/about-mogdb/mogdb-new-feature/5.0.9.md) + [MogDB 5.0.8](/about-mogdb/mogdb-new-feature/5.0.8.md) + [MogDB 5.0.7](/about-mogdb/mogdb-new-feature/5.0.7.md) diff --git a/product/zh/docs-mogdb/v5.0/toc_about.md b/product/zh/docs-mogdb/v5.0/toc_about.md index c1291435..c8027638 100644 --- a/product/zh/docs-mogdb/v5.0/toc_about.md +++ b/product/zh/docs-mogdb/v5.0/toc_about.md @@ -8,6 +8,7 @@ + [MogDB简介](/overview.md) + [MogDB与openGauss](/about-mogdb/MogDB-compared-to-openGauss.md) + [MogDB发布说明](/about-mogdb/mogdb-new-feature/release-note.md) + + [MogDB 5.0.10](/about-mogdb/mogdb-new-feature/5.0.10.md) + [MogDB 5.0.9](/about-mogdb/mogdb-new-feature/5.0.9.md) + [MogDB 5.0.8](/about-mogdb/mogdb-new-feature/5.0.8.md) + [MogDB 5.0.7](/about-mogdb/mogdb-new-feature/5.0.7.md) -- Gitee From 0620443adf6b73ed65e74ee964b97c58cb5d9e3b Mon Sep 17 00:00:00 2001 From: "yongjiang.qi" Date: Tue, 31 Dec 2024 13:57:20 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(mogdb):=E6=96=B0=E5=A2=9E5.0.10?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../high-performance/anonymous-sql-cache.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md index d30da5ce..bc979de7 100644 --- a/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md +++ b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/anonymous-sql-cache.md @@ -19,7 +19,7 @@ date: 2024-12-31 在创建,执行匿名 SQL 语句时,数据库会将解析之后的信息缓存起来。在下次创建匿名 SQL 语句时,可以直接从数据库缓存中获取到解析好的 SQL 信息,而不必重新解析 SQL,减少执行 SQL 的成本。示例如下: ```c -const char* stmtname=(char*)""; /* 匿名 SQL */ +const char* stmtname=(char*)""; /* 匿名 SQL */ for(;;) { @@ -61,5 +61,4 @@ for(;;) ## 特性约束 1. 仅适用于匿名 SQL,对于命名 SQL 没有缓存效果。(提示:JDBC 不会触发此特性) -2. 在开启全局计划缓存(Global Plan Cache)特性之后,匿名 SQL 缓存不会开启。 - +2. 在开启全局计划缓存(Global Plan Cache)特性之后,匿名 SQL 缓存不会开启。 \ No newline at end of file -- Gitee