diff --git a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.9.md b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.9.md index b8d81c014b4dfb5e66790cf73407ac86791eae52..d152f242932f23f51097c1ab8306be1b9e76ce27 100644 --- a/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.9.md +++ b/product/zh/docs-mogdb/v5.0/about-mogdb/mogdb-new-feature/5.0.9.md @@ -9,11 +9,21 @@ date: 2024-10-31 ## 1. 版本说明 -MogDB 5.0.9是MogDB 5.0.0的补丁版本,于2024-10-31发布,其在MogDB 5.0.8的基础上修复了部分缺陷,内容如下: +MogDB 5.0.9是MogDB 5.0.0的补丁版本,于2024-10-31发布,其在MogDB 5.0.8的基础上新增了部分特性并修复了部分缺陷,内容如下:
-## 2. 修复缺陷 +## 2. 新增特性 + +### 支持语句级PLSQL Function Cache + +在执行查询时,如果语句中含有PLSQL等函数,函数的执行将会占用很大一部分时间。如果函数是stable/immutable的,并且函数参数出现较多重复时,将结果缓存下来可极大提升查询效率。 + +本特性支持在SQL执行过程中,对于第一次遇到的stable/immutable类型函数的参数,计算出结果后将其放入缓存中,后续如果遇到相同的参数,则可以直接从缓存中取出结果,省去计算过程;提高查询性能。 + +**相关页面**:[支持语句级Function Cache](../../characteristic-description/high-performance/plsql-function-cache.md) + +## 3. 修复缺陷 1. 【9464】修复了由于guc参数在比对的时候因为出现名字为NULL场景处理不恰当,导致的低概率宕机问题。 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 255e7df61121fb17825e61599eccb7dd91ff0026..00d53f45a48bb5820850578be47663f6e6c59d37 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,7 +9,7 @@ date: 2022-09-27 | 版本 | 发布日期 | 概述 | | ------------------- | ---------- | ------------------------------------------------------------ | -| [5.0.9](./5.0.9.md) | 2024/10/31 | MogDB 5.0.9在MogDB 5.0.8的基础上修复了部分缺陷。 | +| [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的基础上修复了部分缺陷。 | | [5.0.6](./5.0.6.md) | 2024/03/30 | MogDB 5.0.6版本在MogDB 5.0.5的基础上修复了部分缺陷,新增Ustore存储引擎商用、Select自动提交、导入导出性能增强,同时对兼容性、性能、易用性均做了提升。 | diff --git a/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/high-performance.md b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/high-performance.md index 82faeb034a19f43b59eab6efb33b1b6cd275594f..b278ae4642690ca464329b21fb94831e2fc2c011 100644 --- a/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/high-performance.md +++ b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/high-performance.md @@ -30,4 +30,5 @@ date: 2023-05-22 + **[日志回放性能增强](enhancement-of-wal-redo-performance.md)** + **[极致刷脏](enhancement-of-dirty-pages-flushing-performance.md)** + **[顺序扫描预读](seqscan-prefetch.md)** -+ **[Ustore SMP并行扫描](ustore-smp.md)** \ No newline at end of file ++ **[Ustore SMP并行扫描](ustore-smp.md)** ++ **[支持语句级Function Cache](plsql-function-cache.md)** \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/plsql-function-cache.md b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/plsql-function-cache.md new file mode 100644 index 0000000000000000000000000000000000000000..bb9433243260fbedb7407be535fdcaaaf4701726 --- /dev/null +++ b/product/zh/docs-mogdb/v5.0/characteristic-description/high-performance/plsql-function-cache.md @@ -0,0 +1,88 @@ +--- +title: 支持语句级Function Cache +author: Guo Huan 谢海滨 +date: 2024-11-01 +--- + +# 支持语句级Function Cache + +## 可获得性 + +本特性自MogDB 5.0.9版本开始引入。 + +## 特性简介 + +支持缓存stable/immutable类型函数结果,提高查询性能,低基数场景性能提升10倍以上。 + +## 特性描述 + +在执行查询时,如果语句中含有plsql等函数,函数的执行将会占用很大一部分时间。如果函数是stable/immutable的,并且函数参数出现较多重复时,将结果缓存下来可极大提升查询效率。 + +本特性支持在SQL执行过程中,对于第一次遇到的stable/immutable类型函数的参数,计算出结果后将其放入缓存中,后续如果遇到相同的参数,则可以直接从缓存中取出结果,省去计算过程。 + +## 参数说明 + +- 新增USERSET类型GUC参数enable_cache_function_result,控制是否启用缓存,默认值为off。 + + 取值范围:on/off + + 默认值:off + +- 新增USERSET类型GUC参数function_result_cache_max_mem,控制缓存可使用的最大内存大小,单位kb。 + + 取值范围:1024 ~ INT_MAX + + 默认值:16*1024 + +## 特性约束 + +1. 可缓存的函数条件: + - 需要为stable/immutable类型的函数。 + - 函数的参数和结果不能包含set类型。 + - 不支持plsql中带有out参数的场景。 + - 支持除builtin外的其他所有函数类型,包括c/sql/java/plsql函数等。 +2. 判断缓存中的结果是否能重用,需要满足以下条件: + - 函数oid相同。 + - 函数的参数个数以及类型需要相同。 +3. 对于select foo()这种类型的查询,由于结果只会被使用一次,不会进行缓存。 +4. 如果一个查询中同时包含可缓存的和不可缓存类型的函数,依旧会对可缓存类型的函数进行缓存。 +5. 函数缓存结果只在query级别生效。 +6. 并行场景下,每个worker都有自己的缓存,不共享。 + +## 示例 + +```SQL +CREATE TABLE t_plsql_cache(a int, b varchar); +INSERT INTO t_plsql_cache VALUES (generate_series(1, 10000)/3, (generate_series(1, 10000)/3)::int::varchar); +CREATE OR REPLACE FUNCTION is_even(a int) +RETURNS int +LANGUAGE 'plpgsql' +IMMUTABLE +AS $$ +BEGIN + RETURN a%2 = 0; +END; +$$; + +MogDB=# explain analyze select sum(is_even(a)) from t_plsql_cache; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------- + Aggregate (cost=2677.00..2677.01 rows=1 width=12) (actual time=873.801..873.801 rows=1 loops=1) + -> Seq Scan on t_plsql_cache (cost=0.00..152.00 rows=10000 width=4) (actual time=0.023..4.404 rows=10000 loops=1) + Total runtime: 873.917 ms +(3 rows) + +MogDB=# set enable_cache_function_result= true; +SET +MogDB=# explain analyze select sum(is_even(a)) from t_plsql_cache; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------- + Aggregate (cost=2677.00..2677.01 rows=1 width=12) (actual time=291.390..291.390 rows=1 loops=1) + -> Seq Scan on t_plsql_cache (cost=0.00..152.00 rows=10000 width=4) (actual time=0.019..2.455 rows=10000 loops=1) + Total runtime: 291.550 ms +(3 rows) +``` + +## 相关页面 + +[enable_cache_function_result](../../reference-guide/guc-parameters/miscellaneous-parameters.md#enable_cache_function_result)、[function_result_cache_max_mem](../../reference-guide/guc-parameters/miscellaneous-parameters.md#function_result_cache_max_mem) \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/guc-parameter-list.md b/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/guc-parameter-list.md index b969e3f840775b4242bd5d42124c93f0b0e098a9..01b70b161d96ea5031c1d40c7f3c4183a32bda77 100644 --- a/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/guc-parameter-list.md +++ b/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/guc-parameter-list.md @@ -250,6 +250,7 @@ date: 2023-04-07 | [enable_bloom_filter](query-planning/other-optimizer-options.md#enable_bloom_filter) | | | [enable_broadcast](./query-planning/optimizer-method-configuration.md#enable_broadcast) | | | [enable_cachedplan_mgr](./AI-features.md#enable_cachedplan_mgr) | | +| [enable_cache_function_result](./miscellaneous-parameters.md#enable_cache_function_result) | 5.0.9 - [支持语句级Function Cache](../../characteristic-description/high-performance/plsql-function-cache.md) | | [enable_cbm_tracking](backup-and-restoration-parameter.md#enable_cbm_tracking) | | | [enable_change_hjcost](query-planning/optimizer-method-configuration.md#enable_change_hjcost) | | | [enable_codegen](query-planning/other-optimizer-options.md#enable_codegen) | | @@ -386,6 +387,7 @@ date: 2023-04-07 | [fsync](write-ahead-log/settings.md#fsync) | | | [full_audit_users](./auditing/user-and-permission-audit.md#full_audit_users) | | | [full_page_writes](write-ahead-log/settings.md#full_page_writes) | | +| [function_result_cache_max_mem](./miscellaneous-parameters.md#function_result_cache_max_mem) | 5.0.9 - [支持语句级Function Cache](../../characteristic-description/high-performance/plsql-function-cache.md) | | [geqo](query-planning/genetic-query-optimizer.md#geqo) | | | [geqo_effort](query-planning/genetic-query-optimizer.md#geqo_effort) | | | [geqo_generations](query-planning/genetic-query-optimizer.md#geqo_generations) | | diff --git a/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/miscellaneous-parameters.md b/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/miscellaneous-parameters.md index 6c78f48905a06a4c756e36f5bf8f7b45146dea62..212ca2375f683c22ada22aa2e8d2f691de9a9419 100644 --- a/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/miscellaneous-parameters.md +++ b/product/zh/docs-mogdb/v5.0/reference-guide/guc-parameters/miscellaneous-parameters.md @@ -368,4 +368,24 @@ date: 2021-04-20 **取值范围**:布尔型 -**默认值**:on \ No newline at end of file +**默认值**:on + +## enable_cache_function_result + +**参数说明**:控制是否启用函数结果缓存功能。相关特性参见[支持语句级Function Cache](../../characteristic-description/high-performance/plsql-function-cache.md)。 + +该参数属于USERSET类型参数,请参考[GUC参数分类](appendix.md)中对应设置方法进行设置。 + +**取值范围**:布尔型 + +**默认值**:off + +## function_result_cache_max_mem + +**参数说明**:控制函数结果缓存可使用的最大内存大小。相关特性参见[支持语句级Function Cache](../../characteristic-description/high-performance/plsql-function-cache.md)。 + +该参数属于USERSET类型参数,请参考[GUC参数分类](appendix.md)中对应设置方法进行设置。 + +**取值范围**:1024 ~ INT_MAX,单位kb。 + +**默认值**:16*1024 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v5.0/toc.md b/product/zh/docs-mogdb/v5.0/toc.md index 8f29b3860c346eea9f577027c1f216c044bf7902..f05049e6984f2d16fae88c7e4b121f8ed74381b0 100644 --- a/product/zh/docs-mogdb/v5.0/toc.md +++ b/product/zh/docs-mogdb/v5.0/toc.md @@ -78,6 +78,7 @@ + [极致刷脏](/characteristic-description/high-performance/enhancement-of-dirty-pages-flushing-performance.md) + [顺序扫描预读](/characteristic-description/high-performance/seqscan-prefetch.md) + [Ustore SMP并行扫描](/characteristic-description/high-performance/ustore-smp.md) + + [支持语句级Function Cache](/characteristic-description/high-performance/plsql-function-cache.md) + [高可用](/characteristic-description/high-availability/high-availability.md) + [主备机](/characteristic-description/high-availability/1-primary-standby.md) + [逻辑复制](/characteristic-description/high-availability/2-logical-replication.md) diff --git a/product/zh/docs-mogdb/v5.0/toc_characteristic_description.md b/product/zh/docs-mogdb/v5.0/toc_characteristic_description.md index 9ac9a9cee05b3fd9d7cacadf1ebd099caf153a9e..adfa3b389bf9b073998a36614b0758181aaa72a6 100644 --- a/product/zh/docs-mogdb/v5.0/toc_characteristic_description.md +++ b/product/zh/docs-mogdb/v5.0/toc_characteristic_description.md @@ -32,6 +32,7 @@ + [极致刷脏](/characteristic-description/high-performance/enhancement-of-dirty-pages-flushing-performance.md) + [顺序扫描预读](/characteristic-description/high-performance/seqscan-prefetch.md) + [Ustore SMP并行扫描](/characteristic-description/high-performance/ustore-smp.md) + + [支持语句级Function Cache](/characteristic-description/high-performance/plsql-function-cache.md) + [高可用](/characteristic-description/high-availability/high-availability.md) + [主备机](/characteristic-description/high-availability/1-primary-standby.md) + [逻辑复制](/characteristic-description/high-availability/2-logical-replication.md)