diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai-in-db/predictor-ai-query-time-forecasting.md b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai-in-db/predictor-ai-query-time-forecasting.md new file mode 100644 index 0000000000000000000000000000000000000000..97aa9bcb0ced791d629a94593b6534bd38f8a07d --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai-in-db/predictor-ai-query-time-forecasting.md @@ -0,0 +1,48 @@ +--- +title: Predictor:AI查询时间预测 +summary: Predictor:AI查询时间预测 +author: Guo Huan +date: 2022-05-10 +--- + +# Predictor:AI查询时间预测 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +Predictor是基于机器学习且具有在线学习能力的查询时间预测工具。在数据库内核中,通过不断学习数据库内收集的历史执行信息,实现计划的执行时间预测功能。 + +## 客户价值 + +在SQL语句执行之前,根据AI模型预测SQL执行时间。用户基于推测的SQL时间信息,可以发现可能的异常SQL语句,提前进行调优或者调度,以免影响系统运行。 + +## 特性描述 + +AI查询时间预测,依赖于本地查询计划收集。用户需要根据需求在查询执行时,收集实际查询计划(包括计划结构、算子类型、相关数据源、过滤条件等)、各算子节点实际执行时间、优化器估算代价、实际返回行数、优化器估算行数、并行数等信息。这些记录将保存在数据表中,并进行持久化管理包括定期进行数据失效清理。 + +数据库内核在自动收集历史数据后,由管理员进行编码,然后通过CURL接口向python端发送请求以配置模型、发送数据、触发训练。训练过程中可以通过调用tensorboard接口监控训练过程。模型最终返回各项目预测准确率,并保存最终模型。数据库根据aiEngine端返回结果更新模型信息相关系统表。 + +执行explain (analyze on, predictor ) SELECT …”时且模型收敛时触发,数据库根据Plan进行编码判断是否符合当前模型。如果符合模型,先向python端发送加载模型请求(模型训练完成后只需加载一次),模型加载后对计划编码文件进行推理并返回各节点预测结果。 + +## 特性增强 + +无。 + +## 特性约束 + +- 数据库系统处于正常状态,用户通过身份验证成功登陆数据库访问拥有权限的数据。 +- 用户执行的SQL语法正确无报错。 +- 用户执行的SQL不会导致数据库异常等。 +- 历史性能数据窗口内集群并发量稳定,集群规模、表结构、表数量不变,数据量无突变,涉及查询性能的guc参数不变。如果上述条件被破坏,模型失效,需要对所有历史性能数据进行失效并重新进行数据收集和重新训练模型。 +- 加载模型时,原模型的结构、参数和训练信息等保存完整。若原模型信息丢失,模型无法正常加载,需要重新训练。 +- 历史性能数据正常收集和编码,正常解析编码数据不报错。 +- 用户通过预提供的安装脚本或者自行安装Python\==3.6.4,configparser\==3.8.1,Flask\==0.12.2,Keras\==2.2.4,numpy\==1.16.4,scikit-learn\==0.19.1,pandas\==0.25.1, tensorboard\==1.14.0,tensorflow-gpu\==1.14.0或tensorflow\==1.14.0。 +- 用户环境中已经安装了OpenSSL,使用脚本或者按照使用说明生成了证书。 +- 目前跨database namespace的模型同步需要管理员用户手动执行,不支持自动同步。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/1-database-metric-collection-forecast-and-exception-detection.md b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/1-database-metric-collection-forecast-and-exception-detection.md new file mode 100644 index 0000000000000000000000000000000000000000..beddddce8df9fda90f4aae9f9824fda9f0c12794 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/1-database-metric-collection-forecast-and-exception-detection.md @@ -0,0 +1,41 @@ +--- +title: 数据库指标采集、预测与异常监控 +summary: 数据库指标采集、预测与异常监控 +author: Guo Huan +date: 2022-05-10 +--- + +# 数据库指标采集、预测与异常监控 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +本特性是MogDB集成的、可以用于数据库指标采集、预测以及异常监控与诊断的AI工具,是DBMind套间中的一个组件。当前通过兼容Prometheus平台来采集数据库系统的指标,提供Prometheus exporter用于采集和加工数据库监控指标。通过监控指标时序数据,可以用来预测未来负载走向,诊断问题等。 + +## 客户价值 + +- 极大简化运维人员工作,释放大量劳动力,为公司节省成本。 +- 用户可以通过指标采集、监控和预测功能提前感知问题,从而防止数据库发生意外,导致更大的损失。 + +## 特性描述 + +Prometheus是业内非常流行的开源监控系统,同时本身也是一款时序数据库。Prometheus的采集端称之为exporter,用来收集被监控模块的指标项。为了与Prometheus平台完成对接,DBMind分别实现了两款exporter,分别是用来采集数据库指标的openGauss-exporter,以及对采集到的指标进行二次加工的reprocessing-exporter。 + +本特性支持对采集到的指标进行预测,用户可通过修改配置文件来指定需要进行预测的关键系统指标(KPI),进而便于用户发现指标的走势,及时进行对应的运维操作。如预测内存使用率可以发现内存泄漏、预测磁盘使用情况可以在合适的时候扩容。 + +## 特性增强 + +在 MogDB 3.0.0版本中,进行了大幅度改进,兼容Prometheus平台,实现两个exporter用于对接Prometheus. + +## 特性约束 + +- 数据库状态正常,并且用户已将数据目录写入环境变量; +- Python版本要求3.6及以上; +- 配置Prometheus监控平台,并启动本服务,以便监控数据可被收集。 + +## 依赖关系 + +Prometheus \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/2-root-cause-analysis-for-slow-sql-statements.md b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/2-root-cause-analysis-for-slow-sql-statements.md new file mode 100644 index 0000000000000000000000000000000000000000..96784681c6bf6a6d7303a19bb571e8a939866a9a --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/2-root-cause-analysis-for-slow-sql-statements.md @@ -0,0 +1,38 @@ +--- +title: 慢SQL根因分析 +summary: 慢SQL根因分析 +author: Guo Huan +date: 2022-05-10 +--- + +# 慢SQL根因分析 + +## 可获得性 + +本特性自MogDB 3.0.0开始引入。 + +## 特性简介 + +慢SQL一直是数据运维中的痛点问题,如何有效诊断慢SQL根因是当前一大难题,工具结合MogDB自身特点融合了现网DBA慢SQL诊断经验,该工具可以支持慢SQL根因15+,能同时按照可能性大小输出多个根因并提供针对性的建议。 + +## 客户价值 + +为客户提供快速可靠的慢SQL发现及根因分析功能,极大简化了运维人员的工作。 + +## 特性描述 + +基于Prometheus数据采集方案,收集慢SQL根因分析需要的数据,包括系统资源信息(cpu usage、memory usage、IO)、负载信息(QPS)、大进程信息(包括外部大进程和数据库定时任务)、慢SQL文本信息、慢SQL开始执行时间和结束执行时间、慢SQL执行计划,临时文件信息等信息,而后,本功能根据AI算法计算最匹配的慢SQL根因,并给出对应的建议和置信度。 + +## 特性增强 + +无 + +## 特性约束 + +- 数据库状态正常、客户端能够正常连接; +- 具备Python3.6+的环境; +- 其中慢SQL的信息通过WDR报告获取,数据库WDR报告中会标记SQL是否是慢SQL,其相关GUC参数track_stmt_stat_level默认打开,否则需要用户手动打开,一般设置为track_stmt_stat_level=’off, L0’,更高级别对性能会有一定的影响。数据采集部分由Prometheus方案实现,故需要用户配置Prometheus数据采集平台,本功能只专注于算法并从Prometheus中获取指标的序列信息; + +## 依赖关系 + +无 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/3-index-recommendation.md b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/3-index-recommendation.md new file mode 100644 index 0000000000000000000000000000000000000000..fa3aebc21e31ecedcdd1829339c2a55048d1ed74 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/3-index-recommendation.md @@ -0,0 +1,40 @@ +--- +title: 索引推荐 +summary: 索引推荐 +author: Guo Huan +date: 2022-05-10 +--- + +# 索引推荐 + +## 可获得性 + +本特性自MogDB 1.1.0开始引入。 + +## 特性简介 + +本功能是一个覆盖多种任务级别和使用场景的数据库智能索引推荐工具,其具备单Query索引推荐功能、虚拟索引功能、workload级别索引推荐功能,可以为用户提供可靠的索引建议。 + +## 客户价值 + +为客户提供快速可靠的索引推荐功能,极大简化了运维人员的工作。 + +## 特性描述 + +单query索引推荐功能支持用户在数据库中直接进行操作,本功能基于查询语句的语义信息和数据库的统计信息,对用户输入的单条查询语句生成推荐的索引;虚拟索引功能支持用户在数据库中直接进行操作,本功能将模拟真实索引的建立,避免真实索引创建所需的时间和空间开销,用户基于虚拟索引,可通过优化器评估该索引对指定查询语句的代价影响;对于workload级别的索引推荐,用户可通过运行数据库外的脚本使用此功能,本功能将包含有多条DML语句的workload作为输入,最终生成一批可对整体workload的执行表现进行优化的索引。 + +## 特性增强 + +无 + +## 特性约束 + +数据库状态正常、客户端能够正常连接。 + +当前执行用户下安装有gsql工具,该工具路径已被加入到PATH环境变量中。 + +具备Python3.6+的环境。 + +## 依赖关系 + +无 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/4-parameter-tuning-and-diagnosis.md b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/4-parameter-tuning-and-diagnosis.md new file mode 100644 index 0000000000000000000000000000000000000000..58f8173fa07cdf928e6195f9a27b5a27b95ec1f8 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/4-parameter-tuning-and-diagnosis.md @@ -0,0 +1,46 @@ +--- +title: 参数调优与诊断 +summary: 参数调优与诊断 +author: Guo Huan +date: 2022-05-10 +--- + +# 参数调优与诊断 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入 + +## 特性简介 + +本功能是一款数据库集成的参数调优工具,通过结合深度强化学习和全局搜索算法等AI技术,实现在无需人工干预的情况下,获取最佳数据库参数配置。本功能不强制与数据库环境部署到一起,支持独立部署,脱离数据库安装环境独立运行。 + +## 客户价值 + +该工具可以在任意场景下,快速给出当前负载的调参配置,减少DBA的人工干预,提升运维效果,满足客户期望。 + +## 特性描述 + +调优程序包含三种运行模式,分别是: + +- recommend: 通过用户指定的用户名等信息登录到数据库环境中,获取当前正在运行的workload特征信息,根据上述特征信息生成参数推荐报告。报告当前数据库中不合理的参数配置和潜在风险等;输出根据当前正在运行的workload行为和特征;输出推荐的参数配置。**该模式是秒级的,不涉及数据库的重启操作,其他模式可能需要反复重启数据库**。 +- train: 通过用户提供的benchmark信息,不断地进行参数修改和benchmark的执行。通过反复的迭代过程,训练强化学习模型,以便用户在后面通过tune模式加载该模型进行调优。 +- tune: 使用优化算法进行数据库参数的调优,当前支持两大类算法,一种是深度强化学习,另一种是全局搜索算法(全局优化算法)。深度强化学习模式要求先运行train模式,生成训练后的调优模型,而使用全局搜索算法则不需要提前进行训练,可以直接进行搜索调优。 + +## 特性增强 + +无 + +## 特性约束 + +- 数据库状态正常、客户端能够正常连接、且要求数据库内导入数据,以便调优程序可以执行benchmark测试调优效果。 +- 使用本工具需要指定登录到数据库的用户身份,要求该登录到数据库上的用户具有足够的权限,以便可以获得充足的数据库状态信息。 +- 使用登录到数据库宿主机上的Linux用户,需要将$**GAUSSHOME/bin**添加到PATH环境变量中,即能够直接运行gsql、gs_guc、gs_ctl等数据库运维工具。 +- Python版本建议为Python3.6及以上,且运行环境中已经安装相应依赖,并能够正常启动调优程序。您可以独立安装一个python3.6+的环境,无需设置到全局环境变量中。不建议使用root用户权限安装本工具,如果以root身份安装本完毕工具,使用其他用户身份运行本工具时,需要确保配置文件有读取权限。 +- 本工具支持以三种模式运行,其中tune和train模式要求用户配置好benchmark运行环境,并导入数据,本工具将会通过迭代运行benchmark来判断修改后的参数是否有性能提升。 +- recommend模式建议在数据库正在执行workload的过程中执行,以便获得更准确的实时workload信息。 +- 本工具默认带有TPC-C、TPC-H、TPC-DS以及sysbench的benchmark运行脚本样例,如果用户使用上述benchmark对数据库系统进行压力测试,则可以对上述配置文件进行适度修改或配置。如果需要适配用户自己的业务场景,需要您参照benchmark目录中的template.py文件编写驱动您自定义benchmark的脚本文件。 + +## 依赖关系 + +无 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/5-slow-sql-statement-discovery.md b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/5-slow-sql-statement-discovery.md new file mode 100644 index 0000000000000000000000000000000000000000..e8f17a65eddde93c3308fcc4f7302262da249faa --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/5-slow-sql-statement-discovery.md @@ -0,0 +1,39 @@ +--- +title: 慢SQL发现 +summary: 慢SQL发现 +author: Guo Huan +date: 2022-05-10 +--- + +# 慢SQL发现 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +本功能是一个SQL语句执行时间预测工具,通过模板化方法,实现在不获取SQL语句执行计划的前提下,依据语句逻辑相似度与历史执行记录,预测SQL语句的执行时间。 + +## 客户价值 + +- 工具不需要用户提供SQL执行计划,对数据库性能不会有任何影响。 +- 不同于业内其他算法只局限于OLAP或者OLTP,本工具场景更加广泛。 + +## 特性描述 + +SQLdiag着眼于数据库的历史SQL语句,通过对历史SQL语句的执行表现进行总结归纳,将之再用于推断新的未知业务上。由于短时间内数据库SQL语句执行时长不会有太大的差距,SQLdiag可以从历史数据中检测出与已执行SQL语句相似的语句结果集,并基于SQL向量化技术和模板化方法预测SQL语句执行时长。 + +## 特性增强 + +无 + +## 特性约束 + +- 需要保证用户提供的历史日志及待预测负载的格式符合要求,可以使用数据库GUC参数开启收集,也可以通过监控工具采集。 +- 为保证预测准确率,用户提供的历史语句日志应尽可能全面并具有代表性。 +- 按照要求配置python环境。 + +## 依赖关系 + +无 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/db4ai-database-driven-ai.md b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/db4ai-database-driven-ai.md new file mode 100644 index 0000000000000000000000000000000000000000..86b3ae3811c2116ce0d066709e3b387ec1074d96 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/ai-capabilities/db4ai-database-driven-ai.md @@ -0,0 +1,39 @@ +--- +title: DB4AI:数据库驱动AI +summary: DB4AI:数据库驱动AI +author: Guo Huan +date: 2022-05-10 +--- + +# DB4AI:数据库驱动AI + +## 可获得性 + +本特性自MogDB 2.1.0版本开始引入。 + +## 特性简介 + +DB4AI是指利用数据库的能力驱动AI任务,实现数据存储、技术栈的同构。通过在数据库内集成AI算法,令MogDB具备数据库原生AI计算引擎、模型管理、AI算子、AI原生执行计划的能力,为用户提供普惠AI技术。不同于传统的AI建模流程,DB4AI“一站式”建模可以解决数据在各平台的反复流转问题,同时简化开发流程,并可通过数据库规划出最优执行路径,让开发者更专注于具体业务和模型的调优上,具备同类产品不具备的易用性与性能优势。 + +## 客户价值 + +- 通过本功能,用户无需手动编写AI模型代码,直接通过开箱即用的SQL语句即可执行机器学习模型的训练和预测,学习和使用成本极低; +- 避免数据碎片化存储和反复搬迁导致的额外开销; +- 更高的执行效率,本功能的AI模型训练效率极高,相比用户自行手动训练模型有数倍性能收益; +- 更严密的安全防护,从而避免训练AI模型导致数据泄露。 + +## 特性描述 + +MogDB的原生DB4AI能力,通过引入原生AI算子,简化操作流程,充分利用数据库优化器、执行器的优化与执行能力,获得高性能的数据库内模型训练能力。更简化的模型训练与预测流程、更高的性能表现,让开发者在更短时间内能更专注于模型的调优与数据分析上,而避免了碎片化的技术栈与冗余的代码实现。 + +## 特性增强 + +在MogDB 3.0.0 版本中支持更多算法。 + +## 特性约束 + +- 数据库状态正常 + +## 依赖关系 + +无 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/1-standard-sql.md b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/1-standard-sql.md new file mode 100644 index 0000000000000000000000000000000000000000..dcd55cd801abd47d5f23adc6b96f3625823b540d --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/1-standard-sql.md @@ -0,0 +1,38 @@ +--- +title: 支持标准SQL +summary: 支持标准SQL +author: Guo Huan +date: 2022-05-07 +--- + +# 支持标准SQL + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +SQL是用于访问和处理数据库的标准计算机语言。SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。 + +MogDB数据库支持SQL:2011大部分的核心特性,同时还支持部分的可选特性,为使用者提供统一的SQL界面。 + +## 客户价值 + +标准SQL的引入为所有的数据库厂商提供统一的SQL界面,减少使用者的学习成本和应用程序的迁移代价。 + +## 特性描述 + +具体的特性列表请参见《参考指南》中“SQL语法”章节。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/2-standard-development-interfaces.md b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/2-standard-development-interfaces.md new file mode 100644 index 0000000000000000000000000000000000000000..6b59b1dbcba296041ec2b373729118a4a478744d --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/2-standard-development-interfaces.md @@ -0,0 +1,36 @@ +--- +title: 支持标准开发接口 +summary: 支持标准开发接口 +author: Guo Huan +date: 2022-05-07 +--- + +# 支持标准开发接口 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +支持ODBC 3.5及JDBC 4.0标准接口。 + +## 客户价值 + +提供业界标准的ODBC及JDBC接口,保证用户业务快速迁移至MogDB。 + +## 特性描述 + +目前支持标准的ODBC 3.5及JDBC 4.0接口,其中ODBC支持SUSE、Win32、Win64平台,JDBC无平台差异。 + +## 特性增强 + +增加JDBC对接第三方日志框架功能。JDBC对接第三方日志框架功能可满足用户对日志管控的需求。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/3-postgresql-api-compatibility.md b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/3-postgresql-api-compatibility.md new file mode 100644 index 0000000000000000000000000000000000000000..72d61da13c024ddf5f5c40d3629b5dae914a4414 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/3-postgresql-api-compatibility.md @@ -0,0 +1,36 @@ +--- +title: PG接口兼容 +summary: PG接口兼容 +author: Guo Huan +date: 2022-05-07 +--- + +# PG接口兼容 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +兼容PSQL客户端,兼容PostgreSQL标准接口。 + +## 客户价值 + +兼容PSQL客户端,兼容PostgreSQL标准接口,能够与PG生态工具无缝对接。 + +## 特性描述 + +兼容PSQL客户端,兼容PostgreSQL标准接口。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/4-pl-java.md b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/4-pl-java.md new file mode 100644 index 0000000000000000000000000000000000000000..e08f4a9565756a3fa2455a63f592c43c204daf0f --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/4-pl-java.md @@ -0,0 +1,66 @@ +--- +title: 支持PL/Java +summary: 支持PL/Java +author: Guo Huan +date: 2022-05-07 +--- + +# 支持PL/Java + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +支持java UDF。 + +## 客户价值 + +提供多种函数的开发环境。 + +## 特性描述 + +使用MogDB数据库的PL/Java函数,用户可以使用自己喜欢的Java IDE编写Java方法,并将包含这些方法的jar文件安装到MogDB数据库中,然后使用该方法。MogDB PL/Java基于开源tada PL/Java 1.5.2开发,PL/Java所使用的JDK版本为Huawei JDK V100R001C00SPC190B003-b09。 + +## 特性增强 + +无。 + +## 特性约束 + +- Java UDF可以实现一些较为简单的java计算,强烈建议不要在Java UDF中封装业务。 + +- 强烈建议不要在Java函数中使用任何方式连接数据库,包括但不限于JDBC。 + +- 建议用户使用Huawei JDK V100R001C00SPC190B003-b09编译Java方法和jar文件。 + +- 暂不支持的数据类型:除表1提及之外的数据类型,包括自定义类型,复杂数据类型(Java Array类及派生类)。 + +- 暂不支持UDAF、UDTF。 + + **表 1** PL/Java默认数据类型映射关系 + + | MogDB | **Java** | + | :---------- | :------------------------------------------------- | + | BOOLEAN | boolean | + | “char” | byte | + | bytea | byte[] | + | SMALLINT | short | + | INTEGER | int | + | BIGINT | long | + | FLOAT4 | float | + | FLOAT8 | double | + | CHAR | java.lang.String | + | VARCHAR | java.lang.String | + | TEXT | java.lang.String | + | name | java.lang.String | + | DATE | java.sql.Timestamp | + | TIME | java.sql.Time (stored value treated as local time) | + | TIMETZ | java.sql.Time | + | TIMESTAMP | java.sql.Timestamp | + | TIMESTAMPTZ | java.sql.Timestamp | + +## 依赖关系 + +PL/Java依赖JDK环境,目前MogDB中已包含JDK环境,无需用户安装。如果用户已安装(相同或不同版本的)JDK,也不会引起冲突,MogDB会使用Huawei JDK V100R001C00SPC190B003-b09来运行PL/Java。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/1-access-control-model.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/1-access-control-model.md new file mode 100644 index 0000000000000000000000000000000000000000..ed3b7105b3a0007dde937ddbd164633b5b6f38a6 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/1-access-control-model.md @@ -0,0 +1,41 @@ +--- +title: 访问控制模型 +summary: 访问控制模型 +author: Guo Huan +date: 2022-05-07 +--- + +# 访问控制模型 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +管理用户访问权限,为用户分配完成任务所需要的最小权限。 + +## 客户价值 + +客户依据自身需求创建对应的数据库用户并赋予相应的权限给操作人员,将数据库使用风险降到最低。 + +## 特性描述 + +数据库提供了基于角色的访问控制模型和基于三权分立的访问控制模型。在基于角色的访问控制模型下,数据库用户可分为系统管理员用户、监控管理员用户、运维管理员用户、安全策略管理员用户以及普通用户。系统管理员创建角色或者用户组,并为角色分配对应的权限;监控管理员查看dbe_perf模式下的监控视图或函数;运维管理员使用Roach工具执行数据库备份恢复操作;安全策略管理员创建资源标签、脱敏策略、统一审计策略。用户通过绑定不同的角色获得角色所拥有的对应的操作权限。 + +在基于三权分立的访问控制模型下,数据库用户可分为系统管理员、安全管理员、审计管理员、监控管理员用户、运维管理员用户、安全策略管理员用户以及普通用户。安全管理员负责创建用户,系统管理员负责为用户赋权,审计管理员负责审计所有用户的行为。 + +默认情况下,使用基于角色的访问控制模型。客户可通过设置GUC参数enableSeparationOfDuty为on来切换。 + +## 特性增强 + +无。 + +## 特性约束 + +- 系统管理员的具体权限受GUC参数enableSeparationOfDuty控制。 +- 三权分立开关和关闭切换时需要重启数据库,且无法对新模型下不合理的用户权限进行自主识别,需要DBA识别并修正。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/10-row-level-access-control.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/10-row-level-access-control.md new file mode 100644 index 0000000000000000000000000000000000000000..644588863adff724ee73f1d7032a763f678c106f --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/10-row-level-access-control.md @@ -0,0 +1,43 @@ +--- +title: 行级访问控制 +summary: 行级访问控制 +author: Guo Huan +date: 2022-05-07 +--- + +# 行级访问控制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。 + +## 客户价值 + +不同用户执行相同的SQL查询操作,读取到的结果是不同的。 + +## 特性描述 + +用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性(PERMISSIVE | RESTRICTIVE)类型,通过AND或OR方式拼接,应用到执行计划上。 + +行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前受影响的SQL语句包括SELECT,UPDATE,DELETE。 + +## 特性增强 + +无。 + +## 特性约束 + +- 行级访问控制策略仅可以应用到SELECT、UPDATE和DELETE操作,不支持应用到INSERT和MERGE操作。 +- 支持对行存表、行存分区表、列存表、列存分区表、复制表、unlogged表、hash表定义行级访问控制策略,不支持HDFS表、外表、临时表定义行级访问控制策略。 +- 不支持对视图定义行级访问控制策略。 +- 同一张表上可以创建多个行级访问控制策略,一张表最多允许创建100个行级访问控制策略。 +- 初始用户和系统管理员不受行级访问控制策略的影响。 +- 对于设置了行级访问控制策略的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器绕过行级访问控制策略。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/11-password-strength-verification.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/11-password-strength-verification.md new file mode 100644 index 0000000000000000000000000000000000000000..1bf5f4927c8231868ff095b15eeaa1faf3a5c0e4 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/11-password-strength-verification.md @@ -0,0 +1,71 @@ +--- +title: 用户口令强度校验机制 +summary: 用户口令强度校验机制 +author: Guo Huan +date: 2022-05-07 +--- + +# 用户口令强度校验机制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +对用户访问数据库所设置的口令强度进行校验。 + +## 客户价值 + +用户无法设置过低强度的口令,加固客户数据安全。 + +## 特性描述 + +初始化数据库、创建用户、修改用户时需要指定密码。密码必须满足强度校验,否则会提示用户重新输入密码。账户密码复杂度要求如下: + +- 包含大写字母(A-Z)的最少个数(password_min_uppercase) +- 包含小写字母(a-z)的最少个数(password_min_lowercase) +- 包含数字(0-9)的最少个数(password_min_digital) +- 包含特殊字符的最少个数(password_min_special) +- 密码的最小长度(password_min_length) +- 密码的最大长度(password_max_length) +- 至少包含上述四类字符中的三类。 +- 不能和用户名、用户名倒写相同,本要求为非大小写敏感。 +- 不能和当前密码、当前密码的倒写相同。 +- 不能是弱口令。 + +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** 弱口令指的是强度较低,容易被破解的密码,对于不同的用户或群体,弱口令的定义可能会有所区别,用户需要自己添加定制化的弱口令。 + +参数password_policy设置为1时表示采用密码复杂度校验,默认值为1。 + +弱口令字典中的口令存放在gs_global_config系统表中(name字段为weak_password的记录是储存的弱口令),当创建用户、修改用户需要设置密码时,将会把用户设置口令和弱口令字典中存放的口令进行对比,如果命中,则会提示用户该口令为弱口令,设置密码失败。 + +弱口令字典默认为空,用户通过以下语法可以对弱口令字典进行增加和删除,示例如下: + +``` +CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'), ('password2'); +DROP WEAK PASSWORD DICTIONARY; +``` + +其中“password1”,“password2”是用户事先准备的弱口令,该语句执行成功后将会存入弱口令系统表中。 + +当用户尝试通过CREATE WEAK PASSWORD DICTIONARY 插入表中已存在的弱口令时,会只在表中保留一条该弱口令。 + +DROP WEAK PASSWORD DICTIONARY语句会清空整张系统表弱口令相关部分。 + +gs_global_config系统表没有唯一索引,不建议用户通过COPY FROM命令重复用相同数据对该表进行操作。 + +若用户需要对弱口令相关操作进行审计,应设置audit_system_object参数中的第三位为1。 + +## 特性增强 + +MogDB 1.1.0版本实现了弱口令字典功能。 + +## 特性约束 + +- 初始用户、系统管理员和安全管理员可以查看、新增、删除弱口令字典。 +- 普通用户可以查看但是不能新增或者删除弱口令字典。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/12-equality-query-in-a-fully-encrypted-database.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/12-equality-query-in-a-fully-encrypted-database.md new file mode 100644 index 0000000000000000000000000000000000000000..7ddfadf6abc085358544dca41ea2991e978e35c5 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/12-equality-query-in-a-fully-encrypted-database.md @@ -0,0 +1,110 @@ +--- +title: 全密态数据库等值查询 +summary: 全密态数据库等值查询 +author: Guo Huan +date: 2022-05-07 +--- + +# 全密态数据库等值查询 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获得有效的价值信息,从而起到保护数据隐私的作用。 + +## 客户价值 + +由于整个业务数据流在数据处理过程中都是以密文形态存在,通过全密态数据库,可以实现: + +1. 保护数据在云上全生命周期的隐私安全,无论数据处于何种状态,攻击者都无法从数据库服务端获取有效信息。 +2. 帮助云服务提供商获取第三方信任,无论是企业服务场景下的业务管理员、运维管理员,还是消费者云业务下的应用开发者,用户通过将密钥掌握在自己手上,使得高权限用户无法获取数据有效信息。 +3. 让云数据库借助全密态能力更好的遵守个人隐私保护方面的法律法规。 + +## 特性描述 + +从用户视角来看,整个密态等值查询的主要功能分为三部分,主要通过新增的KeyTool工具以及MogDB的增强gsql客户端来实现。 + +首先是客户端密钥管理功能,用户借助新增的KeyTool工具来实现CMK的生成、销毁和更新,同时支持密钥导入导出。通过该KeyTool工具的导入导出功能,CMK可以在不同的客户端间进行传输;同时,KeyTool实现了单个客户端侧的密钥管理,通过配置管理文件,可以对密钥的存储、更新进行管理。 + +其次该特性提供密钥创建功能和加密表创建功能,通过新增SQL语法“CREATE CLINET MASTER KEY”和“CREATE COLUMN ENCRYPTION KEY”实现在数据库侧记录和管理CMK和CEK元信息,CMK和CEK信息被记录在新增的系统表中。通过扩展“CREATE TABLE”语法为表的每一个敏感信息列指定列加密密钥和加密算法,方便后续数据密文存储。 + +最后该特性对用户提供密态等值查询能力,该部分功能是整个特性的核心,虽然用户对整个密文查询无感知,但是在指定数据的加密信息后,针对该敏感数据的查询将受限于当前密态等值查询的支持规格。 + +从整体视角来看,该特性所实现的功能主要是为了用户基于敏感数据保护的诉求来存储管理数据并基于密文数据信息实现查询任务。 + +## 特性增强 + +无。 + +## 特性约束 + +- 数据以列级别进行加密,而无法按照行级别区分加密策略。 + +- 除Rename操作外,不支持通过Alter Table语法实现对加密表列的更改(包括加密列和非加密列之间的互转换),支持添加(Add)和删除(Drop)对应的加密列。 + +- 不支持对加密列设置大部分check限制性语法,但是支持check(column is not null)语法。 + +- 当support_extended_features = off时,不支持对加密列使用primary key、unique。当support_extended_features = on时,仅支持确定性加密列使用primary key、unique。 + +- 不支持不同数据类型之间的隐式转换。 + +- 不支持不同数据类型密文间的集合操作。 + +- 不支持加密列创建范围分区。 + +- 加密列仅支持repeat和empty_blob()函数。 + +- 当前版本只支持gsql和JDBC(部署在linux操作系统)客户端,暂不支持ODBC等其他客户端实现密态等值查询。 + +- 使用JDBC客户端时,密态等值查询特性不能与负载均衡或自动选主特性同时开启。 + +- 只支持通过客户端执行copy from stdin的方式、\copy命令的方式以及insert into values(…)的方式往密态表中导入数据。 + +- 不支持从加密表到文件之间的copy操作。 + +- 不支持包括排序、范围查询以及模糊查询等在内的除等值以外的各种密态查询。 + +- 支持部分函数存储过程密态语法,密态支持函数存储过程具体约束查看开发者指南密态支持函数/存储过程章节。 + +- 不支持通过insert into…select…,merge into语法将非加密表数据插入到加密表数据中。 + +- 对于处于连接状态的连接请求,只有触发更新缓存的操作(更改用户,解密加密列失败等)和重新建连后才能感知服务端CEK信息变更。 + +- 不支持在由随机加密算法加密的列上进行密态等值查询。 + +- 对于密态等值查询运算中如果参与比较的两个属性条件采用不同的数据加密密钥,返回报错。 + +- 密态等值查询不支持时序表、外表,不支持ustore存储引擎加密。 + +- 对于数据库服务侧配置变更(pg_settings系统表、权限、密钥和加密列等信息), 需要重新建立JDBC连接保证配置变更生效。 + +- 不支持多条SQL语句一起执行,insert into语句多批次执行场景不受此条约束限制。 + +- 密态等值查询支持的数据类型包括: + + | 数据类 | 类型 | 描述 | + | ---------- | ------------------ | ----------------------------------- | + | 整型 | tinyint/tinyint(n) | 微整数,同int1 | + | | smallint | 小整数,同int2 | + | | int4 | 常用整数 | + | | binary_integer | Oracle兼容类型,常用整数 | + | | bigint/bigint(n) | 大整数,同int8 | + | 数值类型 | numeric(p,s) | 精度为p的准确数值类型 | + | | number | Oracle兼容类型,等同numeric(p,s) | + | 浮点类型 | float4 | 单精度浮点数 | + | | float8 | 双精度浮点数 | + | | double precision | 双精度浮点数 | + | 字符类型 | char/char(n) | 定长字符串,不足补空格,默认精度为1 | + | | varchar(n) | 变长字符串,n是指允许的最大字节长度 | + | | text | 文本类型 | + | | varchar2(n) | Oracle兼容类型,等同varchar(n) | + | | clob | 大文本类型 | + | 二进制类型 | bytea | 变长的二进制字符串 | + | | blob | 二进制大对象 | + +## 依赖关系 + +无。 diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/13-ledger-database-mechanism.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/13-ledger-database-mechanism.md new file mode 100644 index 0000000000000000000000000000000000000000..0b6bc7eb4ccf05e32bd63d9ef34493228680bd55 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/13-ledger-database-mechanism.md @@ -0,0 +1,43 @@ +--- +title: 账本数据库机制 +summary: 账本数据库机制 +author: Guo Huan +date: 2022-05-07 +--- + +# 账本数据库机制 + +## 可获得性 + +本特性自MogDB 2.1.0版本开始引入。 + +## 特性简介 + +账本数据库特性,对用户指定的防篡改表增加校验信息,并记录用户对其数据的操作历史,通过数据和操作历史的一致性校验来保证用户数据无法被恶意篡改。在用户对防篡改表执行DML操作时,系统对防篡改表增加少量额外的行级校验信息,同时记录操作的SQL语句和数据的变化历史。通过特性提供的校验接口,用户可以方便的校验防篡改表中的数据与系统记录的操作信息是否一致。 + +## 客户价值 + +账本数据库通过提供对用户数据的操作记录、数据历史变化记录以及易用的一致性的校验接口,方便用户随时校验数据库中的敏感信息是否发生恶意篡改,有效提高数据库防篡改能力。 + +## 特性描述 + +账本数据库采用账本Schema对普通表和防篡改用户表进行隔离。用户在账本Schema中创建的行存表具有防篡改属性,即为防篡改用户表。用户向防篡改用户表中插入数据时,系统会自动生成少量行级校验信息。在用户执行DML时,系统会在全局区块表(GS_GLOBAL_CHAIN)中记录用户的操作、在用户表相应的历史表中记录数据的更改等信息,操作记录、数据变化记录和用户表中的数据三者严格保持一致。账本数据库提供高性能校验接口,能够供用户方便的校验数据的一致性,如果一致性校验失败,则说明数据可能发生篡改,需要及时联系审计管理员回溯操作记录历史。 + +## 特性增强 + +无。 + +## 特性约束 + +- 防篡改模式下的行存表具有防篡改属性,而临时表、UNLOGGED表、列存表、时序表等均不具有防篡改属性。 +- 不允许修改防篡改用户表的结构,不允许truncate防篡改相关表,不允许将防篡改用户表切换到普通的Schema中,不允许将非防篡改表切换到防篡改Schema中。 +- 防篡改表如果为分区表,则不支持exchange partition、drop partition、truncate partition等操作。 +- 不支持使用函数、TRIGGER修改防篡改用户表数据。 +- 防篡改用户表创建时不能有名为“hash”的列。 +- 普通用户调用篡改校验接口只能校验自己有权查询的表。 +- 只允许审计管理员和初始用户查询全局区块表和BLOCKCHAIN模式中的表,普通用户无权访问,所有用户均无权修改。 +- 根据用户历史表命名规则,若待创建表的Schema或表名以'_'结尾或开头,可能会出现对应历史表名与已有表名冲突的情况,需要重新命名。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/14-transparent-data-encryption.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/14-transparent-data-encryption.md new file mode 100644 index 0000000000000000000000000000000000000000..c38f08aa18249d888358ce4095716c2b48ec4efa --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/14-transparent-data-encryption.md @@ -0,0 +1,53 @@ +--- +title: 透明数据加密 +summary: 透明数据加密 +author: Guo Huan +date: 2022-05-07 +--- + +# 透明数据加密 + +## 可获得性 + +本特性自MogDB 2.1.0版本开始引入。 + +## 特性简介 + +透明数据加密(Transparent Data Encryption),是数据库在将数据写入存储介质时对数据进行加密,从存储介质中读取数据时自动解密,防止攻击者绕过数据库认证机制直接读取数据文件中的数据,以解决静态数据泄露问题。该功能对于应用层几乎透明无感知,用户可根据需要决定是否启用透明数据加密功能。 + +## 客户价值 + +为了防止攻击者绕过数据库认证机制直接读取数据文件中的数据,可以通过透明数据加密功能对数据库的数据文件进行加密,保证用户必须在数据库启动后通过正常途径连接数据库,才可以读取解密后的数据,达到数据保护的目的。 + +## 特性描述 + +采用三层密钥结构实现密钥管理机制,即根密钥(RK)、主密钥(CMK)和数据加密密钥(DEK)。主密钥由根密钥加密保护,数据加密密钥由主密钥加密保护。数据加密密钥用于对用户数据进行加密和解密,每个表对应一个数据加密密钥。 + +支持表级加密,允许用户在创建表时指定是否对表进行加密和使用的加密算法,加密算法支持AES_128_CTR和SM4_CTR两种算法,算法一旦指定不可更改。对于创建表时指定为加密的表,数据库会自动为该表申请创建数据加密密钥,并将加密算法、密钥密文和对应主密钥ID等参数使用”keyword=value”格式保存在pg_class系统表中的reloptions字段中。 + +对于加密表,允许用户切换表的加密状态,即将加密表切换为非加密表,或将非加密表切换为加密表。如果在创建表时未使能加密功能,后续无法再切换为加密表。 + +对于加密表,支持数据加密密钥轮转。密钥轮转后,使用旧密钥加密的数据仍使用旧密钥解密,新写入的数据使用新密钥加密。密钥轮转时不更换加密算法。 + +## 特性增强 + +无。 + +## 特性约束 + +当前版本主要实现对接KMS服务,支持表级密钥存储,实现对行存表加密,规格约束如下: + +- 支持heap存储行存表加密。 +- 不支持列存加密,不支持物化视图加密,不支持ustore存储引擎加密。 +- 不支持索引和Sequence加密,不支持XLOG日志加密,不支持MOT内存表加密,不支持系统表加密。 +- 用户在创建表时可以指定加密算法,加密算法一旦指定不可更改。如果创建表时设置enable_tde为on,但是不指定加密算法encrypt_algo,则默认使用AES_128_CTR加密算法。 +- 如果在创建表时未开启加密功能或指定加密算法,后续无法再切换为加密表。 +- 对于已分配加密密钥的表,切换表的加密和非加密状态,不会更换密钥和加密算法。 +- 数据密钥轮转只有开启表加密功能时才支持轮转。 +- 不支持单集群跨region的多副本主备同步,不支持单集群跨region的扩容,不支持跨region的备份恢复、集群容灾和数据迁移场景。 +- 混合云场景如果使用KMS和管控面功能,则可以支持透明数据加密,其他KMS服务如果接口不兼容则无法支持。 +- 加密表的查询性能比不加密时会有所劣化,对于性能有较高要求的情况下需谨慎开启加密功能。 + +## 依赖关系 + +依赖KMS提供密钥管理服务。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/2-separation-of-control-and-access-permissions.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/2-separation-of-control-and-access-permissions.md new file mode 100644 index 0000000000000000000000000000000000000000..c8cd9df8e9d2ce4b295d874e004c732b7c726161 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/2-separation-of-control-and-access-permissions.md @@ -0,0 +1,46 @@ +--- +title: 控制权和访问权分离 +summary: 控制权和访问权分离 +author: Guo Huan +date: 2022-05-07 +--- + +# 控制权和访问权分离 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +支持控制权和访问权分离。 + +## 客户价值 + +针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。 + +## 特性描述 + +对于有多个业务部门,各部门间使用不同的数据库用户进行业务操作,同时有一个同级的数据库维护部门使用数据库管理员进行维护操作的场景下,业务部门可能希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。 + +三权分立情况下,管理员对其他用户放在属于各自模式下的表无权限。但是,这种无权限包含了无控制权限,因此不能满足上面的诉求。为此,MogDB提供了私有用户方案。即在非三权分立模式下,创建具有INDEPENDENT属性的私有用户。具备CREATEROLE权限或者是系统管理员权限的用户可以创建私有用户或者修改普通用户的属性为私有用户,普通用户也可以修改自己的属性为私有用户。 + +``` +MogDB=# CREATE USER user_independent WITH INDEPENDENT IDENTIFIED BY "1234@abc"; +``` + +针对该用户的表对象,系统管理员在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。 + +## 特性增强 + +无。 + +## 特性约束 + +对于私有用户的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器查看私有用户的数据。 + +若将私有用户表的相关权限授予其他非私有用户,系统管理员也会获得同样的权限。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/3-database-encryption-authentication.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/3-database-encryption-authentication.md new file mode 100644 index 0000000000000000000000000000000000000000..6c29e8a17a04ac317bfecd163877ca6505542f32 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/3-database-encryption-authentication.md @@ -0,0 +1,36 @@ +--- +title: 数据库认证机制 +summary: 数据库认证机制 +author: Guo Huan +date: 2022-05-07 +--- + +# 数据库认证机制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +提供基于客户端/服务端(C/S)模式的客户端连接认证机制。 + +## 客户价值 + +加密认证过程中采用单向Hash不可逆加密算法PBKDF2,有效防止彩虹攻击。 + +## 特性描述 + +MogDB采用基本的客户端连接认证机制,客户端发起连接请求后,由服务端完成信息校验并依据校验结果发送认证所需信息给客户端(认证信息包括盐值,token以及服务端签名信息)。客户端响应请求发送认证信息给服务端,由服务端调用认证模块完成对客户端认证信息的认证。用户的密码被加密存储在内存中。整个过程中口令加密存储和传输。当用户下次登录时通过计算相应的hash值并与服务端存储的key值比较来进行正确性校验。 + +## 特性增强 + +统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者密码的正确性。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/4-data-encryption-and-storage.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/4-data-encryption-and-storage.md new file mode 100644 index 0000000000000000000000000000000000000000..3a479894526fc3f59e657b9ec15337704383b59d --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/4-data-encryption-and-storage.md @@ -0,0 +1,44 @@ +--- +title: 数据加密存储 +summary: 数据加密存储 +author: Guo Huan +date: 2022-05-07 +--- + +# 数据加密存储 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +提供对导入数据的加密存储。 + +## 客户价值 + +为客户提供加密导入接口,对客户认为是敏感信息的数据进行加密后存储在表内。 + +## 特性描述 + +MogDB提供加密函数gs_encrypt_aes128()、gs_encrypt()和解密函数gs_decrypt_aes128()、gs_decrypt()接口。通过加密函数,可以对需要输入到表内的某列数据进行加密后再存储到表格内。调用格式为: + +**gs_encrypt_aes128(column, key),gs_encrypt(decryptstr,keystr,decrypttype)** + +其中key为用户指定的初始口令,用于派生加密密钥。当客户需要对整张表进行加密处理时,则需要为每一列单独书写加密函数。 + +当具有对应权限的用户需要查看具体的数据时,可通过解密函数接口对相应的属性列进行解密处理,调用格式为: + +**gs_decrypt_aes128(column, key),gs_decrypt(decryptstr,keystr,decrypttype)** + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/5-database-audit.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/5-database-audit.md new file mode 100644 index 0000000000000000000000000000000000000000..792886a2cdccc1ea711f6836702e21ef42386ed4 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/5-database-audit.md @@ -0,0 +1,36 @@ +--- +title: 数据库审计 +summary: 数据库审计 +author: Guo Huan +date: 2022-05-07 +--- + +# 数据库审计 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。 + +## 客户价值 + +审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。 + +## 特性描述 + +数据库安全对数据库系统来说至关重要。MogDB将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/6-network-communication-security.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/6-network-communication-security.md new file mode 100644 index 0000000000000000000000000000000000000000..b285a501943e0b94fa97a973d92d784a0767cb87 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/6-network-communication-security.md @@ -0,0 +1,44 @@ +--- +title: 网络通信安全 +summary: 网络通信安全 +author: Guo Huan +date: 2022-05-07 +--- + +# 网络通信安全 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +为保护敏感数据在Internet上传输的安全性,MogDB支持通过SSL加密客户端和服务器之间的通讯。 + +## 客户价值 + +保证客户的客户端与服务器通讯安全。 + +## 特性描述 + +MogDB支持SSL协议标准。SSL(Secure Socket Layer)协议是一种安全性更高的应用层通信协议,主要用于Web安全传输,SSL包含记录层和传输层,记录层协议确定传输层数据的封装格式,传输层安全协议使用X.509认证。SSL协议利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥。通过SSL协议可以有效保障两个应用间通信的保密性和可靠性,使客户与服务器之间的通信不被攻击者窃听。 + +MogDB支持TLS 1.2协议标准。TLS 1.2协议是一种安全性更高的传输层通信协议,它包括两个协议组,TLS记录协议和TLS握手协议,每一组协议具有很多不同格式的信息。TLS协议是独立于应用协议的,高层协议可以透明地分布在TLS协议上面。通过TLS协议可保证通信双方的数据保密性和数据完整性。 + +## 特性增强 + +证书签名算法强度检查:对于一些强度较低的签名算法,给出告警信息,提醒客户更换包含高强度签名算法的证书。 + +证书超时时间检查:如果距离超期日期小于7天则给出告警信息,提醒客户端更换证书。 + +证书权限检查:在创建连接阶段对证书的权限进行校验。 + +## 特性约束 + +从CA认证中心申请到正式的服务器、客户端的证书和密钥。(假设服务器的私钥为server.key,证书为server.crt,客户端的私钥为client.key,证书为client.crt,CA根证书名称为cacert.pem。) + +需要打开SSL开关,并且配置证书和连接方式。 + +## 依赖关系 + +OpenSSL \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/7-resource-label.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/7-resource-label.md new file mode 100644 index 0000000000000000000000000000000000000000..32444d61ea88e7643364f73049e30adaf49c0402 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/7-resource-label.md @@ -0,0 +1,49 @@ +--- +title: 资源标签机制 +summary: 资源标签机制 +author: Guo Huan +date: 2022-05-07 +--- + +# 资源标签机制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +数据库资源是指数据库所记录的各类对象,包括数据库、模式、表、列、视图、触发器等,数据库对象越多,数据库资源的分类管理就越繁琐。资源标签机制是一种通过对具有某类相同“特征”的数据库资源进行分类标记而实现资源分类管理的一种技术。当管理员对数据库内某些资源“打上”标签后,可以基于该标签进行如审计或数据脱敏的管理操作,从而实现对标签所包含的所有数据库资源进行安全管理。 + +## 客户价值 + +合理的制定资源标签能够有效的进行数据对象分类,提高对象管理效率,降低安全策略配置的复杂性。当管理员需要对某组数据库资源对象做统一审计或数据脱敏等安全管理动作时,可将这些资源划分到一个资源标签,该标签即包含了具有某类特征或需要统一配置某种策略的数据库资源,管理员可直接对资源标签执行管理操作,大大降低了策略配置的复杂性和信息冗余程度,提高了管理效率。 + +## 特性描述 + +资源标签机制是将当前数据库内包含的各种资源进行“有选择性的”分类,管理员可以使用如下SQL语法进行资源标签的创建,从而将一组数据库资源打上标签: + +``` +CREATE RESOURCE LABEL schm_lb ADD SCHEMA (schema_for_label); +CREATE RESOURCE LABEL tb_lb ADD TABLE (schema_for_label.table_for_label); +CREATE RESOURCE LABEL col_lb ADD COLUMN (schema_for_label.table_for_label.column_for_label); +CREATE RESOURCE LABEL multi_lb ADD SCHEMA (schema_for_label), TABLE (table_for_label); +``` + +其中,schema_for_label、table_for_label、column_for_label分别为待标记模式、表、列。schm_lb标签包含了模式schm_for_label;tb_lb包含了表table_for_label;col_lb包含了列column_for_label;multi_lb包含模式schm_for_label和列table_for_label。对这些已配置的资源标签进行如统一审计或动态数据脱敏也即是对标签所包含的每一个数据库资源进行管理。 + +当前,资源标签所支持的数据库资源类型包括:SCHEMA、TABLE、COLUMN、VIEW、FUNCTION。 + +## 特性增强 + +无。 + +## 特性约束 + +- 资源标签需要由具备POLADMIN和SYSADMIN属性的用户或初始用户创建。 +- 不支持对临时表创建资源标签。 +- 同一个基本表的列只可能属于一个资源标签。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/8-unified-audit.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/8-unified-audit.md new file mode 100644 index 0000000000000000000000000000000000000000..b30f32efb8b75bdc47a2f3c9e06fc559dfa064d1 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/8-unified-audit.md @@ -0,0 +1,68 @@ +--- +title: 统一审计机制 +summary: 统一审计机制 +author: Guo Huan +date: 2022-05-07 +--- + +# 统一审计机制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +审计机制是行之有效的安全管理方案,可有效解决攻击者抵赖,审计的范围越大,可监控的行为就越多,而产生的审计日志就越多,影响实际审计效率。统一审计机制是一种通过定制化审计策略实现高效安全审计管理的技术。当管理员定义审计对象和审计行为后,用户执行的任务如果关联到对应的审计策略,则生成对应的审计行为,并记录审计日志。定制化审计策略可涵盖常见的用户管理活动、DDL和DML行为,满足日常审计诉求。 + +## 客户价值 + +审计是日常安全管理中必不可少的行为,当使用传统审计机制审计某种行为时,如SELECT,会导致产生大量的审计日志,进而增加整个系统的I/O,影响系统的性能;另一方面,大量的审计日志会影响管理员的审计效率。统一审计机制使得客户可以定制化生成审计日志的策略,如只审计数据库账户A查询某个表的行为。通过定制化审计,可以大大减少生成审计日志的数量,从而在保障审计行为的同时降低对系统性能的影响。而定制化审计策略可以提升管理员的审计效率。 + +## 特性描述 + +统一审计机制基于资源标签进行审计行为定制化,且将当前所支持的审计行为划分为access类和privileges类。一个完整的审计策略创建的SQL语法如下所示: + +``` +CREATE RESOURCE LABEL auditlabel add table(table_for_audit1, table_for_audit2); + +CREATE AUDIT POLICY audit_select_policy ACCESS SELECT ON LABEL(auditlabel) FILTER ON ROLES(usera); + +CREATE AUDIT POLICY audit_admin_policy PRIVILEGES ALTER, DROP ON LABEL(auditlabel) FILTER ON IP(local); +``` + +其中,auditlabel为本轮计划审计的资源标签,该资源标签中包含了两个表对象;audit_select_policy定义了用户usera对auditlabel对象的SELECT行为的审计策略,不区分访问源;audit_admin_policy定义了从本地对auditlabel对象进行ALTER和DROP操作行为的审计策略,不区分执行用户;当不指定ACCESS和PRIVILEGES的具体行为时,表示审计针对某一资源标签的所有支持的DDL和DML行为。当不指定具体的审计对象时,表示审计针对所有对象的操作行为。统一审计策略的增删改也会记录在统一审计日志中。 + +当前,统一审计支持的审计行为包括: + +| SQL类型 | 支持操作和对象类型 | +| ------- | ------------------------------------------------------------ | +| **DDL** | 操作:ALL ALTER ANALYZE COMMENT CREATE DROP GRANT REVOKE
SET SHOW
对象:DATABASE SCHEMA FUNCTION TRIGGER TABLE SEQUENCE FOREIGN_SERVER FOREIGN_TABLE TABLESPACE ROLE/USER INDEX VIEW DATA_SOURCE | +| **DML** | 操作:ALL COPY DEALLOCATE DELETE EXECUTE REINDEX INSERT
PREPARE SELECT TRUNCATE UPDATE | + +## 特性增强 + +无。 + +## 特性约束 + +- 统一审计策略需要由具备POLADMIN或SYSADMIN属性的用户或初始用户创建,普通用户无访问安全策略系统表和系统视图的权限。 +- 统一审计策略语法要么针对DDL行为,要么针对DML语法行为,同一个审计策略不可同时包含DDL和DML行为;统一审计策略目前支持最多设置98个。 +- 统一审计监控用户通过客户端执行的SQL语句,而不会记录数据库内部SQL语句。 +- 同一个审计策略下,相同资源标签可以绑定不同的审计行为,相同行为可以绑定不同的资源标签, 操作”ALL”类型包括DDL或者DML下支持的所有操作。 +- 同一个资源标签可以关联不同的统一审计策略,统一审计会按照SQL语句匹配的策略依次打印审计信息。 +- 统一审计策略的审计日志单独记录,暂不提供可视化查询接口,整个日志依赖于操作系统自带rsyslog服务,通过配置完成日志归档。 +- 在云服务场景下,日志需要存储在OBS服务中;在混合云场景下,可部署Elastic Search进行日志收集和可视化处理。 +- FILTER中的APP项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。 +- FILTER中的IP地址以ipv4为例支持如下格式。 + +| ip地址格式 | 示例 | +| ---------- | ------------------------ | +| 单ip | 127.0.0.1 | +| 掩码表示ip | 127.0.0.1\|255.255.255.0 | +| cidr表示ip | 127.0.0.1/24 | +| ip区间 | 127.0.0.1-127.0.0.5 | + +## 依赖关系 + +在公有云服务场景下,依赖OSS服务或OBS服务存储日志。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/9-dynamic-data-anonymization.md b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/9-dynamic-data-anonymization.md new file mode 100644 index 0000000000000000000000000000000000000000..6df341e7e2393df1084a6f7c6e5ea47b35677455 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/database-security/9-dynamic-data-anonymization.md @@ -0,0 +1,93 @@ +--- +title: 动态数据脱敏机制 +summary: 动态数据脱敏机制 +author: Guo Huan +date: 2022-05-07 +--- + +# 动态数据脱敏机制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据用户身份和脱敏策略进行数据脱敏,从而限制非授权用户对隐私数据的访问。 + +## 客户价值 + +数据隐私保护是数据库安全所需要具备的安全能力之一,可以在一定程度上限制非授权用户对隐私数据的访问,保证隐私数据安全。动态数据脱敏机制可以通过配置脱敏策略实现对指定数据库资源信息的隐私保护,另一方面,脱敏策略的配置也具有一定的灵活性,可以仅针对特定用户场景实现有针对性的隐私保护能力。 + +## 特性描述 + +动态数据脱敏机制基于资源标签进行脱敏策略的定制化,可根据实际场景选择特定的脱敏方式,也可以针对某些特定用户制定脱敏策略。一个完整的脱敏策略创建的SQL语法如下所示: + +``` +CREATE RESOURCE LABEL label_for_creditcard ADD COLUMN(user1.table1.creditcard); +CREATE RESOURCE LABEL label_for_name ADD COLUMN(user1.table1.name); +CREATE MASKING POLICY msk_creditcard creditcardmasking ON LABEL(label_for_creditcard); +CREATE MASKING POLICY msk_name randommasking ON LABEL(label_for_name) FILTER ON IP(local), ROLES(dev); +``` + +其中,label_for_creditcard和msk_name为本轮计划脱敏的资源标签,分别包含了两个列对象;creditcardmasking、randommasking为预置的脱敏函数;msk_creditcard定义了所有用户对label_for_creditcard标签所包含的资源访问时做creditcardmasking的脱敏策略,不区分访问源;msk_name定义了本地用户dev对label_for_name标签所包含的资源访问时做randommasking的脱敏策略;当不指定FILTER对象时则表示对所有用户生效,否则仅对标识场景的用户生效。 + +当前,预置的脱敏函数包括: + +| 脱敏函数名 | 示例 | +| ----------------- | ------------------------------------------------------------ | +| creditcardmasking | '4880-9898-4545-2525' 将会被脱敏为 'xxxx-xxxx-xxxx-2525',该函数仅对后4位之前的数字进行脱敏 | +| basicemailmasking | 'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com', 对出现第一个'@'之前的文本进行脱敏 | +| fullemailmasking | 'abcd@gmail.com' 将会被脱敏为 'xxxx@xxxxx.com',对出现最后一个'.'之前的文本(除'@'符外)进行脱敏 | +| alldigitsmasking | 'alex123alex' 将会被脱敏为 'alex000alex', 仅对文本中的数字进行脱敏 | +| shufflemasking | 'hello word' 将会被随机打乱顺序脱敏为 'hlwoeor dl', 该函数通过字符乱序排列的方式实现,属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏。 | +| randommasking | 'hello word' 将会被脱敏为 'ad5f5ghdf5',将文本按字符随机脱敏 | +| maskall | '4880-9898-4545-2525' 将会被脱敏为 'xxxxxxxxxxxxxxxxxxx' | + +每个脱敏函数规格如下: + +| 脱敏函数名 | 支持的数据类型 | +| ----------------- | ------------------------------------------------------------ | +| creditcardmasking | BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对信用卡格式的文本类数据) | +| basicemailmasking | BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对email格式的文本类型数据) | +| fullemailmasking | BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对email格式的文本类型数据) | +| alldigitsmasking | BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对包含数字的文本类型数据) | +| shufflemasking | BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对文本类型数据) | +| randommasking | BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对文本类型数据) | +| maskall | BOOL, RELTIME, TIME, TIMETZ, INTERVAL, TIMESTAMP, TIMESTAMPTZ, SMALLDATETIME, ABSTIME,TEXT, BPCHAR, VARCHAR, NVARCHAR2, NAME, INT8, INT4, INT2, INT1, NUMRIC, FLOAT4, FLOAT8, CASH | + +对于不支持的数据类型,默认使用maskall函数进行数据脱敏,若数据类型不属于maskall支持的数据类型则全部使用数字0进行脱敏,如果脱敏列涉及隐式转换,则结果以隐式转换后的数据类型为基础进行脱敏。另外需要说明的是,如果脱敏策略应用到数据列并生效,此时对该列数据的操作将以脱敏后的结果为基础而进行。 + +动态数据脱敏适用于和实际业务紧密相关的场景,根据业务需要为用户提供合理的脱敏查询接口,以避免通过撞库而获取原始数据。 + +## 特性增强 + +无。 + +## 特性约束 + +- 动态数据脱敏策略需要由具备POLADMIN或SYSADMIN属性的用户或初始用户创建,普通用户没有访问安全策略系统表和系统视图的权限。 +- 动态数据脱敏只在配置了脱敏策略的数据表上生效,而审计日志不在脱敏策略的生效范围内。 +- 在一个脱敏策略中,对于同一个资源标签仅可指定一种脱敏方式,不可重复指定。 +- 不允许多个脱敏策略对同一个资源标签进行脱敏,除以下脱敏场景外:使用FILTER指定策略生效的用户场景,包含相同资源标签的脱敏策略间FILTER生效场景无交集,此时可以根据用户场景明确辨别资源标签被哪种策略脱敏。 +- Filter中的APP项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。 +- 对于带有query子句的INSERT或MERGE INTO操作,如果源表中包含脱敏列,则上述两种操作中插入或更新的结果为脱敏后的值,且不可还原。 +- 在内置安全策略开关开启的情况下,执行ALTER TABLE EXCHANGE PARTITION操作的源表若在脱敏列则执行失败。 +- 对于设置了动态数据脱敏策略的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器绕过脱敏策略。 +- 最多支持创建98个动态数据脱敏策略。 +- 仅支持使用上述七种预置脱敏策略。 +- 仅支持对只包含COLUMN属性的资源标签做脱敏。 +- 仅支持对基本表的列进行数据脱敏。 +- 仅支持对SELECT查询到的数据进行脱敏。 +- FILTER中的IP地址以ipv4为例支持如下格式。 + +| ip地址格式 | 示例 | +| ---------- | ------------------------ | +| 单ip | 127.0.0.1 | +| 掩码表示ip | 127.0.0.1\|255.255.255.0 | +| cidr表示ip | 127.0.0.1/24 | +| ip区间 | 127.0.0.1-127.0.0.5 | + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/1-support-for-functions-and-stored-procedures.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/1-support-for-functions-and-stored-procedures.md new file mode 100644 index 0000000000000000000000000000000000000000..7028f7248b5f5a8993614bbf95bce2bb0511bff7 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/1-support-for-functions-and-stored-procedures.md @@ -0,0 +1,38 @@ +--- +title: 函数及存储过程支持 +summary: 函数及存储过程支持 +author: Guo Huan +date: 2022-05-07 +--- + +# 函数及存储过程支持 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。 + +## 客户价值 + +1. 允许客户模块化程序设计,对SQL语句集进行封装,调用方便。 +2. 存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。 +3. 系统管理员通过限制执行某一存储过程的权限,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 + +## 特性描述 + +MogDB支持SQL标准中的函数及存储过程,其中存储过程兼容了部分主流数据库存储过程的语法,增强了存储过程的易用性。 + +## 特性增强 + +支持PL/PGSQL单步调试功能。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/10-autonomous-transaction.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/10-autonomous-transaction.md new file mode 100644 index 0000000000000000000000000000000000000000..262d4ec2bfdf4aa1dae6c6562d547fdb358157d6 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/10-autonomous-transaction.md @@ -0,0 +1,44 @@ +--- +title: 自治事务 +summary: 自治事务 +author: Guo Huan +date: 2022-05-07 +--- + +# 自治事务 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +子事务的提交不受主事务提交或回滚影响的一类事务。 + +## 客户价值 + +满足客户多样化使用场景。 + +## 特性描述 + +自治事务为在主事务执行过程中,以独立的事务上下文执行指定的某一类SQL语句,其commit和rollback不受主事务commit和rollback的影响。 + +用户自定义函数、存储过程支持自治事务。 + +典型使用场景是,用一个表记录主事务执行过程中的操作信息,并且在主事务失败回退的时候,表中记录的操作信息不予回退。 + +## 特性增强 + +无。 + +## 特性约束 + +- 触发器函数不支持自治事务。 +- 函数或者存储过程的自治事务块中,静态sql语句不支持变量传递。 +- 自治事务不支持执行嵌套。 +- 包含自治事务的函数,不支持参数传递的返回值。 +- 包含自治事务的存储过程/函数,不支持exception异常处理。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/11-global-temporary-table.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/11-global-temporary-table.md new file mode 100644 index 0000000000000000000000000000000000000000..2ee1f1e6dbffb8f905174c12dd1bca8ed88b4e61 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/11-global-temporary-table.md @@ -0,0 +1,45 @@ +--- +title: 全局临时表 +summary: 全局临时表 +author: Guo Huan +date: 2022-05-07 +--- + +# 全局临时表 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +临时表顾名思义是不保证持久化的表,其生命周期一般跟session或者事务绑定,可以方便用于表达处理过程中的一些临时数据存放,加速查询。 + +## 客户价值 + +提升临时表的表达能力和易用性。 + +## 特性描述 + +全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。 + +全局临时表有两种模式:一种是基于会话级别的(ON COMMIT PRESERVE ROWS),当会话结束时自动清空用户数据;一种是基于事务级别的(ON COMMIT DELETE ROWS), 当执行commit或rollback时自动清空用户数据。建表时如果没有指定ON COMMIT选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg_temp_开头的schema。 + +## 特性增强 + +在本地临时表的基础上增加了全局临时表的处理。 + +## 特性约束 + +- 不支持并行扫描 +- 不支持temp tablespace +- 不支持partition +- 不支持GIST索引 +- 不支持User-defined统计信息pg_statistic_ext +- 不支持ON COMMIT DROP +- 不支持hash bucket 聚簇存储 +- 不支持列存 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/12-pseudocolumn-rownum.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/12-pseudocolumn-rownum.md new file mode 100644 index 0000000000000000000000000000000000000000..793cfb21eea32687eec626d08ed19de942399785 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/12-pseudocolumn-rownum.md @@ -0,0 +1,43 @@ +--- +title: 伪列ROWNUM +summary: 伪列ROWNUM +author: Guo Huan +date: 2022-05-07 +--- + +# 伪列ROWNUM + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +ROWNUM为查询出来的每一行记录生成一个序号,从1开始依次递增且不会重复。 + +## 客户价值 + +- 兼容Oracle特性,方便数据库迁移。 +- 与LIMIT特性类似,能够筛选出结果集的前n条记录。 + +## 特性描述 + +ROWNUM(伪列),用于对SQL查询中符合条件的记录进行顺序标注。查询结果第一行ROWNUM为1,第二行为2,依次类推,第n行为n。通常用来筛选出查询结果集中的前n行数据,与MogDB中LIMIT功能类似。 + +## 特性增强 + +在内部执行时,优化器会将ROWNUM重写成LIMIT去执行,加快执行速率。 + +## 特性约束 + +- ROWNUM是伪列,不可作为别名,以免SQL语句出现歧义; +- 创建索引时不可使用ROWNUM。例如:create index index_name on table(rownum); +- 创建表时default值不可为ROWNUM。例如:create table table_name(id int default rownum); +- Where子句中不可使用rownum的别名。例如:select rownum rn from table where rn < 5; +- 在插入数据时不可使用ROWNUM。例如:insert into table values(rownum,’blue’); +- 不可在无表查询中使用ROWNUM。例如:select * from (values(rownum,1)), x(a,b); +- 若 having 子句中含有ROWNUM(且不在聚合函数中)时,group by子句中必须含有ROWNUM(且不在聚合函数中)。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/13-stored-procedure-debugging.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/13-stored-procedure-debugging.md new file mode 100644 index 0000000000000000000000000000000000000000..e3c2b78a62323f7a751d09d5c729e347bcf8dcfa --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/13-stored-procedure-debugging.md @@ -0,0 +1,38 @@ +--- +title: 支持存储过程调试 +summary: 支持存储过程调试 +author: Guo Huan +date: 2022-05-07 +--- + +# 支持存储过程调试 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +提供调试存储过程的一组API,可以进行断点调试、变量打印等对存储过程的调试功能。 + +## 客户价值 + +提升客户基于MogDB开发存储过程的开发体验。 + +## 特性描述 + +存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。一个存储过程中往往包含着众多的sql以及过程化的执行结构,根据所需业务的规模大小而定。然而书写一个大的存储过程,往往会伴随着逻辑BUG,仅通过执行存储过程观察结果很难甚至无法发现其中存在的问题,因此需要一个调试工具。 + +存储过程调试工具,提供一组调试接口,可以使存储过程单步执行,在执行过程中设置断点、打印变量等,便于SQL开发者能够及时便捷的发现错误、修正错误,更高效、更快捷、高质量的进行功能开发。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/14-jdbc-client-load-balancing-and-readwrite-isolation.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/14-jdbc-client-load-balancing-and-readwrite-isolation.md new file mode 100644 index 0000000000000000000000000000000000000000..8681123c66dab6449260ab336646590758d04977 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/14-jdbc-client-load-balancing-and-readwrite-isolation.md @@ -0,0 +1,36 @@ +--- +title: JDBC客户端负载均衡与读写分离 +summary: JDBC客户端负载均衡与读写分离 +author: Guo Huan +date: 2022-05-07 +--- + +# JDBC客户端负载均衡与读写分离 + +## 可获得性 + +本特性自MogDB 2.1.0 版本开始引入。 + +## 特性简介 + +JDBC 客户端提供负载均衡与读写分离能力。 + +## 客户价值 + +可从JDBC客户端测配置负载均衡与读写分离。 + +## 特性描述 + +客户端多节点IP+Port配置,适应多AZ间高可用切换、适应异地容灾切换。支持连接级读写分离配置。支持优先连接只读节点。多个只读节点连接分布均衡。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/15-in-place-update-storage-engine.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/15-in-place-update-storage-engine.md new file mode 100644 index 0000000000000000000000000000000000000000..dc24b37f56d10b693f6b897060483fcdb3e0e34b --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/15-in-place-update-storage-engine.md @@ -0,0 +1,36 @@ +--- +title: In-place Update存储引擎 +summary: In-place Update存储引擎 +author: Guo Huan +date: 2022-05-07 +--- + +# In-place Update存储引擎 + +## 可获得性 + +本特性自MogDB 2.1.0 版本开始引入。 + +## 特性简介 + +In-place Update存储引擎(原地更新),是MogDB内核新增的一种存储模式。MogDB内核此前的版本使用的行存储引擎是Append Update(追加更新)模式。追加更新对于业务中的增、删以及HOT(HeapOnly Tuple) Update(即同一页面内更新)有很好的表现,但对于跨数据页面的非HOT UPDATE场景,垃圾回收不够高效,Ustore存储引擎可很好解决上述问题。 + +## 客户价值 + +In-place Update存储引擎可有效的降低多次更新元组后占用存储空间问题。 + +## 特性描述 + +新增的In-place update存储引擎很好的解决了Append update存储引擎空间膨胀,元组较大的劣势,高效回滚段的设计是In-place update存储引擎的基础。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/16-publication-subscription.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/16-publication-subscription.md new file mode 100644 index 0000000000000000000000000000000000000000..8615a63e7cb6c618d2b30fc16b7a473dd859ac7e --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/16-publication-subscription.md @@ -0,0 +1,48 @@ +--- +title: 发布订阅 +summary: 发布订阅 +author: Guo Huan +date: 2022-05-10 +--- + +# 发布订阅 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +发布订阅基于逻辑复制实现,其中有一个或者更多订阅者订阅一个发布者节点上的一个或者更多发布。订阅者从它们所订阅的发布拉取数据。实现集群间的数据实时同步。 + +## 客户价值 + +发布订阅的典型使用场景是: + +- 在一个数据库或者一个数据库的子集中发生更改时,把增量的改变发送给订阅者。 +- 在更改到达订阅者时引发触发器。 +- 把多个数据库联合到单一数据库中(例如用于分析目的)。 + +## 特性描述 + +发布者上的更改会被实时发送给订阅者。订阅者以与发布者相同的顺序应用那些数据,这样在一个订阅中能够保证发布的事务一致性。这种数据复制的方法有时候也被称为事务性复制。 + +订阅者数据库的行为与任何其他MogDB实例相同,并且可以被用作其他数据库的发布者,只需要定义它自己的发布。当订阅者被应用当作只读时,单一的订阅中不会有冲突。在另一方面,如果应用或者对相同表集合的订阅者执行了其他的写动作,冲突可能会发生。 + +## 特性增强 + +无。 + +## 特性约束 + +发布订阅基于逻辑复制实现,继承所有逻辑复制的限制,同时发布订阅还有下列额外的限制或者缺失的功能。 + +- 数据库模式和DDL命令不会被复制。初始模式可以手工使用gs_dump --schema-only进行拷贝。后续的模式改变需要手工保持同步。 +- 序列数据不被复制。后台由序列支撑的serial或者标识列中的数据当然将被作为表的一部分复制,但是序列本身在订阅者上仍将显示开始值。如果订阅者被用作一个只读数据库,那么这通常不会是什么问题。不过,如果订阅者数据库预期有某种转换或者容错,那么序列需要被更新到最后的值,要么通过从发布者拷贝当前数据的防范(也许使用gs_dump),要么从表本身决定一个足够高的值。 +- 只有表支持复制,包括分区表。试图复制其他类型的关系,例如视图、物化视图或外部表,将会导致错误。 +- 同一数据库内的多个订阅不应当订阅内容重复的发布(指发布相同的表),否则会产生数据重复或者主键冲突。 +- 如果被发布的表中包含不支持btree/hash索引的数据类型(如地理类型等),那么该表需要有主键,才能成功的复制UPDATE/DELETE操作到订阅端。否则复制会失败,同时订阅端会出现“FATAL: could not identify an equality operator for type xx”的日志。 + +## 依赖关系 + +发布订阅依赖逻辑复制功能。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/17-foreign-key-lock-enhancement.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/17-foreign-key-lock-enhancement.md new file mode 100644 index 0000000000000000000000000000000000000000..939299c29faff782b4afb68456388de41be97875 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/17-foreign-key-lock-enhancement.md @@ -0,0 +1,45 @@ +--- +title: 外键锁增强 +summary: 外键锁增强 +author: Guo Huan +date: 2022-05-10 +--- + +# 外键锁增强 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +新增两类行锁,由share和update锁扩展到key share、share、no key update和update。非主键的更新获取的是no key update锁,外键触发器获取的行锁为key share锁,这两种类型的锁互不冲突,以此提升了外键锁的并发性。 + +## 客户价值 + +绝大多数的表更新操作为非主键的更新,该特性有效地减少了有外键约束的场景下多并发更新的阻塞,提升效率。 + +## 特性描述 + +当对父表一行元组的非主键列进行更新时,获取no key update锁;对子表对应元组的更新或插入,触发外键触发器,获取父表元组的key share锁。两者互不阻塞。 + +由于增加了互不冲突的行锁,多事务不再只由share锁组成,而有多种不同行锁的组合方式,依据如下的冲突表。 + +| 锁模式 | key share | share | no key update | update | +| ------------- | --------- | ----- | ------------- | ------ | +| key share | | | | X | +| share | | | X | X | +| no key update | | X | X | X | +| update | X | X | X | X | + +## 特性增强 + +无。 + +## 特性约束 + +- 新增的行锁暂不支持ustore表 + +## 依赖关系 + +无 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/18-data-compression-in-oltp-scenarios.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/18-data-compression-in-oltp-scenarios.md new file mode 100644 index 0000000000000000000000000000000000000000..ea1a35f7059b25af69e2bd5224819b2f08395e90 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/18-data-compression-in-oltp-scenarios.md @@ -0,0 +1,29 @@ +--- +title: 支持OLTP场景数据压缩 +summary: 支持OLTP场景数据压缩 +author: Guo Huan +date: 2022-05-10 +--- + +# 支持OLTP场景数据压缩 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +支持OLTP场景行存数据压缩,提供通用压缩算法,通过对数据页的透明页压缩和维护页面存储位置的方式,做到高压缩、高性能。磁盘持久化用2个文件存储,分别是压缩地址文件(扩展名.pca)和压缩数据文件(扩展名.pcd)。 + +## 客户价值 + +典型使用场景是:希望降低数据库磁盘的空间需求。 + +## 特性描述 + +新增的支持OLTP场景数据压缩可以降低行表、索引数据的磁盘存储空间需求,在IO密集的数据库系统,可以有一定的性能提升。 + +## 特性约束 + +- 仅支持行存表、BTree索引,不可以在USTORE、段页式存储引擎上使用。 +- 压缩表索引文件采用mmap访问,需要基于压缩表文件数量,设置足够的max_map_count。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/2-sql-hints.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/2-sql-hints.md new file mode 100644 index 0000000000000000000000000000000000000000..717f98ffc722d5ea2d9e46753722f8def6c2dd52 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/2-sql-hints.md @@ -0,0 +1,40 @@ +--- +title: 支持SQL hint +summary: 支持SQL hint +author: Guo Huan +date: 2022-05-07 +--- + +# 支持SQL hint + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +支持SQL hint影响执行计划生成。 + +## 客户价值 + +提升SQL查询性能。 + +## 特性描述 + +Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,指定重分布过程中的倾斜信息等多个手段来进行执行计划的调优,以提升查询的性能。 + +## 特性增强 + +支持planhint设置session级优化器参数。 + +支持指定子查询不展开。 + +支持单query禁用gpc。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/3-full-text-indexing.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/3-full-text-indexing.md new file mode 100644 index 0000000000000000000000000000000000000000..e0d8a52b87dccea35dc015c0fed10f7677db97d2 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/3-full-text-indexing.md @@ -0,0 +1,53 @@ +--- +title: 全文索引 +summary: 全文索引 +author: Guo Huan +date: 2022-05-07 +--- + +# 全文索引 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +MogDB中提供的全文索引功能可以对文档进行预处理,并且可以使后续的搜索更快速。 + +## 客户价值 + +MogDB全文索引功能提供了查询可读性文档的能力,并且通过查询相关度将结果进行排序。 + +## 特性描述 + +构建全文索引的预处理过程包括: + +- 将文档解析成token。 + + 为每个文档标记不同类别的token是非常有必要的,例如:数字、文字、复合词、电子邮件地址,这样就可以做不同的处理。原则上token的类别依赖于具体的应用,但对于大多数的应用来说,可以使用一组预定义的token类。 + +- 将token转换为词素。 + + 词素像token一样是一个字符串,但它已经标准化处理,这样同一个词的不同形式是一样的。例如,标准化通常包括:将大写字母折成小写字母、删除后缀(如英语中的s或者es)。这将允许通过搜索找到同一个词的不同形式,不需要繁琐地输入所有可能的变形样式。同时,这一步通常会删除停用词。这些停用词通常因为太常见而对搜索无用。(总之,token是文档文本的原片段,而词素被认为是有用的索引和搜索词。)MogDB使用词典执行这一步,且提供了各种标准的词典。 + +- 保存搜索优化后的预处理文档。 + + 比如,每个文档可以呈现为标准化词素的有序组合。伴随词素,通常还需要存储词素位置信息以用于邻近排序。因此文档包含的查询词越密集其排序越高。词典能够对token如何标准化做到细粒度控制。使用合适的词典,可以定义不被索引的停用词。 + +## 特性增强 + +无。 + +## 特性约束 + +MogDB的全文检索功能当前限制约束是: + +- 每个分词长度必须小于2KB。 +- tsvector结构(分词+位置)的长度必须小于1MB。 +- tsvector的位置值必须大于0,且小于等于16,383。 +- 每个分词在文档中位置数必须小于256,若超过将舍弃后面的位置信息。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/4-copy-interface-for-error-tolerance.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/4-copy-interface-for-error-tolerance.md new file mode 100644 index 0000000000000000000000000000000000000000..2ad59d972119ba4663fe957d60472a06bd0f4ce5 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/4-copy-interface-for-error-tolerance.md @@ -0,0 +1,36 @@ +--- +title: Copy接口支持容错机制 +summary: Copy接口支持容错机制 +author: Guo Huan +date: 2022-05-07 +--- + +# Copy接口支持容错机制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +支持将Copy过程中的部分错误导入到指定的错误表中,并且保持Copy过程不被中断。 + +## 客户价值 + +提升Copy功能的可用性和易用性,提升对于源数据格式异常等常见错误的容忍性和鲁棒性。 + +## 特性描述 + +MogDB提供用于创建函数的封装好的Copy错误表,并允许用户在使用Copy From指令时指定容错选项,使得Copy From语句在执行过程中部分解析、数据格式、字符集等相关的报错不会报错中断事务、而是被记录至错误表中,使得在Copy From的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。 + +## 特性增强 + +无。 + +## 特性约束 + +支持容错的具体错误种类请参见《管理指南》中“使用COPY FROM STDIN导入数据 > [处理错误表](3-running-the-COPY-FROM-STDIN-statement-to-import-data#处理错误表)”章节。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/5-partitioning.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/5-partitioning.md new file mode 100644 index 0000000000000000000000000000000000000000..8723a87f169f46e4c54326152c0a35e37aade06f --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/5-partitioning.md @@ -0,0 +1,58 @@ +--- +title: 分区 +summary: 分区 +author: Guo Huan +date: 2022-05-07 +--- + +# 分区 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +数据分区是在一个节点内部对数据按照用户指定的策略做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分。 + +## 客户价值 + +对于大多数用户使用场景,分区表和普通表相比具有以下优点: + +- 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 +- 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 +- 均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。 + +## 特性描述 + +目前MogDB数据库支持范围分区表、列表分区表、哈希分区表: + +- 范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的。 + + 范围分区功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。 + +- 列表分区表:将数据基于各个分区内包含的键值映射到每一个分区,分区包含的键值在创建分区时指定。 + + 列表分区功能,即根据表的一列,将要插入表的记录中出现的键值分为若干个列表(这些列表在不同的分区里没有重叠),然后为每个列表创建一个分区,用来存储相应的数据。 + +- 哈希分区表:将数据通过哈希映射到每一个分区,每一个分区中存储了具有相同哈希值的记录。 + + 哈希分区功能,即根据表的一列,通过内部哈希算法将要插入表的记录划分到对应的分区中。 + +用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。用户可以在实际使用中根据需要调整建表时的分区键,使每次查询结果尽可能存储在相同或者最少的分区内(称为“分区剪枝”),通过获取连续I/O大幅度提升查询性能。 + +实际业务中,时间经常被作为查询对象的过滤条件。因此,用户可考虑选择时间列为分区键,键值范围可根据总数据量、一次查询数据量调整。 + +## 特性增强 + +支持范围分区表的合并功能。 + +List/Hash分区表支持数据交换。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/6-support-for-advanced-analysis-functions.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/6-support-for-advanced-analysis-functions.md new file mode 100644 index 0000000000000000000000000000000000000000..a849553f32f25f131c9c699c2ee210c61fc52408 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/6-support-for-advanced-analysis-functions.md @@ -0,0 +1,57 @@ +--- +title: 高级分析函数支持 +summary: 高级分析函数支持 +author: Guo Huan +date: 2022-05-07 +--- + +# 高级分析函数支持 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +无。 + +## 客户价值 + +我们提供窗口函数来进行数据高级分析处理。窗口函数将一个表中的数据进行预先分组,每一行属于一个特定的组,然后在这个组上进行一系列的关联分析计算。这样可以挖掘出每一个元组在这个集合里的一些属性和与其他元组的关联信息。 + +## 特性描述 + +简单举例说明窗口分析功能:分析某一部门内每个人的薪水和部门平均薪水的对比。 + +``` +SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary; +depname | empno | salary | avg +-----------+-------+--------+----------------------- +develop | 11 | 5200 | 5020.0000000000000000 +develop | 7 | 4200 | 5020.0000000000000000 +develop | 9 | 4500 | 5020.0000000000000000 +develop | 8 | 6000 | 5020.0000000000000000 +develop | 10 | 5200 | 5020.0000000000000000 +personnel | 5 | 3500 | 3700.0000000000000000 +personnel | 2 | 3900 | 3700.0000000000000000 +sales | 3 | 4800 | 4866.6666666666666667 +sales | 1 | 5000 | 4866.6666666666666667 +sales | 4 | 4800 | 4866.6666666666666667 +(10 rows) +``` + +可以看到,通过这个avg(salary) OVER (PARTITION BY depname)分析函数,每一个人的薪水和与部门的平均薪水很容易计算出来。 + +目前,系统支持row_number(),rank(),dense_rank(),percent_rank(),cume_dist(),ntile(),lag(),lead(),first_value(),last_value(),nth_value()分析函数。具体的函数用法和语句请参见《参考指南》中“系统函数 > [窗口函数](18-window-functions)”章节。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/7-materialized-view.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/7-materialized-view.md new file mode 100644 index 0000000000000000000000000000000000000000..0bf10b93589652af52d3e41b669002251bdf5221 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/7-materialized-view.md @@ -0,0 +1,36 @@ +--- +title: 物化视图 +summary: 物化视图 +author: Guo Huan +date: 2022-05-07 +--- + +# 物化视图 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +物化视图实际上就是一种特殊的物理表,物化视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性较大,任何对视图的查询实际上都是转换为对SQL语句的查询,性能并没有实际上提高。而物化视图实际上就是存储SQL所执行语句的结果,起到缓存的效果。 + +## 客户价值 + +使用物化视图功能提升查询效率。 + +## 特性描述 + +支持全量物化视图和增量物化视图,全量物化视图只支持全量更新。增量物化视图可实现异步更新功能,用户可通过执行语句把新增数据刷新到物化视图中。 + +## 特性增强 + +无。 + +## 特性约束 + +仅支持基表简单过滤查询和UNION ALL语句。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/8-hyperloglog.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/8-hyperloglog.md new file mode 100644 index 0000000000000000000000000000000000000000..93eebd2ea64b7629d8bcfc14306f52fc8e94195c --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/8-hyperloglog.md @@ -0,0 +1,38 @@ +--- +title: 支持HyperLogLog +summary: 支持HyperLogLog +author: Guo Huan +date: 2022-05-07 +--- + +# 支持HyperLogLog + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +通过使用HyperLogLog相关函数,计算唯一值个数Count(Distinct),提升性能。 + +## 客户价值 + +提升AP/TP类查询的性能。 + +## 特性描述 + +HLL(HyperLogLog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快,节省空间的特点,不需要直接存储集合本身,而是存储一种名为HLL的数据结构。每当有新数据加入进行统计时,只需要把数据经过哈希计算并插入到HLL中,最后根据HLL就可以得到结果。 + +HLL在计算速度和所占存储空间上都占优势。在时间复杂度上,Sort算法需要排序至少O(nlogn)的时间,虽说Hash算法和HLL一样扫描一次全表O(n)的时间就可以得出结果,但是存储空间上,Sort算法和Hash算法都需要先把原始数据存起来再进行统计,会导致存储空间消耗巨大。而对HLL来说不需要存原始数据,只需要维护HLL数据结构,所以占用空间始终是1280字节常数级别。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/9-creating-an-index-online.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/9-creating-an-index-online.md new file mode 100644 index 0000000000000000000000000000000000000000..7a0b28001d8029bf5aa90fbc86fcf5547fc4ad3f --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/9-creating-an-index-online.md @@ -0,0 +1,40 @@ +--- +title: 在线添加索引 +summary: 在线添加索引 +author: Guo Huan +date: 2022-05-07 +--- + +# 在线添加索引 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +通过create index concurrently语法,以不阻塞DML的方式在线创建索引。 + +## 客户价值 + +创建索引时指定concurrently关键字,可以实现创建过程中不阻塞DML,不阻塞用户在线业务。 + +## 特性描述 + +创建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定concurrently关键字,对表加的是ShareUpdateExclusiveLock锁,可以实现创建过程中不阻塞DML。 + +在线添加索引,需要执行先后两次对该表的权标扫描来完成build,第一次扫描的时候创建索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。由于需要执行两次对表的扫描和build,而且必须等待现有的所有可能对该表执行修改的事务结束。这意味着该索引的创建比正常耗时更长,同时因此带来的CPU和I/O消耗对其他业务也会造成影响。 + +## 特性增强 + +无。 + +## 特性约束 + +- 在线添加索引时只能指定一个索引的名称。 +- 普通CREATE INDEX命令可以在事务内执行,但是CREATE INDEX CONCURRENTLY不可以在事务内执行。 +- 列存表、分区表和临时表不支持CONCURRENTLY方式创建索引。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/1-primary-standby.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/1-primary-standby.md new file mode 100644 index 0000000000000000000000000000000000000000..202f27e3f90ab1a7a062b73d7e8c78843b443515 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/1-primary-standby.md @@ -0,0 +1,42 @@ +--- +title: 主备机 +summary: 主备机 +author: Guo Huan +date: 2022-05-07 +--- + +# 主备机 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始支持DN主备。 + +## 特性简介 + +为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下,MogDB能够保证故障之前的数据无丢失,满足ACID特性。 + +## 客户价值 + +主备机功能可以支持主机故障时切换到备机,数据不丢失,业务可以快速恢复。 + +## 特性描述 + +主备环境可以支持主备从和一主多备两种模式。主备从模式下,备机需要重做日志,可以升主,而从备只能接收日志,不可以升主。而在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备从主要用于大数据分析类型的OLAP系统,能够节省一定的存储资源。而一主多备提供更高的容灾能力,更加适合于大批量事务处理的OLTP系统。 + +当主备机均正常可用时,主备之间可以通过switchover进行角色切换;当主机故障后,可以通过failover对备机进行升主。 + +初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要build功能,将主机的数据和WAL日志发送到备机。主机故障后重新以备机的角色加入时,也需要build功能将其数据和日志与新主拉齐。另外,在在线扩容的场景中,需要通过build来同步元数据到新节点上的实例。build包含全量build和增量build,全量build要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量build只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量build来进行故障恢复,如果增量build失败,再继续执行全量build,直至故障恢复。 + +为了实现所有实例的高可用容灾能力,除了以上对DN设置主备多个副本,MogDB还提供了其他一些主备容灾能力,使得实例故障后可以尽快地恢复,不中断业务,将因为硬件、软件和人为造成的故障对业务的影响降到最低,以保证业务的连续性。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/10-adding-or-deleting-a-standby-server.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/10-adding-or-deleting-a-standby-server.md new file mode 100644 index 0000000000000000000000000000000000000000..0954f4d14b6485488b8503c8593bee75cf047c30 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/10-adding-or-deleting-a-standby-server.md @@ -0,0 +1,59 @@ +--- +title: 备机增加删除 +summary: 备机增加删除 +author: Guo Huan +date: 2022-05-07 +--- + +# 备机增加删除 + +## 可获得性 + +本特性自MogDB 2.0.0 版本开始引入。 + +## 特性简介 + +支持新增和删除备节点。 + +## 客户价值 + +- 当主数据库的读取压力较大,或者用户想要提升数据库灾难恢复能力,需要新增备节点。 +- 当集群中的某些备节点发生故障无法短时间内进行修复时,为保证集群状态正常,用户可以先将故障节点删除。 + +## 特性描述 + +- 支持从单机或者一主多备状态下最多扩容至一主八备,支持新增级联备机,支持在集群中存在故障备机的情况下新增备节点。 +- 支持从一主多备删除至单节点,支持备机故障的情况下将其删除。 +- 支持在线新增和删除备节点,即可以在不影响主机业务的情况下进行新增和删除备节点。 + +## 特性增强 + +无。 + +## 特性约束 + +新增备机的约束: + +- 数据库主机上存在MogDB镜像包。 +- 在新增的扩容备机上创建好与主机上相同的用户和用户组。 +- 已存在的数据库节点和新增的扩容节点之间需要建立好root用户互信以及数据库管理用户的互信。 +- 正确配置xml文件,在已安装数据库配置文件的基础上,添加需要扩容的备机信息。 +- 只能使用root用户执行扩容命令。 +- 不允许同时在主节点上执行gs_dropnode命令删除其他备机。 +- 执行扩容命令前需要导入主机数据库的环境变量。 +- 扩容备机的操作系统与主机保持一致。 +- 操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。 + +删除备机的约束: + +- 删除备节点的操作只能在主节点上执行。 +- 操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。 +- 不允许同时在主节点上执行gs_expansion命令进行扩容。 +- 不允许同时执行2次相同的gs_dropnode命令。 +- 执行删除操作前,需要确保主节点和备节点之间建立好数据库管理用户的互信。 +- 需要使用数据库管理用户执行该命令。 +- 执行命令前需要通过source命令导入主机数据库的环境变量。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/11-delaying-entering-the-maximum-availability-mode.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/11-delaying-entering-the-maximum-availability-mode.md new file mode 100644 index 0000000000000000000000000000000000000000..7a93a919d965fb5a142452a02307a234f4e66158 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/11-delaying-entering-the-maximum-availability-mode.md @@ -0,0 +1,42 @@ +--- +title: 延迟进入最大可用模式 +summary: 延迟进入最大可用模式 +author: Guo Huan +date: 2022-05-10 +--- + +# 延迟进入最大可用模式 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +支持主机延迟进入最大可用模式。 + +## 客户价值 + +当主机与同步备机之间的网络不稳定或其他原因导致主机感知到备机退出,且主机打开最大可用模式配置时,在一定时间窗内仍维持主机在最大保护模式的状态,超出该时间窗口后,主机进入到最大可用模式。 + +可以避免因网络抖动、进程闪断等因素导致主机在最大保护模式和最大可用模式之间频繁来回切换。 + +## 特性描述 + +当最大可用模式most_available_sync配置为on,在主备场景下,当存在同步备发生故障,导致不满足当前所配置的同步备数量(详细可参考synchronous_standby_names的含义)时,如果配置了keep_sync_window参数,则在keep_sync_window设置的时间窗口内,继续保持最大保护模式,即阻塞主机的事务提交,延缓进入最大可用模式的时间。 + +若在keep_sync_window超时窗口内,同步备机故障恢复,且满足当前所配置的同步备数量,则不阻塞事务,恢复到正常状态。 + +## 特性增强 + +无。 + +## 特性约束 + +- 该特性仅在最大可用模式打开的前提下生效。 +- 启用该特性可能会对RPO造成影响, 若主机在所配置的超时时间窗口内发生故障,主机的事务只在本地提交,未同步到故障的同步备机。 +- 该特性不适用于级联备机。 + +## 依赖关系 + +依赖最大可用模式。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/12-parallel-logical-decoding.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/12-parallel-logical-decoding.md new file mode 100644 index 0000000000000000000000000000000000000000..96be2f9ce26762ab08f5e60767f430d31bb65435 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/12-parallel-logical-decoding.md @@ -0,0 +1,52 @@ +--- +title: 并行逻辑解码 +summary: 并行逻辑解码 +author: Guo Huan +date: 2022-05-10 +--- + +# 并行逻辑解码 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +支持多线程并行解码。 + +## 客户价值 + +大幅提升逻辑解码性能,解码速度由3~5MBps可提升到标准场景(16核CPU、内存128G、网络带宽 > 200MBps、表的列数为10\~100、单行数据量0.1KB\~1KB、DML操作以insert为主、不涉及落盘事务即单个事务中语句数量小于4096)下的100MBps。 + +## 特性描述 + +在使用JDBC或pg_recvlogical解码时,设置配置选项parallel-decode-num为大于1且小于等于20的值,开启并行解码特性,使用一个读取线程、多个解码线程以及一个发送线程协同进行逻辑解码操作,显著提升解码速度。 + +## 特性增强 + +无。 + +## 特性约束 + +1. 当前的硬件和网络环境正常;由于逻辑日志一般为xlog的两倍,为保证xlog速度达到100MBps,I/O带宽至少保证200MBps;因为reader、decoder、sender线程均需预留资源,CPU需预留并发数+2的核数,如4并发场景需要预留6核。在实际场景中,使用备机解码即可保证需求,无需进行特殊的资源预留规划。为保证解码性能达标以及尽量降低对业务的影响,一台备机上应尽量仅建立一个并行解码连接,保证CPU、内存、带宽资源充足。 +2. 日志级别的guc参数wal_level = logical。 +3. guc参数max_replication_slots >= 每个DN所需的(物理流复制槽数+备份槽数+逻辑复制槽数)。 +4. 解码配置选项parallel-decode-num > 1且<= 20,指定并行的解码线程数。 +5. 不支持DDL语句解码。 +6. 不支持列存、数据页复制的解码。 +7. 不支持解码分布式事务,当前机制为从DN解码,无法保证分布式事务一致性解码。 +8. 单条元组大小不超过1GB,考虑解码结果可能大于插入数据,因此建议单条元组大小不超过500MB。 +9. 不支持压缩表的DML语句解码。 +10. MogDB支持解码的数据类型为:INTEGER、BIGINT、SMALLILNT、TINYINT、SERIAL、SMALLSERIAL、BIGSERIAL、FLOAT、DOUBLE PRECISION、DATE、TIME[WITHOUT TIME ZONE]、TIMESTAMP[WITHOUT TIME ZONE]、CHAR(n)、VARCHAR(n)、TEXT。 +11. 在需要ssl连接的场景,需要前置条件保证guc参数ssl = on。 +12. 不支持interval partition表复制。 +13. 在事务中执行DDL语句后,该DDL语句与之后的语句不会被解码。 +14. 如需进行备机解码,需在对应主机上设置guc参数enable_slot_log = on。 +15. 当前不支持超大CLOB解码。 +16. 不允许主备,多个备机同时使用同一个复制槽解码,否则会产生数据不一致。 +17. 禁止在使用逻辑复制槽时在其他节点对该复制槽进行操作,删除复制槽的操作需在该复制槽停止解码后执行。 + +## 依赖关系 + +依赖备机解码。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/13-dcf.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/13-dcf.md new file mode 100644 index 0000000000000000000000000000000000000000..775565bb64dc1c66919a7b3f8930dbfe0667df3e --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/13-dcf.md @@ -0,0 +1,45 @@ +--- +title: DCF +summary: DCF +author: Guo Huan +date: 2022-05-10 +--- + +# DCF + +## 可获得性 + +本特性自MogDB 2.0.0版本开始引入。 + +## 特性简介 + +DCF(Distributed Consensus Framework,分布式共识框架)基于Paxos算法实现数据同步强一致。DCF模式开关开启后,DN可以支持基于Paxos协议的复制与仲裁能力。 + +## 客户价值 + +DN基于Paxos的自选主及日志复制,复制过程中支持压缩及流控,防止带宽占用过高。使用DCF可以提供日志复制、集群高可用等能力。DCF提供了自选主能力,支持少数派强起能力,日志复制支持动态流量调整。同时也提供了基于Paxos多种角色节点类型,并能进行调整。支持查询当前数据库实例的状态。 + +DCF是一款高性能、高度成熟可靠、易扩展、易使用的独立基础库,其他系统通过接口与DCF简单对接,就能够轻松拥有Paxos算法赋予的强一致、高可用、自动容灾等能力。 + +## 特性描述 + +- DCF进行日志复制时,支持对日志进行压缩后再传输,减小对网络带宽的占用。 +- DCF支持SSL,包括TLS1.2和TLS1.3协议标准。当开启SSL时,DN默认将DCF配置为TLS1.2协议标准。 +- DCF支持5种TLS1.3的密码套件:TLS13-AES-256-GCM-SHA384、TLS13-CHACHA20-POLY1305-SHA256、TLS13-AES-128-GCM-SHA256、TLS13-AES-128-CCM-8-SHA256、TLS13-AES-128-CCM-SHA256。 +- DCF支持passive角色节点类型,passive节点不参与选举,只做日志的同步以及回放,该类型节点在高负载的情况下,日志同步会做流控。 +- DCF支持logger角色节点,logger节点可以参与选举和投票,但是只复制DCF的日志,不复制xlog,不进行redo。 +- DCF的follower和passive角色可以在线互换,即不中断业务的情况下,follower角色的节点转化为passive角色,passive角色的节点转化为follower。 +- DCF支持少数派强起能力,在数据库实例多数派故障的情况下,从正常的备DN中选择少数派模式强启成为主DN,其余正常的备DN从主DN复制日志。 +- DCF支持自选主能力,在原主DN故障的场景下,在保证数据一致性的前提下,剩余备DN自动选出新的主DN。 + +## 特性增强 + +无。 + +## 特性约束 + +若使用此功能,在安装部署阶段需要开启DCF开关。在DCF模式下通过多数派选举,安装过程中如果故障节点数加build节点数达到多数派会导致集群安装失败,如在安装一主两备时,安装过程中一节点因内存不足导致安装失败,另外两节点正常启动,但随后备机会进行一次build,这时build节点加故障节点为2,达到多数派会导致集群安装失败,请在安装过程中检查内存和磁盘等资源是否充足。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/14-cm.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/14-cm.md new file mode 100644 index 0000000000000000000000000000000000000000..693c61c02eec957b3414dc1bcdbc532126038590 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/14-cm.md @@ -0,0 +1,39 @@ +--- +title: CM +summary: CM +author: Guo Huan +date: 2022-05-10 +--- + +# CM + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +CM(Cluster Manager)是一款数据库管理软件,由cm_server和cm_agent组成。 + +- cm_agent是部署在数据库每个主机上,用来启停和监控各个数据库实例进程的数据库管理组件。 +- cm_server是用来进行数据库实例管理和实例仲裁的组件。 + +## 客户价值 + +管理和监控数据库系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。 + +## 特性描述 + +支持自定义资源监控,提供了数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。提供了丰富的数据库管理能力,如节点、实例级的启停,数据库实例状态查询、主备切换、日志管理等。 + +## 特性增强 + +无。 + +## 特性约束 + +一主一备模式下,CM只支持基本的安装、启停、检测能力,其他功能不支持。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/15-global-syscache.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/15-global-syscache.md new file mode 100644 index 0000000000000000000000000000000000000000..98de6004fbfc4b7dc9a7508f0c9349c6548e56b8 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/15-global-syscache.md @@ -0,0 +1,43 @@ +--- +title: 支持global syscache +summary: 支持global syscache +author: Guo Huan +date: 2022-05-10 +--- + +# 支持global syscache + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +全局系统缓存(Global SysCache)是系统表数据的全局缓存和本地缓存。原理如图1所示。 + +**图 1** Global SysCache原理图 + + ![Global-SysCache原理图](https://cdn-mogdb.enmotech.com/docs-media/mogdb/characteristic-description/Global-SysCache.png) + +## 客户价值 + +全局系统缓存特性可以降低数据库进程的缓存内存占用,提升数据库的并发扩展能力。 + +## 特性描述 + +全局系统缓存特性指将系统缓存与会话解耦,绑定到线程上,结合线程池特性达到降低内存占用的目的,同时结合全局缓存,提升缓存命中率,保持性能稳定。 + +## 特性增强 + +支持更高的并发查询。 + +## 特性约束 + +- 设置enable_global_syscache为on。建议设置enable_thread_pool参数为on。 +- 当DB数较多,且阈值global_syscache_threshold较小时,内存控制无法正常工作,性能会劣化。 +- 不支持分布式时序相关的任务,这些任务的内存控制与性能不受GSC特性的影响。 +- wal_level设置为minimal或者archive时,备机的查询性能会下降,会退化为短连接。 + +## 依赖关系 + +该特性降内存能力依赖于线程池特性。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/16-using-a-standby-node-to-build-a-standby-node.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/16-using-a-standby-node-to-build-a-standby-node.md new file mode 100644 index 0000000000000000000000000000000000000000..b2f357d6a4ccb1a40e41a6a85c52492583e37494 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/16-using-a-standby-node-to-build-a-standby-node.md @@ -0,0 +1,36 @@ +--- +title: 支持备机build备机 +summary: 支持备机build备机 +author: Guo Huan +date: 2022-05-10 +--- + +# 支持备机build备机 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +备机build备机加快备机故障的恢复。 减小主机io和带宽压力。 + +## 客户价值 + +当业务压力过大时,从主机build备机会对主机的资源造成影响,导致主机性能下降、build变慢的情况。使用备机build备机不会对主机业务造成影响。 + +## 特性描述 + +使用gs_ctl命令可以指定对应的备机去build需要修复的备机。具体操作可参考《参考指南》中的“[gs_ctl](4-gs_ctl)”章节。 + +## 特性增强 + +无。 + +## 特性约束 + +只支持备机build备机,只能使用指定ip和port的方式做build,同时在build前应确保需要修复备机的日志比发送数据的备机的日志落后。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/2-logical-replication.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/2-logical-replication.md new file mode 100644 index 0000000000000000000000000000000000000000..53d2aba5033547f389c97b1bc9d38f6504861965 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/2-logical-replication.md @@ -0,0 +1,37 @@ +--- +title: 逻辑复制 +summary: 逻辑复制 +author: Guo Huan +date: 2022-05-07 +--- + +# 逻辑复制 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +MogDB提供逻辑解码功能,将物理日志反解析为逻辑日志。通过DRS等逻辑复制工具将逻辑日志转化为SQL语句,到对端数据库回放,达到异构数据库同步数据的功能。目前支持MogDB数据库与MySQL数据库、Oracle数据库之间的单向、双向逻辑复制。 + +## 客户价值 + +逻辑复制可以为数据库数据实时迁移、双库双活、支持滚动升级提供解决方案。 + +## 特性描述 + +DN通过物理日志反解析为逻辑日志,DRS等逻辑复制工具从DN抽取逻辑日志转换为SQL语句,到对端数据库(MySQL)回放。逻辑复制工具同时从MySQL数据库抽取逻辑日志,反解析为SQL语句之后回放到MogDB,达到异构数据库同步数据的目的。 + +## 特性增强 + +- MogDB 1.1.0逻辑解码新增全量+增量抽取日志的方案。 +- MogDB 1.1.0逻辑解码新增备机支持逻辑解码。 + +## 特性约束 + +不支持列存复制,不支持DDL复制。 + +## 依赖关系 + +依赖于逻辑复制工具对逻辑日志进行解码。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/3-online-node-replacement.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/3-online-node-replacement.md new file mode 100644 index 0000000000000000000000000000000000000000..929dfbf80a832a16a1ac4b45603c73e93e65dc3e --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/3-online-node-replacement.md @@ -0,0 +1,36 @@ +--- +title: 在线节点替换 +summary: 在线节点替换 +author: Guo Huan +date: 2022-05-07 +--- + +# 在线节点替换 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +数据库内某节点出现硬件故障造成节点不可用或者实例状态不正常,当数据库没有加锁,通过节点替换或修复故障实例来恢复数据库的过程中,支持用户DML操作,有限场景支持用户DDL操作。 + +## 客户价值 + +随着企业数据规模不断增大,节点数量急剧增加,硬件损坏概率相应增加,物理节点替换修复成为日常运维工作的常态。传统的离线节点替换方式无法满足客户业务不中断需求,日常运维操作中,经常的业务中断将给客户带来重大损失。而目前业界数据库产品在节点替换的过程中,或者需要中断业务,或者只允许部分操作,均不能满足大规模数据情况下,常态物理节点替换的需求。 + +## 特性描述 + +数据库内某节点出现硬件故障造成节点不可用或者实例状态不正常,通过节点替换或修复故障实例来恢复数据库的过程中,支持用户DML操作,有限场景支持用户DDL操作。 + +## 特性增强 + +无。 + +## 特性约束 + +目前节点替换已支持用户业务在线DDL:在节点替换窗口期内,支持用户DML操作,有限场景支持用户DDL操作。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/4-logical-backup.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/4-logical-backup.md new file mode 100644 index 0000000000000000000000000000000000000000..c978f096b45aa7b44d6b0171ce293e7085abc7ff --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/4-logical-backup.md @@ -0,0 +1,40 @@ +--- +title: 逻辑备份 +summary: 逻辑备份 +author: Guo Huan +date: 2022-05-07 +--- + +# 逻辑备份 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +支持将数据库内用户表的数据以通用格式备份到指定的存储介质中。 + +## 客户价值 + +通过逻辑备份特性,可以达成以下目的: + +- 将用户数据备份到可靠性更高的存储介质中,提升用户表数据的可靠性。 +- 通过采用通用的数据格式,支持跨版本恢复和异构恢复。 +- 可以用于冷数据的归档。 + +## 特性描述 + +MogDB提供逻辑备份能力,可以将用户表的数据以通用的text或者csv格式备份到本地磁盘文件中,并在同构/异构数据库中恢复该用户表的数据。 + +## 特性增强 + +无。 + +## 特性约束 + +逻辑备份的约束条件请参见《参考指南》中“[gs_dump](5-gs_dump)”章节。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/5-physical-backup.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/5-physical-backup.md new file mode 100644 index 0000000000000000000000000000000000000000..62ffc1500b99e6467c51e0b52287280e8d8a7b57 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/5-physical-backup.md @@ -0,0 +1,52 @@ +--- +title: 物理备份 +summary: 物理备份 +author: Guo Huan +date: 2022-05-07 +--- + +# 物理备份 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +支持将整个数据库的数据以内部格式备份到指定的存储介质中。 + +## 客户价值 + +通过物理备份特性,可以达成以下目的: + +- 整个数据库的数据备份到可靠性更高的存储介质中,提升系统整体的可靠性。 +- 通过采用数据库内部的数据格式,极大提升备份恢复性能。 +- 可以用于冷数据的归档。 + +典型的物理备份策略和应用场景如下: + +- 周一,执行数据库全量备份 +- 周二,以周一全量备份为基准点,执行增量备份 +- 周三,以周二增量备份为基准点,执行增量备份 +- … +- 周日,以周六增量备份为基准点,执行增量备份 + +上述备份策略以一个星期为周期。 + +## 特性描述 + +MogDB 1.1.0 提供物理备份能力,可以将整个数据库的数据以数据库内部格式备份到本地磁盘文件、OBS对象、NBU对象或爱数对象中,并在同构数据库中恢复整个数据库的数据。在基础之上,还提供压缩、流控、断点续备等高阶功能。 + +物理备份主要分为全量备份和增量备份,区别如下:全量备份包含备份时刻点上数据库的全量数据,耗时时间长(和数据库数据总量成正比),自身即可恢复出完整的数据库;增量备份只包含从指定时刻点之后的增量修改数据,耗时时间短(和增量数据成正比,和数据总量无关),但是必须要和全量备份数据一起才能恢复出完整的数据库。 + +## 特性增强 + +支持全量备份和增量备份同时执行。 + +## 特性约束 + +物理备份的约束条件请参见《管理指南》中“备份与恢复 > [物理备份恢复](1-2-br)”章节相关约束。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/6-automatic-job-retry-upon-failure.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/6-automatic-job-retry-upon-failure.md new file mode 100644 index 0000000000000000000000000000000000000000..6a8a8292c02de1a9476ad7770a1757ae48556078 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/6-automatic-job-retry-upon-failure.md @@ -0,0 +1,93 @@ +--- +title: 作业失败自动重试 +summary: 作业失败自动重试 +author: Guo Huan +date: 2022-05-07 +--- + +# 作业失败自动重试 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +批处理作业中,在由于网络异常、锁冲突等出错情况下能够保证作业自动重试。 + +## 客户价值 + +网络异常、锁冲突等出错场景下无需人工干预,自动对出错查询进行重试,提高了可用性。 + +## 特性描述 + +MogDB数据库提供作业重试机制gsql Retry。 + +gsql Retry,对于需要进行重试的错误使用唯一的错误码(SQL STATE)进行标识。对客户端工具gsql进行功能增强,使用错误码配置文件(retry_errcodes.conf,置于和gsql同级的安装目录下)对需要重试的错误列表进行配置。gsql提供如下元命令来开启/关闭错误重试功能,重试次数设为范围为5~10,缺省值为5。 + +``` +set RETRY [number] +``` + +打开该功能时gsql会读取上述配置文件,错误重试控制器通过容器记录错误码列表。如果打开后出现配置文件中某一个错误,控制器会将每次缓存的查询语句重新发送给服务端进行重试,直到成功或超过重试次数报错。 + +## 特性增强 + +无。 + +## 特性约束 + +- 功能范围限制: + + 仅能提高故障发生时SQL语句执行成功率,不能保证100%的执行成功。 + +- 错误类型约束: + + SQL语句出错时能够被识别和重试的错误,仅限在表1中定义的错误。 + + **表 1** 支持的错误类型列表 + + | 错误类型 | 错误码 | 备注 | + | :----------------------------------------------------------- | :----- | :----------------------------------------------------------- | + | 对端连接重置(CONNECTION_RESET_BY_PEER) | YY001 | TCP通信错误:Connection reset by peer | + | 对端流重置(STREAM_CONNECTION_RESET_BY_PEER) | YY002 | TCP通信错误:Stream connection reset by peer(DN和DN间通信) | + | 锁等待超时(LOCK_WAIT_TIMEOUT) | YY003 | 锁超时,Lock wait timeout | + | 连接超时(CONNECTION_TIMED_OUT) | YY004 | TCP通信错误,Connection timed out | + | 查询设置错误(SET_QUERY_ERROR) | YY005 | SET命令发送失败,Set query error | + | 超出逻辑内存(OUT_OF_LOGICAL_MEMORY) | YY006 | 内存申请失败,Out of logical memory | + | 通信库内存分配(SCTP_MEMORY_ALLOC) | YY007 | SCTP通信错误,Memory allocate error | + | 无通信库缓存数据(SCTP_NO_DATA_IN_BUFFER) | YY008 | SCTP通信错误,SCTP no data in buffer | + | 通信库释放内存关闭(SCTP_RELEASE_MEMORY_CLOSE) | YY009 | SCTP通信错误,Release memory close | + | SCTP、TCP断开(SCTP_TCP_DISCONNECT) | YY010 | SCTP、TCP通信错误,SCTP、TCP disconnect | + | 通信库断开(SCTP_DISCONNECT) | YY011 | SCTP通信错误,SCTP disconnect | + | 通信库远程关闭(SCTP_REMOTE_CLOSE) | YY012 | SCTP通信错误,Stream closed by remote | + | 等待未知通信库通信(SCTP_WAIT_POLL_UNKNOW) | YY013 | 等待未知通信库通信,SCTP wait poll unknow | + | 无效快照(SNAPSHOT_INVALID) | YY014 | 快照非法,Snapshot invalid | + | 通讯接收信息错误(ERRCODE_CONNECTION_RECEIVE_WRONG) | YY015 | 连接获取错误,Connection receive wrong | + | 内存耗尽(OUT_OF_MEMORY) | 53200 | 内存耗尽,Out of memory | + | 连接异常(CONNECTION_EXCEPTION) | 08000 | 连接出现错误,和DN的通讯失败,Connection exception | + | 管理员关闭系统(ADMIN_SHUTDOWN) | 57P01 | 管理员关闭系统,Admin shutdown | + | 关闭远程流接口(STREAM_REMOTE_CLOSE_SOCKET) | XX003 | 关闭远程套接字,Stream remote close socket | + | 重复查询编号(ERRCODE_STREAM_DUPLICATE_QUERY_ID) | XX009 | 重复查询,Duplicate query id | + | stream查询并发更新同一行(ERRCODE_STREAM_CONCURRENT_UPDATE) | YY016 | stream查询并发更新同一行,Stream concurrent update | + +- 语句类型约束: + + 支持单语句存储过程、函数、匿名块。不支持事务块中的语句。 + +- 存储过程语句约束: + + - 包含EXCEPTION的存储过程,如果在执行过程中(包含语句块执行和EXCEPTION中的语句执行)错误被抛出,可以retry,如果报错被EXCEPTION捕获则不能retry。 + - 不支持使用全局变量的高级包。 + - 不支持DBE_TASK。 + - 不支持PKG_UTIL文件操作。 + +- 数据导入约束: + + - 不支持COPY FROM STDIN语句。 + - 不支持gsql \copy from元命令。 + - 不支持JDBC CopyManager copyIn导入数据。 + +## 依赖关系 + +该特性依赖gsql工具端可以正常工作、错误列表配置正确。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/7-ultimate-rto.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/7-ultimate-rto.md new file mode 100644 index 0000000000000000000000000000000000000000..6a608eb28cdd9c08f42fbbaac11a974686d5af36 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/7-ultimate-rto.md @@ -0,0 +1,39 @@ +--- +title: 极致RTO +summary: 极致RTO +author: Guo Huan +date: 2022-05-07 +--- + +# 极致RTO + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +- 支撑数据库主机重启后快速恢复的场景。 +- 支撑主机与同步备机通过日志同步,加速备机回放的场景。 + +## 客户价值 + +当业务压力过大时,备机的回放速度跟不上主机的速度。在系统长时间的运行后,备机上会出现日志累积。当主机故障后,数据恢复需要很长时间,数据库不可用,严重影响系统可用性。 + +开启极致RTO(Recovery Time Object,恢复时间目标),减少了主机故障后数据的恢复时间,提高了可用性。 + +## 特性描述 + +极致RTO开关开启后,xlog日志回放建立多级流水线,提高并发度,提升日志回放速度。 + +## 特性增强 + +无。 + +## 特性约束 + +极致RTO只关注同步备机的RTO是否满足需求。极致RTO本身有流控效果,无需打开流控功能开关。本特性不支持备机读。如果查询备机可能导致备机宕机。本特性不支持主备从场景。如果配置成支持主备从(配置了replication_type=0),数据库无法拉起。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/8-cascaded-standby-server.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/8-cascaded-standby-server.md new file mode 100644 index 0000000000000000000000000000000000000000..e3cce4a690383cccdcff97e4b10fe7462331d208 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/8-cascaded-standby-server.md @@ -0,0 +1,45 @@ +--- +title: 级联备机 +summary: 级联备机 +author: Guo Huan +date: 2022-05-07 +--- + +# 级联备机 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +本特性主要基于当前一主多备的架构,在此基础上,支持级联备机连接备机。 + +## 客户价值 + +一主多备架构在特性业务场景下,无法支持足够灵活的结构。多机房部署,不足以满足HA切换下的完整结构(主次机房三个实例,再次机房两到三个实例)。若备机个数变多,对主机可能导致压力较大。针对业务实时性要求较低的查询,可落到级联备中。因此,我们需要提供级联备能力。 + +## 特性描述 + +主机通过发送日志给备机实现同步,备机通过发送日志给级联备实现同步,其中主备之间日志同步可配置为同步或异步,备机与级联备之间只能以异步方式。 + +目前一主多备方式架构,主机通过walsender线程向备机同步日志,备机通过walreceiver线程接受日志,并刷到本地盘,备机读取redo日志,完成主备之间的数据同步。主备机之间walsender与walreceiver一一对应。备机与级联备通过walsender与walreceiver线程异步方式同步日志,降低主机流复制的压力。 + +## 特性增强 + +无。 + +## 特性约束 + +- 级联备只能从备机同步数据,不能直接从主机同步。 +- 级联备不支持直接从备机build数据,目前只能从主机build数据。如果备机需要全量build,会导致级联备也要重新全量build。 +- 级联备为异步同步。 +- 级联备不支持promote。 +- 级联备不支持notify。 +- 目前不提供查询主 - 备 - 级联备集群总体架构,需要根据主找到备,再通过备找到级联备。 +- 级联备不能有再次级联备。 +- 极致RTO开启时,不支持级联备。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/9-delayed-replay.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/9-delayed-replay.md new file mode 100644 index 0000000000000000000000000000000000000000..dab3131094e636a76e9a03a1fb8f320e35cc0229 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-availability/9-delayed-replay.md @@ -0,0 +1,46 @@ +--- +title: 延时回放 +summary: 延时回放 +author: Guo Huan +date: 2022-05-07 +--- + +# 延时回放 + +## 可获得性 + +本特性自MogDB 2.0.0 版本开始引入。 + +## 特性简介 + +支持备机延时回放。 + +## 客户价值 + +默认情况下,备机会尽快恢复来自于主机的XLOG记录。这个功能允许备机将回放延时一段指定的时间后进行回放。提供一份可查询一段时间之前的数据副本,可以更方便的纠正用户误操作等错误。 + +## 特性描述 + +支持通过配置GUC参数recovery_min_apply_delay设定延时时间,使某个备机延时一段时间回放来自主机的事务日志。 + +参数取值范围:整型,0~INT_MAX,单位为毫秒。 + +参数默认值:0(不增加延迟) + +## 特性增强 + +无。 + +## 特性约束 + +- recovery_min_apply_delay参数主节点设置无效,必须设置在需要延迟的备节点上。 +- 延迟时间是根据主服务器上事务提交的时间戳与备机上的当前时间来计算,因此需要保证主备系统时钟一致。 +- 没有事务的操作不会被延迟。 +- 主备切换之后,原主机若需延迟,需要再手动配置此参数。 +- 当synchronous_commit被设置为remote_apply时,同步复制会受到这个延时的影响,每一个COMMIT都需要等待备机回放结束后才会返回。 +- 使用这个特性也会让hot_standby_feedback被延迟,这可能导致主服务器的膨胀,两者一起使用时要小心。 +- 主机执行了持有AccessExclusive锁的DDL操作,比如DROP和TRUNCATE操作,在备机延迟回放该条记录期间,在备机上对该操作对象执行查询操作会等待锁释放之后才会返回。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/1-cbo-optimizer.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/1-cbo-optimizer.md new file mode 100644 index 0000000000000000000000000000000000000000..0c11ecfbcbe01f9e6b0ae19faa07fcbfe7f9fdd5 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/1-cbo-optimizer.md @@ -0,0 +1,36 @@ +--- +title: CBO优化器 +summary: CBO优化器 +author: Guo Huan +date: 2022-05-07 +--- + +# CBO优化器 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +MogDB优化器是基于代价的优化(Cost-Based Optimization,简称CBO)。 + +## 客户价值 + +MogDB CBO优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。 + +## 特性描述 + +在CBO优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、DISTINCT值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小、首元组返回代价最小的执行方式进行执行。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/10-xlog-no-lock-flush.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/10-xlog-no-lock-flush.md new file mode 100644 index 0000000000000000000000000000000000000000..5fea498c508682efafeb5012648ffc3a20cd86ec --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/10-xlog-no-lock-flush.md @@ -0,0 +1,36 @@ +--- +title: Xlog no Lock Flush +summary: Xlog no Lock Flush +author: Guo Huan +date: 2022-05-07 +--- + +# Xlog no Lock Flush + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +取消WalInsertLock争抢及WalWriter专用磁盘写入线程。 + +## 客户价值 + +在保持原有XLog功能不变的基础上,进一步提升系统性能。 + +## 特性描述 + +对WalInsertLock进行优化,利用LSN(Log Sequence Number)及LRC(Log Record Count)记录了每个backend的拷贝进度,取消WalInsertLock机制。在backend将日志拷贝至WalBuffer时,不用对WalInsertLock进行争抢,可直接进行日志拷贝操作。并利用专用的WalWriter写日志线程,不需要backend线程自身来保证xlog的Flush。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/11-parallel-page-based-redo-for-ustore.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/11-parallel-page-based-redo-for-ustore.md new file mode 100644 index 0000000000000000000000000000000000000000..266305bc08408c6057e376647bc8c49fb2c51cc8 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/11-parallel-page-based-redo-for-ustore.md @@ -0,0 +1,36 @@ +--- +title: Parallel Page-based Redo For Ustore +summary: Parallel Page-based Redo For Ustore +author: Guo Huan +date: 2022-05-07 +--- + +# Parallel Page-based Redo For Ustore + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +优化Ustore Inplace Update WAL log写入,Ustore DML Operation回放提高并行度。 + +## 客户价值 + +对于Update的WAL使用空间减少,Ustore DML Operation回放提高并行度。 + +## 特性描述 + +通过利用Prefix和suffix来减少update WAL log的写入,通过把回放线程分多个类型来解决Ustore DML WAL大多都是多页面回放问题;同时把Ustore的数据页面回放按照blkno去分发。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +依赖于Ustore引擎。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/12-row-store-execution-to-vectorized-execution.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/12-row-store-execution-to-vectorized-execution.md new file mode 100644 index 0000000000000000000000000000000000000000..d4548a7f58abdedc1ebc5e36399309ea646a442c --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/12-row-store-execution-to-vectorized-execution.md @@ -0,0 +1,40 @@ +--- +title: 行存转向量化 +summary: 行存转向量化 +author: Guo Huan +date: 2022-05-10 +--- + +# 行存转向量化 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +将行存表的查询转换为向量化执行计划执行,提升复杂查询的执行性能。 + +## 客户价值 + +由于行存执行引擎在执行包含较多表达式或者关联操作的复杂查询时,性能表现不佳;而向量化执行引擎在执行复杂查询时具有优异的性能表现。所以通过将行存表的查询转换为向量化执行计划执行,能够有效提升复杂查询的查询性能。 + +## 特性描述 + +本特性通过对扫描算子增加一层RowToVec的操作,将行存表的数据在内存中变为向量化格式后,上层算子都能够转化为对应的向量化算子,从而使用向量化执行引擎计算。支持行转列的扫描算子包括:SeqScan、IndexOnlyscan、IndexScan、BitmapScan、FunctionScan、ValueScan、TidScan。 + +## 特性增强 + +无。 + +## 特性约束 + +- 不支持向量化的场景包括: + - targetList存在返回set的函数。 + - targetList或者qual中存在不支持向量化的表达式:数组类表达式计算;多子查询表达式计算;Field类表达式计算;系统表列。 + - 包含不支持向量化的类型:POINTOID;LSEGOID;BOXOID;LINEOID;CIRCLEOID;POLYGONOID;PATHOID;用户自定义类型。 +- MOT表不支持转向量化。 + +## 依赖关系 + +向量化引擎 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/2-llvm.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/2-llvm.md new file mode 100644 index 0000000000000000000000000000000000000000..1b58d6b9e2745050a0a617ba1cbbc64dd451a4f8 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/2-llvm.md @@ -0,0 +1,36 @@ +--- +title: 支持LLVM +summary: 支持LLVM +author: Guo Huan +date: 2022-05-07 +--- + +# 支持LLVM + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +MogDB的LLVM(Low Level Virtual Machine)技术,提供了查询动态编译执行的能力。 + +## 客户价值 + +通过对查询动态编译执行,大幅提高重查询性能。 + +## 特性描述 + +MogDB借助LLVM提供的库函数,依据查询执行计划树,将原本在执行器阶段才会确定查询实际执行路径的过程提前到执行初始化阶段,从而规避原本查询执行时候伴随的函数调用、逻辑条件分支判断以及大量的数据读取等问题,以达到提升查询性能的目的。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +依赖于LLVM开源组件,当前使用的开源组件版本为10.0.0。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/3-vectorized-engine.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/3-vectorized-engine.md new file mode 100644 index 0000000000000000000000000000000000000000..6d0a7b526925b6ec10e027fe2140ad349f20f410 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/3-vectorized-engine.md @@ -0,0 +1,43 @@ +--- +title: 向量化引擎 +summary: 向量化引擎 +author: Guo Huan +date: 2022-05-07 +--- + +# 向量化引擎 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +MogDB提供向量化引擎,通常用在OLAP数据仓库类系统。主要是因为分析型系统通常是数据处理密集型,基本上都是采用顺序方式来访问表中大部分的数据,然后再进行计算,最后将计算结果输出给用户。 + +## 客户价值 + +通过批量计算,大幅提高复杂类查询性能。 + +## 特性描述 + +传统的数据库查询执行都是采用一次一数组(tuple)的pipeline执行模式,因此CPU的大部分处理时间不是用来处理数据,而是遍历查询操作树。这种情况下CPU的有效利用率不高,同时也会导致低指令缓存性能和频繁跳转。更加糟糕的是,这种方式的执行,不能够利用现代硬件的新优化特征来加速查询的执行。在执行引擎中,另外一个解决方案就是改变一次一数组(tuple)为一次一列的模式。这也是我们向量化执行引擎的一个基础。 + +向量化引擎是跟列存储技术绑定的,因为列存储时每列数据存储在一起,可以认为这些数据是以数组的方式存储的。基于这样的特征,当该列数据需要进行某一同样操作,可以通过一个循环来高效完成对这个数据块各个值的计算。 + +向量化执行引擎的优势在于: + +- 可以减少节点间的调度,提高CPU的利用率。 +- 因为相同类型的数据放在一起,可以更容易的利用硬件与编译的新优化特征。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +依赖于列存储。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/4-hybrid-row-column-store.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/4-hybrid-row-column-store.md new file mode 100644 index 0000000000000000000000000000000000000000..c9cf1377521f956a0985063b191c39420d040218 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/4-hybrid-row-column-store.md @@ -0,0 +1,72 @@ +--- +title: 行列混合存储 +summary: 行列混合存储 +author: Guo Huan +date: 2022-05-07 +--- + +# 行列混合存储 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +MogDB支持行存储和列存储两种存储模型,用户可以根据具体的使用场景,建表时选择行存储还是列存储表。 + +一般情况下,如果表的字段比较多(即大宽表),查询中涉及到列不很多的情况下,适合列存储。列存储方式如图1所示。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。 + +**图 1** 列存储示意图 + +![img](https://cdn-mogdb.enmotech.com/docs-media/mogdb/characteristic-description/hybrid-row-column-store.png) + +## 客户价值 + +在大宽表、数据量比较大的场景中,查询经常关注某些列,行存储引擎查询性能比较差。例如,气象局的场景,单表有200~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。 + +## 特性描述 + +表有行存表和列存表两种存储模型。两种存储模型各有优劣,建议根据实际情况选择。 + +- 行存表 + + 默认创建表的类型。数据按行进行存储,即一行数据紧挨着存储。行存表支持完整的增删改查。适用于对数据需要经常更新的场景。 + +- 列存表 + +数据按列进行存储,即一列所有数据紧挨着存储。单列查询IO小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询,insert插入单条记录性能差。 + +行存表和列存表的选择依据如下: + +- 更新频繁程度 + + 数据如果频繁更新,选择行存表。 + +- 插入频繁程度 + + 频繁的少量插入,选择行存表。一次插入大批量数据,选择列存表。 + +- 表的列数 + + 表的列数很多,选择列存表。 + +- 查询的列数 + + 如果每次查询时,只涉及了表的少数(小于总列数的50%)几个列,选择列存表。 + +- 压缩率 + + 列存表比行存表压缩率高。但高压缩率会消耗更多的CPU资源。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/5-adaptive-compression.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/5-adaptive-compression.md new file mode 100644 index 0000000000000000000000000000000000000000..e1d7f41a7b1cc5e80d80d29e869b696daddd0c0e --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/5-adaptive-compression.md @@ -0,0 +1,42 @@ +--- +title: 自适应压缩 +summary: 自适应压缩 +author: Guo Huan +date: 2022-05-07 +--- + +# 自适应压缩 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +数据压缩是当前数据库采用的主要技术。数据类型不同,适用于它的压缩算法不同。对于相同类型的数据,其数据特征不同,采用不同的压缩算法达到的效果也不相同。自适应压缩正是从数据类型和数据特征出发,采用相应的压缩算法,实现了良好的压缩比、快速的入库性能以及良好的查询性能。 + +## 客户价值 + +主要应用场景为数据入库和频繁的海量数据查询。 在数据入库场景中,自适应压缩可以大幅度地减少数据量,成倍提高IO操作效率,并将数据分类压缩以获得更快的入库性能。当用户进行数据查询时,少量的IO操作和快速的数据解压可以加快数据获取的速率,从而在更短的时间内得到查询结果。 + +## 特性描述 + +目前,数据库已实现了列存储上RLE、DELTA、BYTEPACK/BITPACK、LZ4、ZLIB、LOCAL DICTIONARY等多种压缩算法。数据库支持的数据类型与压缩算法的映射关系如下表所示。 + +| - | RLE | DELTA | BITPACK/BYTEPACK | LZ4 | ZLIB | LOCAL DICTIONARY | +| :----------------------------------------------------------- | :--- | :---- | :--------------- | :--- | :--- | :--------------- | +| smallint/int/bigint/oiddecimal/real/doublemoney/time/date/timestamp | √ | √ | √ | √ | √ | - | +| tinterval/interval/time with time zone/ | - | - | - | - | √ | - | +| numeric/char/varchar/text/nvarchar2
以及其他支持数据类型 | √ | √ | √ | √ | √ | √ | + +## 特性增强 + +支持对压缩算法进行不同压缩水平的调整。 + +## 特性约束 + +无。 + +## 依赖关系 + +开源压缩软件LZ4/ZLIB。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/6-sql-by-pass.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/6-sql-by-pass.md new file mode 100644 index 0000000000000000000000000000000000000000..c76a03ad578ea0d3400eea49c64050896c738922 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/6-sql-by-pass.md @@ -0,0 +1,36 @@ +--- +title: SQL by pass +summary: SQL by pass +author: Guo Huan +date: 2022-05-07 +--- + +# SQL by pass + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +通过对OLTP场景典型查询的定制化执行方案来提高查询性能。 + +## 客户价值 + +提升OLTP类查询的性能。 + +## 特性描述 + +在典型的OLTP场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,提出了SQL by pass框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/7-kunpeng-numa-architecture-optimization.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/7-kunpeng-numa-architecture-optimization.md new file mode 100644 index 0000000000000000000000000000000000000000..4f2e6936b4e6fe345299baae8bfb241c197a167f --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/7-kunpeng-numa-architecture-optimization.md @@ -0,0 +1,40 @@ +--- +title: 鲲鹏NUMA架构优化 +summary: 鲲鹏NUMA架构优化 +author: Guo Huan +date: 2022-05-07 +--- + +# 鲲鹏NUMA架构优化 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +鲲鹏NUMA架构优化,主要面向鲲鹏处理器架构特点、ARMv8指令集等,进行相应的系统优化,涉及到操作系统、软件架构、锁并发、日志、原子操作、Cache访问等一系列的多层次优化,从而大幅提升了MogDB数据库在鲲鹏平台上的处理性能。 + +## 客户价值 + +数据库的处理性能,例如每分钟处理交易量(Transaction Per Minute),是数据库竞争力的关键性能指标,在同等硬件成本的条件下,数据库能提供的处理性能越高,就可以提供给用户更多的业务处理能力,从而降低客户的使用成本。 + +## 特性描述 + +- MogDB根据鲲鹏处理机的多核NUMA架构特点,进行一系列针对性NUMA架构相关优化。一方面尽量减少跨核内存访问的时延问题,另一方面充分发挥鲲鹏多核算力优势,所提供的关键技术包括重做日志批插、热点数据NUMA分布、CLog分区等,大幅提升TP系统的处理性能。 +- MogDB基于鲲鹏芯片所使用的ARMv8.1架构,利用LSE扩展指令集实现高效的原子操作,有效提升CPU利用率,从而提升多线程间同步性能、XLog写入性能等。 +- MogDB基于鲲鹏芯片提供的更宽的L3缓存cacheline,针对热点数据访问进行优化,有效提高缓存访问命中率,降低Cache缓存一致性维护开销,大幅提升系统整体的数据访问性能。 +- 鲲鹏920,2P服务器(64cores*2,内存768 GB),网络10 GE,IO为4块NVME PCIE SSD时,TPCC为1000warehouse,性能是150万tpmC。 + +## 特性增强 + +- 支持重做日志批插,分区CLog,提升鲲鹏平台下的数据库处理性能。 +- 支持LSE扩展指令集的原子操作,提升多线程同步性能。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/8-high-concurrency-of-thread-pools.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/8-high-concurrency-of-thread-pools.md new file mode 100644 index 0000000000000000000000000000000000000000..53d9b1577d2937652d1083b76f93a0f5ffe88e5a --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/8-high-concurrency-of-thread-pools.md @@ -0,0 +1,37 @@ +--- +title: 支持线程池高并发 +summary: 支持线程池高并发 +author: Guo Huan +date: 2022-05-07 +--- + +# 支持线程池高并发 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +通过线程池化技术来支撑数据库大并发稳定运行。 + +## 客户价值 + +支撑客户大并发下,系统整体吞吐平稳。 + +## 特性描述 + +线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接会话,这样把会话和线程进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行线程的调度管理。 + +## 特性增强 + +- MogDB 1.1.0版本引入该特性。 +- MogDB 1.1.0版本实现了线程池的动态扩缩容。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/9-smp-for-parallel-execution.md b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/9-smp-for-parallel-execution.md new file mode 100644 index 0000000000000000000000000000000000000000..5ec4a934f147682232f10ca9cf7374590681f9e4 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/high-performance/9-smp-for-parallel-execution.md @@ -0,0 +1,44 @@ +--- +title: SMP并行执行 +summary: SMP并行执行 +author: Guo Huan +date: 2022-05-07 +--- + +# SMP并行执行 + +## 可获得性 + +本特性自MogDB 1.1.0版本开始引入。 + +## 特性简介 + +MogDB的SMP并行技术是一种利用计算机多核CPU架构来实现多线程并行计算,以充分利用CPU资源来提高查询性能的技术。 + +## 客户价值 + +SMP并行技术充分利用了系统多核的能力,来提高重查询的性能。 + +## 特性描述 + +在复杂查询场景中,单个查询的执行较长,系统并发度低,通过SMP并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。SMP并行技术的整体实现思想是对于能够并行的查询算子,将数据分片,启动若干个工作线程分别计算,最后将结果汇总,返回前端。SMP并行执行增加数据交互算子**Stream**,实现多个工作线程之间的数据交互,确保查询的正确性,完成整体的查询。 + +## 特性增强 + +无。 + +## 特性约束 + +- 索引扫描不支持并行执行。 +- MergeJoin不支持并行执行。 +- WindowAgg order by不支持并行执行。 +- cursor不支持并行执行。 +- 存储过程和函数内的查询不支持并行执行。 +- 不支持子查询subplan和initplan的并行,以及包含子查询的算子的并行。 +- 查询语句中带有median操作的查询不支持并行执行。 +- 带全局临时表的查询不支持并行执行。 +- 物化视图的更新不支持并行执行。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/1-gray-upgrade.md b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/1-gray-upgrade.md new file mode 100644 index 0000000000000000000000000000000000000000..9402531ce563d127f43a8a5f1c6e5476d557b505 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/1-gray-upgrade.md @@ -0,0 +1,36 @@ +--- +title: 灰度升级 +summary: 灰度升级 +author: Guo Huan +date: 2022-05-07 +--- + +# 灰度升级 + +## 可获得性 + +本特性自MogDB 2.0.0版本开始引入。 + +## 特性简介 + +灰度升级支持全业务操作,一次性升级所有节点。 + +## 客户价值 + +灰度升级提供了一种在线升级的方式,保证在不中断业务的情况下,对所有的节点进行升级。 + +## 特性描述 + +灰度升级是一种支持所有节点升级的在线升级方式。目前灰度升级只涉及数据库二进制的替换,为了尽可能降低对于业务的影响,采用同一节点两套二进制同时存在的方式,使用软连接切换的方式来进行进程版本的切换升级(闪断一次,10秒以内)。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/2-workload-diagnosis-report.md b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/2-workload-diagnosis-report.md new file mode 100644 index 0000000000000000000000000000000000000000..37ed7ae684e0ccd328206b75ae562c450c26bed6 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/2-workload-diagnosis-report.md @@ -0,0 +1,72 @@ +--- +title: 支持WDR诊断报告 +summary: 支持WDR诊断报告 +author: Guo Huan +date: 2022-05-07 +--- + +# 支持WDR诊断报告 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +WDR报告提供数据库性能诊断报告,该报告基于基线性能数据和增量数据两个版本,从性能变化得到性能报告。 + +## 客户价值 + +- WDR报表是长期性能问题最主要的诊断手段。基于SNAPSHOT的性能基线,从多维度做性能分析,能帮助DBA掌握系统负载繁忙程度、各个组件的性能表现及性能瓶颈。 +- SNAPSHOT也是后续性能问题自诊断和自优化建议的重要数据来源。 + +## 特性描述 + +WDR(Workload Diagnosis Report)基于两次不同时间点系统的性能快照数据,生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。 + +使用generate_wdr_report(…) 可以生成基于两个性能快照的性能报告。 + +WDR主要依赖两个组件: + +- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个SNAPSHOT可以作为一个性能基线,其他SNAPSHOT与之比较的结果,可以分析出与基线的性能表现。 +- WDR Reporter:报表生成工具基于两个SNAPSHOT,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成SUMMARY 和DETAIL两个不同级别的性能数据。如表1、表2所示。 + +**表 1** SUMMARY级别诊断报告 + +| 诊断类别 | 描述 | +| :------------------------------ | :----------------------------------------------------------- | +| Database Stat | 主要用于评估当前数据库上的负载和IO状况,负载和IO状况是衡量TP系统最重要的特性。包含当前连接到该数据库的session,提交、回滚的事务数,读取的磁盘块的数量,高速缓存中已经发现的磁盘块的次数,通过数据库查询返回、抓取、插入、更新、删除的行数,冲突、死锁发生的次数,临时文件的使用量,IO读写时间等。 | +| Load Profile | 从时间,IO,事务,SQL几个维度评估当前系统负载的表现。包含作业运行elapse time、CPU time,事务日质量,逻辑和物理读的量,读写IO次数、大小,登入登出次数,SQL、事务执行量,SQL P80、P95响应时间等。 | +| Instance Efficiency Percentages | 用于评估当前系统的缓存的效率。主要包含数据库缓存命中率。 | +| Events | 用于评估当前系统内核关键资源,关键事件的性能。主要包含数据库内核关键事件的发生次数,事件的等待时间。 | +| Wait Classes | 用于评估当前系统关键事件类型的性能。主要包含数据内核在主要的等待事件的种类上的发布:STATUS、LWLOCK_EVENT、LOCK_EVENT、IO_EVENT。 | +| CPU | 主要包含CPU在用户态、内核态、Wait IO、空闲状态下的时间发布。 | +| IO Profile | 主要包含数据库Database IO次数、Database IO数据量、Redo IO次数、Redo IO量。 | +| Memory Statistics | 包含最大进程内存、进程已经使用内存、最大共享内存、已经使用共享内存大小等。 | + +**表 2** DETAIL级别诊断报告 + +| 诊断类别 | 描述 | +| :--------------------- | :----------------------------------------------------------- | +| Time Model | 主要用于评估当前系统在时间维度的性能表现。包含系统在各个阶段上消耗的时间:内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间。 | +| SQL Statistics | 主要用于SQL语句性能问题的诊断。包含归一化的SQL的性能指标在多个维度上的排序:Elapsed Time、CPU Time、Rows Returned、Tuples Reads、Executions、Physical Reads、Logical Reads。这些指标的种类包括:执行时间,执行次数、行活动、Cache IO等。 | +| Wait Events | 主要用于系统关键资源,关键时间的详细性能诊断。包含所有关键事件在一段时间内的表现,主要是事件发生的次数,消耗的时间。 | +| Cache IO Stats | 用于诊断用户表和索引的性能。包含所有用户表、索引上的文件读写,缓存命中。 | +| Utility status | 用于诊断后端作业性能的诊断。包含页面操作,复制等后端操作的性能。 | +| Object stats | 用于诊断数据库对象的性能。包含用户表、索引上的表、索引扫描活动,insert、update、delete活动,有效行数量,表维护操作的状态等。 | +| Configuration settings | 用于判断配置是否有变更。包含当前所有配置参数的快照。 | +| SQL detail | 显示unique query text信息。 | + +## 特性增强 + +无。 + +## 特性约束 + +- WDR snapshot性能快照会采集不同database的性能数据,如果数据库实例中有大量的database或者大量表,做一次WDR snapshot会花费很长时间。 +- 如果在大量DDL期间做WDR snapshot可能造成WDR snapshot失败。 +- 在drop database时,做WDR snapshot可能造成WDR snapshot失败。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/3-slow-sql-diagnosis.md b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/3-slow-sql-diagnosis.md new file mode 100644 index 0000000000000000000000000000000000000000..cdcb1d13354f1cf3217b1b2c1c61c0accd1ddd21 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/3-slow-sql-diagnosis.md @@ -0,0 +1,137 @@ +--- +title: 慢SQL诊断 +summary: 慢SQL诊断 +author: Guo Huan +date: 2022-05-07 +--- + +# 慢SQL诊断 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +重构前慢SQL相关视图已废弃,包括dbe_perf. gs_slow_query_info、dbe_perf.gs_slow_query_history、dbe_perf.global_slow_query_hisotry、dbe_perf.global_slow_query_info。 + +## 特性简介 + +慢SQL诊断提供诊断慢SQL所需要的必要信息,帮助开发者回溯执行时间超过阈值的SQL,诊断SQL性能瓶颈。 + +## 客户价值 + +慢SQL诊断提供给用户对于慢SQL所需的详细信息,用户无需通过复现就能离线诊断特定慢SQL的性能问题。表和函数接口方便用户统计慢SQL指标,对接第三方平台。 + +## 特性描述 + +慢SQL能根据用户提供的执行时间阈值(log_min_duration_statement),记录所有超过阈值的执行完毕的作业信息。 + +慢SQL提供表和函数两种维度的查询接口。用户从接口中能查询到作业的执行计划,开始、结束执行时间,执行查询的语句,行活动,内核时间,CPU时间,执行时间,解析时间,编译时间,查询重写时间,计划生成时间,网络时间,IO时间,网络开销,锁开销等。以上所有信息都是脱敏的。 + +## 特性增强 + +增加对慢SQL指标信息,安全性(脱敏),执行计划,查询接口的增强。 + +``` +执行命令查看数据库实例中SQL语句执行信息 +gsql> select * from dbe_perf.get_global_full_sql_by_timestamp(start_timestamp, end_timestamp); +例如: +MogDB=# select * from DBE_PERF.get_global_full_sql_by_timestamp('2020-12-01 09:25:22', '2020-12-31 23:54:41'); +-[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------------------- +--------------------------------------------------------------- +node_name | dn_6001_6002_6003 +db_name | postgres +schema_name | "$user",public +origin_node | 1938253334 +user_name | user_dj +application_name | gsql +client_addr | +client_port | -1 +unique_query_id | 3671179229 +debug_query_id | 72339069014839210 +query | select name, setting from pg_settings where name in (?) +start_time | 2020-12-19 16:19:51.216818+08 +finish_time | 2020-12-19 16:19:51.224513+08 +slow_sql_threshold | 1800000000 +transaction_id | 0 +thread_id | 139884662093568 +session_id | 139884662093568 +n_soft_parse | 0 +n_hard_parse | 1 +query_plan | Datanode Name: dn_6001_6002_6003 + | Function Scan on pg_show_all_settings a (cost=0.00..12.50 rows=5 width=64) + | Filter: (name = '***'::text) +... + +执行命令查看数据库实例中慢SQL语句执行信息 +gsql> select * from dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp, end_timestamp); +MogDB=# select * from DBE_PERF.get_global_slow_sql_by_timestamp('2020-12-01 09:25:22', '2020-12-31 23:54:41'); +-[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------- +node_name | dn_6001_6002_6003 +db_name | postgres +schema_name | "$user",public +origin_node | 1938253334 +user_name | user_dj +application_name | gsql +client_addr | +client_port | -1 +unique_query_id | 2165004317 +debug_query_id | 72339069014839319 +query | select * from DBE_PERF.get_global_slow_sql_by_timestamp(?, ?); +start_time | 2020-12-19 16:23:20.738491+08 +finish_time | 2020-12-19 16:23:20.773714+08 +slow_sql_threshold | 10000 +transaction_id | 0 +thread_id | 139884662093568 +session_id | 139884662093568 +n_soft_parse | 10 +n_hard_parse | 8 +query_plan | Datanode Name: dn_6001_6002_6003 + | Result (cost=1.01..1.02 rows=1 width=0) + | InitPlan 1 (returns $0) + | -> Seq Scan on pgxc_node (cost=0.00..1.01 rows=1 width=64) + | Filter: (nodeis_active AND ((node_type = '***'::"char") OR (node_type = '***'::"char"))) +... + +查看当前节点SQL语句执行信息 +gsql> select * from statement_history; +例如: +MogDB=# select * from statement_history; +-[ RECORD 1 ]--------+--------------------------------------------------------------------------------------------------------------- +--------------------------------------------------------------- +db_name | postgres +schema_name | "$user",public +origin_node | 1938253334 +user_name | user_dj +application_name | gsql +client_addr | +client_port | -1 +unique_query_id | 3671179229 +debug_query_id | 72339069014839210 +query | select name, setting from pg_settings where name in (?) +start_time | 2020-12-19 16:19:51.216818+08 +finish_time | 2020-12-19 16:19:51.224513+08 +slow_sql_threshold | 1800000000 +transaction_id | 0 +thread_id | 139884662093568 +session_id | 139884662093568 +n_soft_parse | 0 +n_hard_parse | 1 +query_plan | Datanode Name: dn_6001_6002_6003 + | Function Scan on pg_show_all_settings a (cost=0.00..12.50 rows=5 width=64) + | Filter: (name = '***'::text) +``` + +## 特性约束 + +- 目前的SQL跟踪信息,基于正常的执行逻辑。执行失败的SQL,其跟踪信息不具有准确的参考价值。 +- 节点重启,可能导致该节点的数据丢失。 +- SQL语句执行完立即退出会话,可能会丢失该会话未刷新到系统表中的数据。 +- 通过GUC参数设置收集SQL语句的数量,如果超过阈值,新的SQL语句执行信息不会被收集。 +- 通过GUC参数设置单条SQL语句收集的锁事件详细信息的最大字节数,如果超过阈值,新的锁事件详细信息不会被收集。 +- 通过异步刷新方式刷新用户执行中的SQL信息,所以用户Query执行结束后,存在查询相关视图函数结果短暂时延。 +- 部分指标信息(行活动、Cache/IO、时间分布等)依赖于dbe_perf.statement视图收集,如果该视图对应记录数超过预定大小(依赖GUC:instr_unique_sql_count),则本特性可能不收集相关指标。 +- statement_history表相关函数以及视图中details字段为二进制格式,如果需要解析详细内容,请使用对应函数pg_catalog.statement_detail_decode(details, 'plaintext', true)。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/4-session-performance-diagnosis.md b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/4-session-performance-diagnosis.md new file mode 100644 index 0000000000000000000000000000000000000000..bc4d577704bd88daee0a7fc66d301251dc1d0e41 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/4-session-performance-diagnosis.md @@ -0,0 +1,106 @@ +--- +title: Session性能诊断 +summary: Session性能诊断 +author: Guo Huan +date: 2022-05-07 +--- + +# Session性能诊断 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +Session性能诊断提供给用户Session级别的性能问题诊断。 + +## 客户价值 + +- 查看最近用户Session最耗资源的事件。 +- 查看最近比较占资源的SQL把资源都消耗在哪些等待事件上。 +- 查看最近比较耗资源的Session把资源都花费在哪些等待事件上。 +- 查看最近最耗资源的用户的信息。 +- 查看过去Session相互阻塞的等待关系。 + +## 特性描述 + +Session性能诊断提供对当前系统所有活跃Session进行诊断的能力。由于实时采集所有活跃Session的指标对用户负载的影响加大,因此采取Session快照的技术对活跃Session的指标进行采样。 + +从采样中统计出活跃Session的统计指标,这些统计指标从客户端信息、执行开始、结束时间,SQL文本,等待事件,当前数据库对象等维度,反映活跃Session的基本信息,状态,持有的资源。 + +基于概率统计的活跃Session信息,可以帮助用户诊断系统中哪些Session消耗了更多的CPU、内存资源,哪些数据库对象是热对象,哪些SQL消耗了更多的关键事件资源等,从而定位出有问题Session,SQL,数据库设计。 + +Session采样数据分为两级,如图1所示: + +1. 第一级为实时信息,存储在内存中,展示最近几分钟的活跃Session信息,具有最高的精度; +2. 第二级为持久化历史信息,存储在磁盘文件中,展示过去很长一段时间的历史活跃Session信息,从内存数据中抽样而来,适合长时间跨度的统计分析。 + +**图 1** Session性能诊断原理 + + ![Session性能诊断原理](https://cdn-mogdb.enmotech.com/docs-media/mogdb/characteristic-description/session-performance-diagnosis-1.png) + +部分使用场景如下所示: + +1. 查看session之间的阻塞关系 + + ``` + select sessionid, block_sessionid from pg_thread_wait_status; + ``` + +2. 采样blocking session信息 + + ``` + select sessionid, block_sessionid from DBE_PERF.local_active_session; + ``` + +3. Final blocking session展示 + + ``` + select sessionid, block_sessionid, final_block_sessionid from DBE_PERF.local_active_session; + ``` + +4. 最耗资源的wait event + + ``` + SELECT s.type, s.event, t.count + FROM dbe_perf.wait_events s, ( + SELECT event, COUNT (*) + FROM dbe_perf.local_active_session + WHERE sample_time > now() - 5 / (24 * 60) + GROUP BY event)t WHERE s.event = t.event ORDER BY count DESC; + ``` + +5. 查看最近五分钟较耗资源的session把资源都花费在哪些event上 + + ``` + SELECT sessionid, start_time, event, count + FROM ( + SELECT sessionid, start_time, event, COUNT(*) + FROM dbe_perf.local_active_session + WHERE sample_time > now() - 5 / (24 * 60) + GROUP BY sessionid, start_time, event) as t ORDER BY SUM(t.count) OVER \(PARTITION BY t. sessionid, start_time)DESC, t.event; + ``` + +6. 最近五分钟比较占资源的SQL把资源都消耗在哪些event上 + + ``` + SELECT query_id, event, count + FROM ( + SELECT query_id, event, COUNT(*) + FROM dbe_perf.local_active_session + WHERE sample_time > now() - 5 / (24 * 60) + GROUP BY query_id, event) t ORDER BY SUM (t.count) OVER (PARTITION BY t.query_id ) DESC, t.event DESC; + ``` + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/5-system-kpi-aided-diagnosis.md b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/5-system-kpi-aided-diagnosis.md new file mode 100644 index 0000000000000000000000000000000000000000..a9c33ac848967f784c4423fca379dd7969a3a31c --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/5-system-kpi-aided-diagnosis.md @@ -0,0 +1,66 @@ +--- +title: 系统KPI辅助诊断 +summary: 系统KPI辅助诊断 +author: Guo Huan +date: 2022-05-07 +--- + +# 系统KPI辅助诊断 + +## 可获得性 + +本特性自MogDB 1.1.0 版本开始引入。 + +## 特性简介 + +KPI是内核组件或者整体性能关键指标的视图呈现,基于这些指标,用户可以了解到系统运行的实时或者历史状态。 + +## 客户价值 + +- 系统负载概要诊断 + + 系统负载异常(过载、失速、业务SLA)精准告警,系统负载精准画像。 + +- 系统时间模型概要诊断 + + Instance和Query级别时间模型细分,诊断Instance和Query性能问题根因。 + +- Query性能诊断 + + 数据库级Query概要信息,TopSQL,SQL CPU,IO消耗,执行计划,硬解析过多。 + +- 磁盘IO、索引、buffer性能问题 + +- 连接池,线程池异常 + +- Checkpoint,Redo(RTO)性能问题 + +- 系统I/O、LWLock、Waits性能问题诊断 + + 诊断60+模块,240+关键操作性能问题。 + +- 函数级性能看护诊断(GSTRACE),功能诊断 + + 50+存储和执行层函数trace。 + +## 特性描述 + +MogDB提供涵盖11大类,26个子类的KPI,包括:Instance、File、Object、Workload、Communication、Session、Thread、Cache IO、Lock、Wait Event、Cluster。 + +KPI指标内核的分布如图1所示。 + +**图 1** KPI指标内核分布 + + ![KPI指标内核分布](https://cdn-mogdb.enmotech.com/docs-media/mogdb/characteristic-description/system-kpi-aided-diagnosis.png) + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/middleware/deploying-a-distributed-database-using-kubernetes.md b/product/zh/docs-mogdb/v3.0/characteristic-description/middleware/deploying-a-distributed-database-using-kubernetes.md new file mode 100644 index 0000000000000000000000000000000000000000..0b0fce5deab90647a803a7b8e41bc0959d251cd9 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/middleware/deploying-a-distributed-database-using-kubernetes.md @@ -0,0 +1,36 @@ +--- +title: 使用kubernetes部署分布式数据库 +summary: 使用kubernetes部署分布式数据库 +author: Guo Huan +date: 2022-05-10 +--- + +# 使用kubernetes部署分布式数据库 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +一键式部署分布式数据库。 + +## 客户价值 + +快速完成分布式数据库搭建,验证和使用分布式能力。 + +## 特性描述 + +通过patroni实现计划内switchover和故障场景自动failover, 通过haproxy实现MogDB主备节点读写负载均衡,通过shardingsphere实现分布式能力,所有功能打包至镜像并提供一键式部署脚本。 + +## 特性增强 + +无。 + +## 特性约束 + +仅支持centos或openEuler操作系统。 + +## 依赖关系 + +shardingsphere、patroni、haproxy。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/middleware/distributed-database-capability.md b/product/zh/docs-mogdb/v3.0/characteristic-description/middleware/distributed-database-capability.md new file mode 100644 index 0000000000000000000000000000000000000000..8eacbf0934cd0eb8d2e4724f02c31a52d682881f --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/middleware/distributed-database-capability.md @@ -0,0 +1,36 @@ +--- +title: 分布式数据库能力 +summary: 分布式数据库能力 +author: Guo Huan +date: 2022-05-10 +--- + +# 分布式数据库能力 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +基于分布式中间件shardingsphere使MogDB具备分布式数据库能力。使用16个鲲鹏920(128核)节点组网(1\*shardingsphere-proxy、7\*shardingsphere-jdbc、8\*MogDB)时,完美sharding性能>1000万tpmc。 + +## 客户价值 + +通过中间件构建逻辑上无资源限制的分布式数据库。 + +## 特性描述 + +通过shardingsphere中间件的分库分表能力,使多个MogDB数据库可以在逻辑上组成一个更大的数据库,同时具备分布式事务和弹性伸缩的能力,使用方式与MogDB数据库并无不同。 + +## 特性增强 + +无。 + +## 特性约束 + +无。 + +## 依赖关系 + +shardingsphere中间件。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/tool-chain/mogdb-client-tool-datastudio.md b/product/zh/docs-mogdb/v3.0/characteristic-description/tool-chain/mogdb-client-tool-datastudio.md new file mode 100644 index 0000000000000000000000000000000000000000..9c5a18d6c11641cf53ecc5844660db3eccc25197 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/tool-chain/mogdb-client-tool-datastudio.md @@ -0,0 +1,57 @@ +--- +title: MogDB客户端工具DataStudio +summary: MogDB客户端工具DataStudio +author: Guo Huan +date: 2022-05-10 +--- + +# MogDB客户端工具DataStudio + +## 可获得性 + +DataStudio可在openGauss官网获取安装包,或在gitee上获取源码自行编译。 + +## 特性简介 + +DataStudio是面向开发人员和数据库管理员的通用集成开发环境。它简化了MogDB数据库的开发和管理。 + +DataStudio允许数据库开发人员: + +- 管理和创建数据库对象 +- 执行SQL语句或SQL脚本 +- 编辑和执行PL/SQL语句 +- 导入和导出表格数据 + +## 客户价值 + +Data Studio作为一款配套MogDB数据库使用的客户端软件,辅助数据库开发人员便捷地构建应用程序,以图形化界面形式提供数据库关键特性。 降低数据库的使用门槛,提高用户的使用粘性。 + +## 特性描述 + +用户在Windows环境上,使用DataStudio远程连接MogDB,并在DataStudio上对MogDB进行操作。例如: + +- 图形化的数据库客户端集成开发环境,允许连接MogDB数据库 +- 允许数据库开发者可以高效的进行SQL开发 +- 管理/创建数据库对象(数据库、模式、函数、存储过程、表、序列、列、索引、约束、视图、用户/角色和表空间) +- 执行SQL语句或SQL脚本 +- 创建和执行存储过程 +- 表数据增、删、改、查 +- 导入/导出表数据 +- 显示DDL、导出DDL、导出DDL和数据 +- 导入/导出连接信息 +- SQL格式化 +- SQL执行历史记录 +- 显示执行计划、ER图 + +## 特性增强 + +无。 + +## 特性约束 + +- 支持windows系统 +- 支持jdk11及以上版本 + +## 依赖关系 + +当前只支持openGauss/MogDB \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/tool-chain/mysql-to-mogdb-migration-tool-chameleon.md b/product/zh/docs-mogdb/v3.0/characteristic-description/tool-chain/mysql-to-mogdb-migration-tool-chameleon.md new file mode 100644 index 0000000000000000000000000000000000000000..6eaec5caba24acad59ac1e0179abab484adcf014 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/tool-chain/mysql-to-mogdb-migration-tool-chameleon.md @@ -0,0 +1,37 @@ +--- +title: MySQL->MogDB迁移工具chameleon +summary: MySQL->MogDB迁移工具chameleon +author: Guo Huan +date: 2022-05-10 +--- + +# MySQL->MogDB迁移工具chameleon + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +chameleon工具是一个基于Python语言的MySQL到MogDB的实时复制工具。该工具提供了初始全量数据的复制以及增量数据的实时复制能力,可实现数据从MySQL迁移至MogDB。对于数据的全量和增量迁移,支持MySQL中各种数据类型的迁移,同时对于MySQL中的浮点数据类型,包括decimal、dec、numeric、float、float4、float8、real、double、double precision、fixed数据类型,可保证迁移后数据精度不丢失。 + +## 客户价值 + +通过使用chameleon工具,可完成数据从MySQL搬迁至MogDB数据库。 + +## 特性描述 + +chameleon工具提供数据全量和增量复制功能,使得数据可以从MySQL迁移至MogDB数据库。对于数据的全量和增量迁移,chameleon工具中存储了MySQL数据类型与MogDB数据类型之间的映射关系,可支持MySQL中各种数据类型的迁移。特别地,对于MySQL中的浮点数据类型,包括decimal、dec、numeric、float、float4、float8、real、double、double precision、fixed数据类型,若数据类型中显示指定或默认含有精度,将转化为MogDB中的numeric[p, s]类型;若数据类型中未显示指定精度,将转化为MogDB中的numeric数据类型,基于此,可保证离线迁移和在线迁移后数据精度不丢失。 + +## 特性增强 + +无。 + +## 特性约束 + +- 支持MySQL 5.7版本。 +- 对于数据类型映射后仍存在不兼容的情形,将导致表数据迁移失败,但不会终止后续的数据离线迁移过程。 + +## 依赖关系 + +无。 \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/1-logical-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/1-logical-operators.md index 9aafdf6e57b1f9862a6e68551586a7df22b40c0f..5bb95b404fe4d98f7c42990d20cf517e4e850f36 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/1-logical-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/1-logical-operators.md @@ -20,7 +20,7 @@ date: 2021-04-20 | TRUE | NULL | NULL | TRUE | FALSE | | FALSE | FALSE | FALSE | FALSE | TRUE | | FALSE | NULL | FALSE | NULL | TRUE | -| NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NOT NULL | -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > 操作符AND和OR具有交换性,即交换左右两个操作数,不影响其结果。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13-json-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13-json-functions.md index 9ef8b524bec46028f3845ac8f9b03290d3a9eabe..53a4a397aed4a2bbf25a6fb6c14520069cbdbfc7 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13-json-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13-json-functions.md @@ -24,7 +24,7 @@ JSON/JSONB数据类型参考[JSON/JSONB类型](12-json-types)。 > > 对于 #> 和 #>> 操作符,当给出的路径无法查找到数据时,不会报错,会返回空。 -**表 2** **jsonb额外支持操作符** +**表 2** **JSONB额外支持操作符** | 操作符 | 右操作数类型 | 描述 | 例子 | | :----- | :----------- | :----------------------------------------------- | :------------------------------------------------- | @@ -744,3 +744,40 @@ JSON/JSONB数据类型参考[JSON/JSONB类型](12-json-types)。 ["1","5"] (1 row) ``` + +- jsonb\_hash\(jsonb\) + + 描述:对jsonb进行hash运算。 + + 返回类型:integer + + 示例: + + ``` + MogDB=# select jsonb_hash('[1,2,3]'); + jsonb_hash + ------------ + -559968547 + (1 row) + ``` + +- 其他函数 + + 描述:gin索引以及json\\jsonb聚集函数所用到的内部函数,功能不过多赘述。 + + ``` + gin_compare_jsonb + gin_consistent_jsonb + gin_consistent_jsonb_hash + gin_extract_jsonb + gin_extract_jsonb_hash + gin_extract_jsonb_query + gin_extract_jsonb_query_hash + gin_triconsistent_jsonb + gin_triconsistent_jsonb_hash + + json_agg_transfn + json_agg_finalfn + json_object_agg_transfn + json_object_agg_finalfn + ``` \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/14-sequence-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/14-sequence-functions.md index 7262605f1ae17fe3f500fba1fc9a99047326c3ee..3fef6353c432d2d0b4d0c2f6d69557afd25541c6 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/14-sequence-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/14-sequence-functions.md @@ -19,7 +19,7 @@ date: 2021-04-20 > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:** > nextval函数只能在主机上执行,备机不支持执行此函数。 - 返回类型:bigint + 返回类型:numeric nextval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符“.”的情况),如下: @@ -47,7 +47,7 @@ date: 2021-04-20 返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。 - 返回类型:bigint + 返回类型:numeric currval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符“.”的情况),如下: @@ -75,7 +75,7 @@ date: 2021-04-20 描述:返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。 - 返回类型:bigint + 返回类型:numeric 示例: @@ -87,11 +87,11 @@ date: 2021-04-20 (1 row) ``` -- setval(regclass, bigint) +- setval(regclass, numeric) 描述:设置序列的当前数值。 - 返回类型:bigint + 返回类型:numeric 示例: @@ -103,11 +103,11 @@ date: 2021-04-20 (1 row) ``` -- setval(regclass, bigint, Boolean) +- setval(regclass, numeric, Boolean) 描述:设置序列的当前数值以及is_called标志。 - 返回类型:bigint + 返回类型:numeric 示例: @@ -125,3 +125,9 @@ date: 2021-04-20 > > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:** > nextval函数只能在主机上执行,备机不支持执行此函数。 + +- pg_sequence_last_value(sequence_oid oid, OUT cache_value int16, OUT last_value int16) + + 描述:获取指定sequence的参数,包含缓存值,当前值。 + + 返回类型:int16,int16 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/15-array-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/15-array-functions-and-operators.md index 41bcc21fe55783df770cbac3fa059151b986d5da..f15a150dfb3ad24d995b8f36123c0b315a69397b 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/15-array-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/15-array-functions-and-operators.md @@ -243,7 +243,23 @@ date: 2021-04-20 (1 row) ``` -- array_cat_distinct(anyarray, anyarray) +- array\_union\(anyarray, anyarray\) + + 描述:连接两个数组,只支持一维数组。 + + 返回类型:anyarray + + 示例: + + ``` + MogDB=# SELECT array_union(ARRAY[1,2,3], ARRAY[3,4,5]) AS RESULT; + result + ------------- + {1,2,3,3,4,5} + (1 row) + ``` + +- array\_union\_distinct\(anyarray, anyarray\) 描述:连接两个数组,并去重,只支持一维数组。 @@ -251,14 +267,14 @@ date: 2021-04-20 示例: - ```sql - mogdb=# SELECT array_cat_distinct(ARRAY[1,2,3], ARRAY[3,4,5]) AS RESULT; - result + ``` + MogDB=# SELECT array_union_distinct(ARRAY[1,2,3], ARRAY[3,4,5]) AS RESULT; + result ------------- {1,2,3,4,5} (1 row) ``` - + - array_intersect(anyarray, anyarray) 描述:两个数组取交集,只支持一维数组。 @@ -457,6 +473,22 @@ date: 2021-04-20 (1 row) ``` +- array\_deleteidx\(anyarray, int\) + + 描述:从数组中删除指定下标的元素并返回剩余元素组成的数组。 + + 返回类型:anyarray + + 示例: + + ``` + MogDB=# SELECT array_deleteidx(ARRAY[1,2,3,4,5], 1) AS RESULT; + result + ----------- + {2,3,4,5} + (1 row) + ``` + - array_extendnull(anyarray, int) 描述:往数组尾部添加指定个数的null空元素。 @@ -473,6 +505,22 @@ date: 2021-04-20 (1 row) ``` +- array\_trim\(anyarray, int\) + + 描述:从数组尾部删除指定个数个元素。 + + 返回类型:anyarray + + 示例: + + ``` + MogDB=# SELECT array_trim(ARRAY[1,8,3,7],1) AS RESULT; + result + --------- + {1,8,3} + (1 row) + ``` + - array_exists(anyarray, int) 描述:检查第二个参数是否是数组的合法下标。 @@ -514,7 +562,7 @@ date: 2021-04-20 示例: ```sql - mogdb=# SELECT array_next(ARRAY[1,8,3,7],2) AS RESULT; + mogdb=# SELECT array_prior(ARRAY[1,8,3,7],2) AS RESULT; result -------- 1 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/17-aggregate-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/17-aggregate-functions.md index 4e2fbe44f510e507336e9216d319b9e0ce262847..a5c0c7733dd67e72ad4e4d4a90a8764b0f8ac0e7 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/17-aggregate-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/17-aggregate-functions.md @@ -664,7 +664,7 @@ date: 2021-04-20 - 若计算某列的CHECKSUM值,且该列类型不能默认转为TEXT类型,则expression为列名::TEXT。 - 若计算所有列的CHECKSUM值,则expression为表名::TEXT。 - 可以默认转换为TEXT类型的类型包括:char, name, int8, int2, int1, int4, raw, pg_node_tree, float4, float8, bpchar, varchar, nvarchar2, date, timestamp, timestamptz, numeric, smalldatetime,其他类型需要强制转换为TEXT。 + 可以默认转换为TEXT类型的类型包括:char、name、 int8、 int2、 int1、 int4、 raw、 pg\_node\_tree、 float4、 float8、 bpchar、 varchar、 nvarchar、 nvarchar2、 date、 timestamp、 timestamptz、 numeric、 smalldatetime,其他类型需要强制转换为TEXT。 返回类型:numeric。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/23-system-information-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/23-system-information-functions.md index 340ae77b681ff74fcca7ab4b73e1dca12323ebf1..5a10bd1f9e7bfed3078865122deea10bef099e23 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/23-system-information-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/23-system-information-functions.md @@ -600,6 +600,12 @@ date: 2021-04-20 (1 row) ``` +- get_client_info() + + 描述:返回客户端信息。 + + 返回值类型:record + ## 访问权限查询函数 DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权限,隐式拥有。 @@ -703,7 +709,7 @@ DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权 备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY、ALTER、DROP、COMMENT或TEMP(等价于TEMPORARY)的一些组合。 -- has_directory_privilege(user, database, privilege) +- has_directory_privilege(user, directory, privilege) 描述:指定用户是否有访问directory的权限。 @@ -712,12 +718,12 @@ DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权 | 参数名 | 合法入参类型 | | :-------- | :----------- | | user | name, oid | - | database | text, oid | + | directory | text, oid | | privilege | text | 返回类型:Boolean -- has_directory_privilege(database, privilege) +- has_directory_privilege(directory, privilege) 描述:当前用户是否有访问directory的权限,合法参数类型请参见表6。 @@ -894,6 +900,19 @@ DDL类权限ALTER、DROP、COMMENT、INDEX、VACUUM属于所有者固有的权 返回类型:Boolean 备注:pg_has_role检查用户是否能以特定方式访问一个角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。 + +- has_any_privilege(user, privilege) + + 描述:指定用户是否有某项ANY权限,若同时查询多个权限,只要具有其中一个则返回true。 + + 返回类型:Boolean + + **表 11** 参数类型说明 + + | 参数名 | 合法入参类型 | 描述 | 取值范围 | + | :-------- | :----------- | :------ | :----------------------------------------------------------- | + | user | name | 用户 | 已存在的用户名。 | + | privilege | text | ANY权限 | 可选取值:
CREATE ANY TABLE [WITH ADMIN OPTION]
ALTER ANY TABLE [WITH ADMIN OPTION]
DROP ANY TABLE [WITH ADMIN OPTION]
SELECT ANY TABLE [WITH ADMIN OPTION]
INSERT ANY TABLE [WITH ADMIN OPTION]
UPDATE ANY TABLE [WITH ADMIN OPTION]
DELETE ANY TABLE [WITH ADMIN OPTION]
CREATE ANY SEQUENCE [WITH ADMIN OPTION]
CREATE ANY INDEX [WITH ADMIN OPTION]
CREATE ANY FUNCTION [WITH ADMIN OPTION]
EXECUTE ANY FUNCTION [WITH ADMIN OPTION]
CREATE ANY PACKAGE [WITH ADMIN OPTION]
EXECUTE ANY PACKAGE [WITH ADMIN OPTION]
CREATE ANY TYPE [WITH ADMIN OPTION] | ## 模式可见性查询函数 @@ -1386,7 +1405,7 @@ mogdb=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); 描述:获取指定sequence的参数,包含起始值,最小值和最大值,递增值等。 - 返回类型:bigint, bigint, bigint, bigint, Boolean + 返回类型:int16, int16,int16, bigint, Boolean 示例: @@ -1436,7 +1455,7 @@ mogdb=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); 内部事务ID类型(xid)是64位。这些函数使用的数据类型txid_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述在表11。 -**表 11** 快照组件 +**表 12** 快照组件 | 名称 | 描述 | | :------- | :----------------------------------------------------------- | @@ -1456,6 +1475,12 @@ txid_snapshot的文本表示为:xmin:xmax:xip_list。 返回类型:bigint +- gs\_txid\_oldestxmin\(\) + + 描述:获取当前最小事务id的值oldesxmin。 + + 返回类型:bigint + - txid_current_snapshot() 描述:获取当前快照。 @@ -1504,6 +1529,20 @@ txid_snapshot的文本表示为:xmin:xmax:xip_list。 返回类型:Boolean +- gs_get_next_xid_csn() + + 描述:返回全局所有节点上的next_xid和next_csn值。 + + 返回值如下: + + **表 13** gs_get_next_xid_csn返回参数说明 + + | 字段名 | 描述 | + | :------- | :----------------------- | + | nodename | 节点名称。 | + | next_xid | 当前节点下一个事务id号。 | + | next_csn | 当前节点下一个csn号。 | + - slice(hstore, text[]) 描述: 提取hstore的子集。 @@ -1605,7 +1644,7 @@ txid_snapshot的文本表示为:xmin:xmax:xip_list。 - pg_shared_memory_detail - 描述:返回所有已产生的共享内存上下文的使用信息,各列描述请参考GS_SHARED_MEMORY_DETAIL。 + 描述:返回所有已产生的共享内存上下文的使用信息,各列描述请参考[GS_SHARED_MEMORY_DETAIL](GS_SHARED_MEMORY_DETAIL)。 参数:nan @@ -1613,7 +1652,7 @@ txid_snapshot的文本表示为:xmin:xmax:xip_list。 - get_gtm_lite_status - 描述:返回GTM上的backupXid和csn号,用来支持问题定位,GTM-FREE模式下不支持使用本系统函数,集中式不支持该函数。 + 描述:返回GTM上的backupXid和csn号,用来支持问题定位,GTM-FREE模式下不支持使用本系统函数。 - gs_stat_get_wlm_plan_operator_info diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/10-undo-system-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/10-undo-system-functions.md index 5ffe2f3fcb506ad3b3a645d015fd6d78ee5fda64..c93933937d7ed97b1148dd2af564b0214e8c857b 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/10-undo-system-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/10-undo-system-functions.md @@ -7,7 +7,7 @@ date: 2021-10-28 # Undo系统函数 -- gs_undo_meta(type, zid, location) +- gs_undo_meta(type, zoneId, location) 描述:Undo各模块元信息。 @@ -23,7 +23,7 @@ date: 2021-10-28 3表示Undo Space(Transaction Slot) 对应的元信息。 - - zid(undo zone编号) + - zoneId(undo zone编号) -1表示所有undo zone的元信息。 @@ -37,26 +37,53 @@ date: 2021-10-28 返回值类型:record -- gs_undo_translot(type, zid) +- gs_undo_translot(location, zoneId) 描述:Undo事务槽信息。 参数说明: - - type(元信息类型) + - location(读取位置) - 0表示Undo Zone(Record) 对应的元信息。 + 0表示从当前内存中读取。 - 1表示Undo Zone(Transaction Slot) 对应的元信息。 + 1表示从物理文件中读取。 - 2表示Undo Space(Record) 对应的元信息。 + - zoneId(undo zone编号) - 3表示Undo Space(Transaction Slot) 对应的元信息。 + -1表示所有undo zone的元信息。 - - zid(undo zone编号) + 0-1024*1024表示对应zoneId的元信息。 - -1表示所有undo zone的元信息。 + 返回值类型:record - 0-1024*1024表示对应zoneid的元信息。 +- gs_stat_undo() + + 描述:Undo统计信息。 + + 返回值类型:record + + **表 1** gs_stat_undo参数说明 + + | 参数类型 | 参数名 | 类型 | 描述 | + | :------- | :---------------------- | :----- | :----------------------------------------------------------- | + | 输出参数 | curr_used_zone_count | uint32 | 当前使用的Undo zone数量。 | + | 输出参数 | top_used_zones | text | 前三个使用量最大的Undo zone信息,格式输出为:(zoneId1:使用大小,zoneId2:使用大小,zoneId3:使用大小)。 | + | 输出参数 | curr_used_undo_size | uint32 | 当前使用的Undo总空间大小,单位为MB。 | + | 输出参数 | undo_threshold | uint32 | 为guc参数undo_space_limit_size * 80%计算的结果,单位为MB。 | + | 输出参数 | oldest_xid_in_undo | uint64 | 当前Undo空间回收到的事务xid(小于该xid事务产生的Undo记录都已经被回收)。 | + | 输出参数 | oldest_xmin | uint64 | 最老的活跃事务。 | + | 输出参数 | total_undo_chain_len | int64 | 所有访问过的Undo链总长度。 | + | 输出参数 | max_undo_chain_len | int64 | 最大访问过的Undo链长度。 | + | 输出参数 | create_undo_file_count | uint32 | 创建的Undo文件数量统计。 | + | 输出参数 | discard_undo_file_count | uint32 | 删除的Undo文件数量统计。 | + +- gs_undo_record(undoptr) + + 描述:Undo记录解析。 + + 参数说明: + + - undoptr(undo记录指针) 返回值类型:record diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/6-database-object-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/6-database-object-functions.md index ef465ad490a1f0972197b4ad1d57c9bc9598f6b6..9edcdfca979dd3d38bc167d4a2df424e9cd30d05 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/6-database-object-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/6-database-object-functions.md @@ -209,7 +209,7 @@ date: 2021-04-20 存储空间 - 数值类型 + 数值类型 整数类型 TINYINT 1 @@ -244,7 +244,7 @@ date: 2021-04-20 每4位十进制数占两个字节,小数点前后数字分别计算 - 序列整型 + 序列整型 SMALLSERIAL 2 @@ -253,9 +253,13 @@ date: 2021-04-20 4 - BIGSERIAL + LARGESERIAL 8 + + BIGSERIAL + 每4位十进制数占两个字节,小数点前后数字分别计算 + 浮点类型 FLOAT4 @@ -292,8 +296,8 @@ date: 2021-04-20 1 - 字符类型 - 字符类型 + 字符类型 + 字符类型 CHAR n @@ -325,6 +329,10 @@ date: 2021-04-20 VARCHAR2(n) 字符实际字节数 + + NVARCHAR(n) + 字符实际字节数 + NVARCHAR2(n) 字符实际字节数 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/8-logical-replication-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/8-logical-replication-functions.md index 210f387a468216f32b4af13944b37f50e0c45588..e8d823da86ad94e69976b2f272ecc40e56a30239 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/8-logical-replication-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/8-logical-replication-functions.md @@ -9,160 +9,589 @@ date: 2021-04-20 - pg_create_logical_replication_slot('slot_name', 'plugin_name') - 描述: 创建逻辑复制槽。 + 描述:创建逻辑复制槽。 - 参数说明: + 参数说明: - slot_name 流复制槽名称。 - 取值范围: 字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 - plugin_name 插件名称。 - 取值范围: 字符串,当前支持mppdb_decoding。 + 取值范围:字符串,当前支持mppdb_decoding。 - 返回值类型: name, text + 返回值类型:name, text - 备注: 第一个返回值表示slot_name,第二个返回值表示该逻辑复制槽解码的起始LSN位置。 + 备注:第一个返回值表示slot_name,第二个返回值表示该逻辑复制槽解码的起始LSN位置。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 - pg_create_physical_replication_slot('slot_name', 'isDummyStandby') - 描述: 创建新的物理复制槽。 + 描述:创建新的物理复制槽。 - 参数说明: + 参数说明: - slot_name 流复制槽名称。 - 取值范围: 字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 - isDummyStandby 是否是从从备连接主机创建的复制槽。 - 类型: bool。 + 类型:bool。 - 返回值类型: name, text + 返回值类型:name, text + + 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。目前默认不支持主备从部署模式。 - pg_drop_replication_slot('slot_name') - 描述: 删除流复制槽。 + 描述:删除流复制槽。 - 参数说明: + 参数说明: - slot_name 流复制槽名称。 - 取值范围: 字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + + 返回值类型:void - 返回值类型: void + 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 - pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') - 描述: 解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。 + 描述:解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。 - 参数说明: + 参数说明: - slot_name 流复制槽名称。 - 取值范围: 字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 - LSN 日志的LSN,表示只解码小于等于此LSN的日志。 - 取值范围: 字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 + 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 - upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 - 取值范围: 非负整数。 + 取值范围:非负整数。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** LSN和upto_nchanges中任一参数达到限制,解码都会结束。 + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** LSN和upto_nchanges中任一参数达到限制,解码都会结束。 - - options: 此项为可选参数。 + - options:此项为可选参数,由一系列options_name和options_value一一对应组成。 - include-xids - 解码出的data列是否包含xid信息。 + 解码出的data列是否包含xid信息。 - 取值范围: 0或1,默认值为1。 + 取值范围:0或1,默认值为1。 - - 0: 设为0时,解码出的data列不包含xid信息。 - - 1: 设为1时,解码出的data列包含xid信息。 + - 0:设为0时,解码出的data列不包含xid信息。 + - 1:设为1时,解码出的data列包含xid信息。 - skip-empty-xacts - 解码时是否忽略空事务信息。 + 解码时是否忽略空事务信息。 - 取值范围: 0或1,默认值为0。 + 取值范围:0或1,默认值为0。 - - 0: 设为0时,解码时不忽略空事务信息。 - - 1: 设为1时,解码时会忽略空事务信息。 + - 0:设为0时,解码时不忽略空事务信息。 + - 1:设为1时,解码时会忽略空事务信息。 - include-timestamp - 解码信息是否包含commit时间戳。 + 解码信息是否包含commit时间戳。 + + 取值范围:0或1,默认值为0。 + + - 0:设为0时,解码信息不包含commit时间戳。 + - 1:设为1时,解码信息包含commit时间戳。 + + - only-local + + 是否仅解码本地日志。 + + 取值范围:0或1,默认值为1。 + + - 0:设为0时,解码非本地日志和本地日志。 + - 1:设为1时,仅解码本地日志。 + + - force-binary + + 是否以二进制格式输出解码结果。 + + 取值范围:0,默认值为0。 + + - 0:设为0时,以文本格式输出解码结果。 + + - white-table-list - 取值范围: 0或1,默认值为0。 + 白名单参数,包含需要进行解码的schema和表名。 - - 0: 设为0时,解码信息不包含commit时间戳。 - - 1: 设为1时,解码信息包含commit时间戳。 + 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分割,不允许存在任意空白符。例: + + select * from pg_logical_slot_peek_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2'); - 返回值类型: text, uint, text 备注: 函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和解码内容。 + 返回值类型:text, xid, text + + 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和解码内容。 + + 调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 - pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') - 描述: 解码并推进流复制槽。 + 描述:解码并推进流复制槽。 + + 参数说明:与pg_logical_slot_peek_changes一致。 + + 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 + +- pg_logical_slot_peek_binary_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') + + 描述:以二进制格解码且不推进流复制槽(下次解码可以再次获取本次解出的数据)。 + + 参数说明: + + - slot_name + + 流复制槽名称。 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + + - LSN + + 日志的LSN,表示只解码小于等于此LSN的日志。 + + 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 + + - upto_nchanges + + 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 + + 取值范围:非负整数。 + + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** LSN和upto_nchanges中任一参数达到限制,解码都会结束。 + + - options:此项为可选参数,由一系列options_name和options_value一一对应组成。 + + - include-xids + + 解码出的data列是否包含xid信息。 + + 取值范围:0或1,默认值为1。 + + - 0:设为0时,解码出的data列不包含xid信息。 + - 1:设为1时,解码出的data列包含xid信息。 + + - skip-empty-xacts + + 解码时是否忽略空事务信息。 + + 取值范围:0或1,默认值为0。 + + - 0:设为0时,解码时不忽略空事务信息。 + - 1:设为1时,解码时会忽略空事务信息。 + + - include-timestamp + + 解码信息是否包含commit时间戳。 + + 取值范围:0或1,默认值为0。 + + - 0:设为0时,解码信息不包含commit时间戳。 + - 1:设为1时,解码信息包含commit时间戳。 - 参数说明: 与pg_logical_slot_peek_changes一致,详细内容请参见 pg_logical_slot_peek_ch…。 + - only-local + + 是否仅解码本地日志。 + + 取值范围:0或1,默认值为1。 + + - 0:设为0时,解码非本地日志和本地日志。 + - 1:设为1时,仅解码本地日志。 + + - force-binary + + 是否以二进制格式输出解码结果。 + + 取值范围:0或1,默认值为0,均以二进制格式输出结果。 + + - white-table-list + + 白名单参数,包含需要进行解码的schema和表名。 + + 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分割,不允许存在任意空白符。例: + + select * from pg_logical_slot_peek_binary_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2'); + + 返回值类型:text, xid, bytea + + 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和二进制格式的解码内容。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 + +- pg_logical_slot_get_binary_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') + + 描述:以二进制格式解码并推进流复制槽。 + + 参数说明:与pg_logical_slot_peek_binary_changes一致。 + + 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 - pg_replication_slot_advance ('slot_name', 'LSN') - 描述: 直接推进流复制槽到指定LSN,不输出解码结果。 + 描述:直接推进流复制槽到指定LSN,不输出解码结果。 - 参数说明: + 参数说明: - slot_name 流复制槽名称。 - 取值范围: 字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 - LSN 推进到的日志LSN位置,下次解码时只会输出提交位置比该LSN大的事务结果。如果输入的LSN比当前流复制槽记录的推进位置还要小,则直接返回;如果输入的LSN比当前最新物理日志LSN还要大,则推进到当前最新物理日志LSN。 - 取值范围: 字符串(LSN,格式为xlogid/xrecoff)。 + 取值范围:字符串(LSN,格式为xlogid/xrecoff)。 + + 返回值类型:name, text + + 备注:返回值分别对应slot_name和实际推进至的LSN。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 + +- pg_logical_get_area_changes('LSN_start', 'LSN_end', upto_nchanges, 'decoding_plugin', 'xlog_path', 'options_name', 'options_value') + + 描述:没有ddl的前提下,指定lsn区间进行解码,或者指定xlog文件进行解码。 + + 约束条件如下: - 返回值类型: name, text + 1. 调用接口时,日志级别wal_level=logical,且只有在wal_level=logical期间产生的日志文件才能被解析,如果使用的xlog文件为非logical级别,则解码内容没有对应的值和类型,无其他影响。 + 2. xlog文件只能被完全同构的dn的某个副本解析,确保可以找到数据对应的元信息,且没有DDL操作和VACUUM FULL。 + 3. 用户可以找到需要解析的xlog。 + 4. 用户需要注意一次不要读入过多xlog文件,推荐一次一个,一个xlog文件估测占用内存为xlog文件大小的2~3倍。 + 5. 无法解码扩容前的xlog文件。 - 备注: 返回值分别对应slot_name和实际推进至的LSN。 + 参数说明: -- pg_get_replication_slots + - LSN_start - 描述: 获取复制槽列表。 + 指定开始解码的lsn。 - 返回值类型: text,text,text,oid,boolean,xid,xid,text,boolean + 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 - 示例: + - LSN_end + + 指定解码结束的lsn。 + + 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 + + - upto_nchanges + + 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 - ```sql - mogdb=# select * from pg_get_replication_slots(); - slot_name | plugin | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby - -----------+----------------+-----------+--------+--------+------+--------------+-------------+--------------- - wkl001 | mppdb_decoding | logical | 15914 | f | | 2079556 | 4/1B81D920 | f - dn_6002 | | physical | 0 | t | | | 8/7CB63BD8 | f - dn_6004 | | physical | 0 | t | | | 8/7CB63BD8 | f - dn_6003 | | physical | 0 | t | | | 8/7CB63BD8 | f - gfslot001 | mppdb_decoding | logical | 15914 | f | | 2412553 | 4/A54B2428 | (5 rows) + 取值范围:非负整数。 + + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** LSN和upto_nchanges中任一参数达到限制,解码都会结束。 + + - decoding_plugin + + 解码插件,指定解码内容输出格式的so插件。 + + 取值范围:提供mppdb_decoding和sql_decoding两个解码插件。 + + - xlog_path + + 解码插件,指定解码文件的xlog绝对路径,文件级别 + + 取值范围:NULL 或者 xlog文件绝对路径的字符串。 + + - options:此项为可选参数,由一系列options_name和options_value一一对应组成,可以缺省,详见pg_logical_slot_peek_changes。 + + 示例: + + ``` + MogDB=# SELECT pg_current_xlog_location(); + pg_current_xlog_location + -------------------------- + 0/E62E238 + (1 row) + + MogDB=# create table t1 (a int primary key,b int,c int); + NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1" + CREATE TABLE + MogDB=# insert into t1 values(1,1,1); + INSERT 0 1 + MogDB=# insert into t1 values(2,2,2); + INSERT 0 1 + + MogDB=# select data from pg_logical_get_area_changes('0/E62E238',NULL,NULL,'sql_decoding',NULL); + location | xid | data + -----------+-------+--------------------------------------------------- + 0/E62E8D0 | 27213 | COMMIT (at 2022-01-26 15:08:03.349057+08) 3020226 + 0/E6325F0 | 27214 | COMMIT (at 2022-01-26 15:08:07.309869+08) 3020234 + …… + ``` + +- pg_get_replication_slots() + + 描述:获取复制槽列表。 + + 返回值类型:text,text,text,oid,boolean,xid,xid,text,boolean + + 示例: + + ``` + MogDB=# select * from pg_get_replication_slots(); + slot_name | plugin | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby + -----------+----------------+-----------+--------+--------+------+--------------+-------------+--------------- + wkl001 | mppdb_decoding | logical | 15914 | f | | 2079556 | 4/1B81D920 | f + dn_6002 | | physical | 0 | t | | | 8/7CB63BD8 | f + dn_6004 | | physical | 0 | t | | | 8/7CB63BD8 | f + dn_6003 | | physical | 0 | t | | | 8/7CB63BD8 | f + gfslot001 | mppdb_decoding | logical | 15914 | f | | 2412553 | 4/A54B2428 | f + (5 rows) + ``` + +- gs_get_parallel_decode_status() + + 描述:监控各个解码线程的读取日志队列和解码结果队列的长度,以便定位并行解码性能瓶颈。 + + 返回值类型:text, int, text, text + + 示例: + + ``` + MogDB=# select * from gs_get_parallel_decode_status(); + slot_name | parallel_decode_num | read_change_queue_length | decode_change_queue_length + -----------+---------------------+------------------------------------------------------------------+------------------------------------------------------------------ + slot1 | 3 | queue0: 33, queue1: 36, queue2: 1017 | queue0: 1011, queue1: 1008, queue2: 27 + slot2 | 5 | queue0: 452, queue1: 1017, queue2: 233, queue3: 585, queue4: 183 | queue0: 754, queue1: 188, queue2: 972, queue3: 620, queue4: 1022 + (2 rows) ``` + + 备注:返回值的slot_name代表复制槽名,parallel_decode_num代表该复制槽的并行解码线程数,read_change_queue_length列出了每个解码线程读取日志队列的当前长度,decode_change_queue_length列出了每个解码线程解码结果队列的当前长度。 + +- pg_replication_origin_create (node_name) + + 描述:用给定的外部名称创建一个复制源,并且返回分配给它的内部ID。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - node_name + + 待创建的复制源的名称。 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + + 返回值类型:oid + +- pg_replication_origin_drop (node_name) + + 描述:删除一个以前创建的复制源,包括任何相关的重放进度。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - node_name + + 待删除的复制源的名称。 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + +- pg_replication_origin_oid (node_name) + + 描述:根据名称查找复制源并返回内部ID。如果没有发现这样的复制源,则抛出错误。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - node_name + + 要查找的复制源的名称 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + + 返回值类型:oid + +- pg_replication_origin_session_setup (node_name) + + 描述:将当前会话标记为从给定的原点回放,从而允许跟踪回放进度。只能在当前没有选择原点时使用。使用pg_replication_origin_session_reset 命令来撤销。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - node_name + + 复制源名称。 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + +- pg_replication_origin_session_reset () + + 描述:取消pg_replication_origin_session_setup()的效果。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + +- pg_replication_origin_session_is_setup () + + 描述:如果在当前会话中选择了复制源则返回真。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 返回值类型:boolean + +- pg_replication_origin_session_progress (flush) + + 描述:返回当前会话中选择的复制源的重放位置。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - flush + + 决定对应的本地事务是否被确保已经刷入磁盘。 + + 取值范围:boolean + + 返回值类型:LSN + +- pg_replication_origin_xact_setup (origin_lsn, origin_timestamp) + + 描述:将当前事务标记为重放在给定LSN和时间戳上提交的事务。只能在使用pg_replication_origin_session_setup选择复制源时调用。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - origin_lsn + + 复制源回放位置。 + + 取值范围:LSN + + - origin_timestamp + + 事务提交时间。 + + 取值范围:timestamp with time zone + +- pg_replication_origin_xact_reset () + + 描述:取消pg_replication_origin_xact_setup()的效果。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + +- pg_replication_origin_advance (node_name, lsn) + + 描述: + + 将给定节点的复制进度设置为给定的位置。这主要用于设置初始位置,或在配置更改或类似的变更后设置新位置。 + + 注意:这个函数的使用不当可能会导致不一致的复制数据。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - node_name + + 已有复制源名称。 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + + - lsn + + 复制源回放位置。 + + 取值范围:LSN + +- pg_replication_origin_progress (node_name, flush) + + 描述:返回给定复制源的重放位置。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 参数说明: + + - node_name + + 复制源名称。 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + + - flush + + 决定对应的本地事务是否被确保已经刷入磁盘。 + + 取值范围:boolean + +- pg_show_replication_origin_status() + + 描述:获取复制源的复制状态。 + + 备注:调用该函数的用户需要具有SYSADMIN权限。 + + 返回值类型: + + - local_id:oid,复制源id。 + - external_id:text,复制源名称。 + - remote_lsn:LSN,复制源的lsn位置。 + - local_lsn:LSN,本地的lsn位置。 + +- pg_get_publication_tables(pub_name) + + 描述:根据发布的名称,返回对应发布要发布的表的relid列表 + + 参数说明: + + - pub_name + + 已存在的发布名称 + + 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 + + 返回值类型:relid列表 + +- pg_stat_get_subscription(sub_oid oid) → record + + 描述: + + 输入订阅的oid,返回订阅的状态信息。 + + 参数说明: + +- subid + + 订阅的oid。 + + 取值范围:oid + + 返回值类型: + + - relid:oid,表的oid。 + - pid:thread_id,后台apply/sync线程的thread id。 + - received_lsn:pg_lsn,从发布端接收到的最近的lsn。 + - last_msg_send_time:timestamp,最近发布端发送消息的时间。 + - last_msg_receipt_time:timestamp,最新订阅端收到消息的时间。 + - latest_end_lsn:pg_lsn,最近一次收到保活消息时发布端的lsn。 + - latest_end_time:timstamp,最近一次收到保活消息的时间。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9-other-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9-other-functions.md index 7f76eb8d065cb69d379e08749061a0d50060f1b3..a26512f0d481c9de48357b92d165d61731b1667f 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9-other-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9-other-functions.md @@ -91,13 +91,13 @@ date: 2021-04-20 **表 1** generate_wdr_report 参数说明 - | 参数 | 说明 | 取值范围 | - | ------------- | ------------------------------------------------------------ | ----------------------------------------------- | - | begin_snap_id | 生成某段时间内性能诊断报告的开始snapshotid。 | - | - | end_snap_id | 结束snapshot的id,默认end_snap_id大于begin_snap_id。 | - | - | report_type | 指定生成report的类型。 | summarydetailall,即同时包含summary 和 detail。 | - | report_scope | 指定生成report的范围。 | cluster:数据库级别的信息node:节点级别的信息 | - | node_name | 在report_scope指定为node时,需要把该参数指定为对应节点的名称。(节点名称可以执行select * from pg_node_env;查询)。在report_scope为cluster时,该值可以省略或者指定为空或NULL。 | cluster:省略/空/NULLnode: MogDB中的节点名称 | + | 参数 | 说明 | 取值范围 | + | ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | + | begin_snap_id | 生成某段时间内性能诊断报告的开始snapshotid。 | - | + | end_snap_id | 结束snapshot的id,默认end_snap_id大于begin_snap_id。 | - | + | report_type | 指定生成report的类型。 | - summary
- detail
- all,即同时包含summary 和 detail。 | + | report_scope | 指定生成report的范围。 | - cluster:数据库级别的信息
- node:节点级别的信息 | + | node_name | 在report_scope指定为node时,需要把该参数指定为对应节点的名称。(节点名称可以执行select * from pg_node_env;查询)。
在report_scope为cluster时,该值可以省略或者指定为空或NULL。 | - cluster:省略/空/NULL
- node: MogDB中的节点名称 | - create_wdr_snapshot() @@ -127,8 +127,8 @@ date: 2021-04-20 | 参数 | 类型 | 描述 | | :---------- | :--- | :----------------------------------------------------------- | - | scope | text | 清理范围类型:'GLOBAL':清理所有的节点,如果是'GLOBAL',则只可以为主节点执行此函数。'LOCAL':清理本节点。 | - | clean_type | text | 'BY_USERID':按用户ID来进行清理Unique SQL。'BY_CNID':按主节点的ID来进行清理Unique SQL。'ALL':全部清理。 | + | scope | text | 清理范围类型:
- 'GLOBAL':清理所有的节点,如果是'GLOBAL',则只可以为主节点执行此函数。
- 'LOCAL':清理本节点。 | + | clean_type | text | - 'BY_USERID':按用户ID来进行清理Unique SQL。
- 'BY_CNID':按主节点的ID来进行清理Unique SQL。
- 'ALL':全部清理。 | | clean_value | int8 | 具体清理type对应的清理值。 | > **须知:** @@ -166,7 +166,7 @@ date: 2021-04-20 - pv_session_memctx_detail(threadid tid, MemoryContextName text) - 描述:将线程tid的MemoryContextName内存上下文信息记录到“$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过视图GS_SESSION_MEMORY_DETAIL中的sessid后获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即”)的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。对供内部开发人员和测试人员调试用的DEBUG版本,可以指定需要统计的MemoryContextName,此时会将该Context所有的内存使用情况记录到指定文件。该函数需要管理员权限的用户才能执行。 + 描述:将线程tid的MemoryContextName内存上下文信息记录到“\$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过视图GS_SESSION_MEMORY_DETAIL中的sessid后获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即”)的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。对供内部开发人员和测试人员调试用的DEBUG版本,可以指定需要统计的MemoryContextName,此时会将该Context所有的内存使用情况记录到指定文件。该函数需要管理员权限的用户才能执行。 返回值类型:boolean @@ -175,7 +175,7 @@ date: 2021-04-20 - pg_shared_memctx_detail(MemoryContextName text) - 描述:将MemoryContextName内存上下文信息记录到“$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。该函数功能仅在DEBUG版本中供内部开发人员和测试人员调试使用,在正式发布版本中调用该函数不会有任何操作。该函数需要管理员权限的用户才能执行。 + 描述:将MemoryContextName内存上下文信息记录到“\$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。该函数功能仅在DEBUG版本中供内部开发人员和测试人员调试使用,在正式发布版本中调用该函数不会有任何操作。该函数需要管理员权限的用户才能执行。 返回值类型:boolean @@ -206,6 +206,23 @@ date: 2021-04-20 返回值类型:record + **表 3** local_double_write_stat参数说明 + + | 参数 | 类型 | 描述 | + | :-------------------- | :--- | :----------------------------------------------------------- | + | node_name | text | 实例名称。 | + | curr_dwn | int8 | 当前双写文件的序列号。 | + | curr_start_page | int8 | 当前双写文件恢复起始页面。 | + | file_trunc_num | int8 | 当前双写文件复用的次数。 | + | file_reset_num | int8 | 当前双写文件写满后发生重置的次数。 | + | total_writes | int8 | 当前双写文件总的I/O次数。 | + | low_threshold_writes | int8 | 低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。 | + | high_threshold_writes | int8 | 高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。 | + | total_pages | int8 | 当前刷页到双写文件区的总的页面个数。 | + | low_threshold_pages | int8 | 低效率刷页的页面个数。 | + | high_threshold_pages | int8 | 高效率刷页的页面个数。 | + | file_id | int8 | 当前双写文件的id号。 | + - local_single_flush_dw_stat() 描述:显示本实例的单页面淘汰双写文件的情况。 @@ -238,6 +255,12 @@ date: 2021-04-20 返回值类型:record +- gs_wlm_node_clean(cstring nodename) + + 描述:动态负载管理节点故障后做数据清理操作。该函数只有管理员用户可以执行,属于数据库实例管理模块调用的,不建议用户直接调用。该视图在集中式和单机环境上不支持。 + + 返回值类型:bool + - gs_cgroup_map_ng_conf(group name) 描述:读取指定逻辑数据库的cgroup配置文件。 @@ -314,7 +337,7 @@ date: 2021-04-20 返回值类型:record - **表 3** dbe_perf.get_global_full_sql_by_timestamp参数说明 + **表 4** dbe_perf.get_global_full_sql_by_timestamp参数说明 | 参数 | 类型 | 描述 | | :-------------- | :----------------------- | :---------------------------- | @@ -327,7 +350,7 @@ date: 2021-04-20 返回值类型:record - **表 4** dbe_perf.get_global_slow_sql_by_timestamp参数说明 + **表 5** dbe_perf.get_global_slow_sql_by_timestamp参数说明 | 参数 | 类型 | 描述 | | :-------------- | :----------------------- | :---------------------------- | @@ -340,7 +363,7 @@ date: 2021-04-20 返回值类型:text - **表 5** statement_detail_decode参数说明 + **表 6** statement_detail_decode参数说明 | 参数 | 类型 | 描述 | | :----- | :------ | :----------------------------------------------------------- | @@ -448,7 +471,7 @@ date: 2021-04-20 > - 此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。 > - 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。 - **表 6** 错误表public.pgxc_copy_error_log信息 + **表 7** 错误表public.pgxc_copy_error_log信息 | 列名称 | 类型 | 描述 | | :-------- | :----------------------- | :------------------------------------------- | @@ -459,6 +482,185 @@ date: 2021-04-20 | rawrecord | text | 在数据源文件中,出现数据格式错误的原始记录。 | | detail | text | 详细错误信息。 | +- dynamic_func_control(scope text, function_name text, action text, “{params}” text[]) + + 描述:动态开启内置的功能,当前仅支持动态开启全量SQL。 + + 返回值类型:record + + **表 8** dynamic_func_control参数说明 + + | 参数 | 类型 | 描述 | + | :------------ | :----- | :----------------------------------------------------------- | + | scope | text | 动态开启功能的范围,当前仅支持'LOCAL'。 | + | function_name | text | 功能的名称,当前仅支持'STMT'。 | + | action | text | 当function_name为'STMT'时,action仅支持TRACK/UNTRACK/LIST/CLEAN:
- TRACK - 开始记录归一化SQL的全量SQL信息。
- UNTRACK - 取消记录归一化SQL的全量SQL信息。
- LIST - 列取当前TRACK的归一化SQL的信息。
- CLEAN - 清理记录当前归一化SQL的信息。 | + | params | text[] | 当function_name为'STMT'时,对应不同的action时,对应的params设置如下:
- TRACK - '{“归一化SQLID”, “L0/L1/L2”}'
- UNTRACK - '{“归一化SQLID”}'
- LIST - '{}'
- CLEAN - '{}' | + +- gs_parse_page_bypath(path text, blocknum bigint, relation_type text, read_memory boolean) + + 描述:用于解析指定表页面,并返回存放解析内容的路径。 + + 返回值类型:text + + 备注:必须是系统管理员或运维管理员才能执行此函数。 + + **表 9** gs_parse_page_bypath参数说明 + + | 参数 | 类型 | 描述 | + | :------------ | :------ | :----------------------------------------------------------- | + | path | text | - 对于普通表或段页式表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名)。例如:base/16603/16394。
- 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。
- 合法的path格式列举:
- global/relNode
- base/dbNode/relNode
- pg_tblspc/spcNode/version_dir/dbNode/relNode | + | blocknum | bigint | -1 所有block的信息
0- MaxBlockNumber 对应block的信息 | + | relation_type | text | - heap(astore 表)
- uheap(ustore 表)
- btree_index(BTree 索引)
- ubtree_index(UBTree 索引)
- segment(段页式) | + | read_memory | boolean | - false,从磁盘文件解析。
- true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。 | + +- gs_xlogdump_lsn(start_lsn text, end_lsn text) + + 描述:用于解析指定lsn范围之内的XLOG日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前XLOG位置。 + + 返回值类型:text + + 参数:LSN起始位置,LSN结束位置 + + 备注:必须是系统管理员或运维管理员才能执行此函数。 + +- gs_xlogdump_xid(c_xid xid) + + 描述:用于解析指定xid的XLOG日志,并返回存放解析内容的路径。可以通过txid_current()获取当前事务ID。 + + 参数:事务ID + + 返回值类型:text + + 备注:必须是系统管理员或运维管理员才能执行此函数。 + +- gs_xlogdump_tablepath(path text, blocknum bigint, relation_type text) + + 描述:用于解析指定表页面对应的日志,并返回存放解析内容的路径。 + + 返回值类型:text + + 备注:必须是系统管理员或运维管理员才能执行此函数。 + + **表 10** gs_xlogdump_tablepath参数说明 + + | 参数 | 类型 | 描述 | + | :------------ | :----- | :----------------------------------------------------------- | + | path | text | - 对于普通表或段页式表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名)。例如:base/16603/16394。
- 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。
- 合法的path格式列举:
- global/relNode
- base/dbNode/relNode
- pg_tblspc/spcNode/version_dir/dbNode/relNode | + | blocknum | bigint | -1 所有block的信息
0- MaxBlockNumber 对应block的信息 | + | relation_type | text | - heap(astore 表)
- uheap(ustore 表)
- btree_index(BTree 索引)
- ubtree_index(UBTree 索引)
- segment(段页式) | + +- gs_xlogdump_parsepage_tablepath(path text, blocknum bigint, relation_type text, read_memory boolean) + + 描述:用于解析指定表页面和表页面对应的日志,并返回存放解析内容的路径。可以看做一次执行gs_parse_page_bypath和gs_xlogdump_tablepath。该函数执行的前置条件是表文件存在。如果想查看已删除的表的相关日志,请直接调用gs_xlogdump_tablepath。 + + 返回值类型:text + + 备注:必须是系统管理员或运维管理员才能执行此函数。 + + **表 11** gs_xlogdump_parsepage_tablepath参数说明 + + | 参数 | 类型 | 描述 | + | :------------ | :------ | :----------------------------------------------------------- | + | path | text | - 对于普通表或段页式表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394
- 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。
- 合法的path格式列举:
- global/relNode
- base/dbNode/relNode
- pg_tblspc/spcNode/version_dir/dbNode/relNode | + | blocknum | bigint | -1 所有block的信息
0- MaxBlockNumber 对应block的信息 | + | relation_type | text | - heap(astore 表)
- uheap(ustore 表)
- btree_index(BTree 索引)
- ubtree_index(UBTree 索引)
- segment(段页式) | + | read_memory | boolean | - false,从磁盘文件解析
- true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析 | + +- gs_index_verify(Oid oid, uint32:wq blkno) + + 描述:用于校验UBtree索引页面或者索引树上key的顺序是否正确。 + + 返回值类型:record + + **表 12** gs_index_verify参数说明 + + | 参数 | 类型 | 描述 | + | :---- | :----- | :----------------------------------------------------------- | + | oid | Oid | 索引文件relfilenode,可以通过select relfilenode from pg_class where relname='name'查询,其中name表示对应的索引文件名字。 | + | blkno | uint32 | 0 ,表示检验整个索引树上所有页面。
大于0,表示校验页面编码等于blkno的索引页面。 | + +- gs_index_recycle_queue(Oid oid, int type, uint32 blkno) + + 描述:用于解析UBtree索引回收队列信息。 + + 返回值类型:record + + **表 13** gs_index_recycle_queue参数说明 + + | 参数 | 类型 | 描述 | + | :---- | :----- | :----------------------------------------------------------- | + | oid | Oid | 索引文件relfilenode,可以通过select relfilenode from pg_class where relname='name'查询,其中name表示对应的索引文件名字。 | + | type | int | 0,表示解析整个待回收队列。
1,表示解析整个空页队列。
2,表示解析单个页面。 | + | blkno | uint32 | 回收队列页面编号,该参数只有在type=2的时候有效,blkno有效取值范围为1~4294967294。 | + +- gs_stat_wal_entrytable(int64 idx) + + 描述:用于输出xlog中预写日志插入状态表的内容。 + + 返回值类型:record + + **表 14** gs_stat_wal_entrytable参数说明 + + | 参数类型 | 参数名 | 类型 | 描述 | + | :------- | :----- | :----- | :----------------------------------------------------------- | + | 输入参数 | idx | int64 | -1:查询数组所有元素。
0-最大值:具体某个数组元素内容。 | + | 输出参数 | idx | uint64 | 记录对应数组中的下标。 | + | 输出参数 | endlsn | uint64 | 记录的LSN标签。 | + | 输出参数 | lrc | int32 | 记录对应的LRC。 | + | 输出参数 | status | uint32 | 标识当前entry对应的xlog是否已经完全拷贝到wal buffer中:
0:非COPIED
1:COPIED | + +- gs_walwriter_flush_position() + + 描述:输出预写日志的刷新位置。 + + 返回值类型:record + + **表 15** gs_walwriter_flush_position参数说明 + + | 参数类型 | 参数名 | 类型 | 描述 | + | :------- | :---------------------- | :----- | :----------------------------------------------------------- | + | 输出参数 | last_flush_status_entry | int32 | Xlog flush上一个刷盘的tblEntry下标索引。 | + | 输出参数 | last_scanned_lrc | int32 | Xlog flush上一次扫描到的最后一个tblEntry记录的LRC。 | + | 输出参数 | curr_lrc | int32 | WALInsertStatusEntry状态表中LRC最新的使用情况,该LRC表示下一个Xlog记录写入时在WALInsertStatusEntry对应的LRC值。 | + | 输出参数 | curr_byte_pos | uint64 | Xlog记录写入WAL文件,最新分配的位置,下一个xlog记录插入点。 | + | 输出参数 | prev_byte_size | uint32 | 上一个xlog记录的长度。 | + | 输出参数 | flush_result | uint64 | 当前全局xlog刷盘的位置。 | + | 输出参数 | send_result | uint64 | 当前主机上xlog发送位置。 | + | 输出参数 | shm_rqst_write_pos | uint64 | 共享内存中记录的XLogCtl中LogwrtRqst请求的write位置。 | + | 输出参数 | shm_rqst_flush_pos | uint64 | 共享内存中记录的XLogCtl中LogwrtRqst请求的flush位置。 | + | 输出参数 | shm_result_write_pos | uint64 | 共享内存中记录的XLogCtl中LogwrtResult的write位置。 | + | 输出参数 | shm_result_flush_pos | uint64 | 共享内存中记录的XLogCtl中LogwrtResult的flush位置。 | + | 输出参数 | curr_time | text | 当前时间。 | + +- gs_walwriter_flush_stat(int operation) + + 描述:用于统计预写日志write与sync的次数频率与数据量,以及xlog文件的信息。 + + 返回值类型:record + + **表 16** gs_walwriter_flush_stat参数说明 + + | 参数类型 | 参数名 | 类型 | 描述 | + | :------- | :--------------------------- | :----- | :----------------------------------------------------------- | + | 输入参数 | operation | int | -1:关闭统计开关(默认状态为关闭)。
0:打开统计开关。
1:查询统计信息。2:重置统计信息。 | + | 输出参数 | write_times | uint64 | Xlog调用write接口的次数。 | + | 输出参数 | sync_times | uint64 | Xlog调用sync接口次数。 | + | 输出参数 | total_xlog_sync_bytes | uint64 | Backend线程请求写入xlog总量统计值。 | + | 输出参数 | total_actual_xlog_sync_bytes | uint64 | 调用sync接口实际刷盘的xlog总量统计值。 | + | 输出参数 | avg_write_bytes | uint32 | 每次调用XLogWrite接口请求写的xlog量。 | + | 输出参数 | avg_actual_write_bytes | uint32 | 实际每次调用write接口写的xlog量。 | + | 输出参数 | avg_sync_bytes | uint32 | 平均每次请求sync的xlog量。 | + | 输出参数 | avg_actual_sync_bytes | uint32 | 实际每次调用sync刷盘xlog量。 | + | 输出参数 | total_write_time | uint64 | 调用write操作总时间统计(单位:us)。 | + | 输出参数 | total_sync_time | uint64 | 调用sync操作总时间统计(单位:us)。 | + | 输出参数 | avg_write_time | uint32 | 每次调用write接口平均时间(单位:us)。 | + | 输出参数 | avg_sync_time | uint32 | 每次调用sync接口平均时间(单位:us)。 | + | 输出参数 | curr_init_xlog_segno | uint64 | 当前最新创建的xlog段文件编号。 | + | 输出参数 | curr_open_xlog_segno | uint64 | 当前正在写的xlog段文件编号。 | + | 输出参数 | last_reset_time | text | 上一次重置统计信息的时间。 | + | 输出参数 | curr_time | text | 当前时间。 | + - gs_comm_proxy_thread_status() 描述:用于在集群配置用户态网络的场景下,代理通信库comm_proxy收发数据包统计 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9.1-segment-page-storage-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9.1-segment-page-storage-functions.md index 4ce182eb41abcadd3ee2c428c6ba3f167fe99e53..9a700958513e3f1f6d71c197df79e3f60e4b7687 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9.1-segment-page-storage-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/9.1-segment-page-storage-functions.md @@ -66,13 +66,13 @@ date: 2021-10-28 - local_space_shrink(tablespacename TEXT, databasename TEXT) - 描述:当前节点上对指定段页式空间做物理空间压缩。注意,目前只支持对当前连接的database做shrink。 + 描述:当前节点上对指定段页式空间做物理空间收缩。注意,目前只支持对当前连接的database做shrink。 返回值:空 - gs_space_shrink(int4 tablespace, int4 database, int4 extent_type, int4 forknum) - 描述:效果跟local_space_shrink类似,对指定段页式空间做物理空间压缩,但参数不同,传入的是tablespace和database的oid,extent_type为[2,5]的int值。注意:extent_type = 1表示段页式元数据,目前不支持对元数据所在的物理文件做压缩。该函数仅限工具使用,不建议用户直接使用。 + 描述:效果跟local_space_shrink类似,对指定段页式空间做物理空间收缩,但参数不同,传入的是tablespace和database的oid,extent_type为[2,5]的int值。注意:extent_type = 1表示段页式元数据,目前不支持对元数据所在的物理文件做收缩。该函数仅限工具使用,不建议用户直接使用。 返回值:空 @@ -87,7 +87,7 @@ date: 2021-10-28 | space_id | 表空间ID | | db_id | 数据库ID | | block_id | Extent的ID | - | type | Extent的类型,当前有三种:ALLOC_SEGMENT\|DROP_SEGMENT\|SHRINK_EXTENT | + | type | Extent的类型,当前有三种:ALLOC_SEGMENT、DROP_SEGMENT、SHRINK_EXTENT | 其中type的三种类型分别表示: diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/25-statistics-information-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/25-statistics-information-functions.md index 10978bc94399aac0d0c79f850c4e690f635a7855..e62a749aed64d8f5302b58d6459f09cf433f6b6d 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/25-statistics-information-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/25-statistics-information-functions.md @@ -9,30 +9,6 @@ date: 2021-04-20 统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器进程号为参数,其范围从1到当前活跃服务器的数目。 -- global_comm_get_status() - - 描述:获取所有DN节点的通信库状态。 - - 返回值类型:record - -- global_comm_get_send_stream() - - 描述:获取所有DN节点上所有的通信库发送流状态。 - - 返回值类型:record - -- global_comm_get_recv_stream() - - 描述:获取所有DN节点上所有的通信库接收流状态。 - - 返回值类型:record - -- global_comm_get_client_info() - - 描述:获取全局节点客户端连接信息。 - - 返回值类型:record - - pg_stat_get_db_conflict_tablespace(oid) 描述:由于恢复与数据库中删除的表空间发生冲突而取消的查询数。 @@ -561,7 +537,7 @@ date: 2021-04-20 | datid | oid | 用户会话在后台连接到的数据库OID。 | | pid | bigint | 后台线程ID。 | | sessionid | bigint | 会话ID。 | - | usesysid | oid | 登录该后台的用户名。 | + | usesysid | oid | 登录该后台的用户OID。 | | application_name | text | 连接到该后台的应用名。 | | state | text | 该后台当前总体状态。 | | query | text | 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 | @@ -575,11 +551,14 @@ date: 2021-04-20 | client_port | integer | 客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。 | | enqueue | text | 该字段暂不支持。 | | query_id | bigint | 查询语句的ID。 | + | srespool | name | 资源池名字。 | | global_sessionid | text | 全局会话id。 | + | unique_sql_id | bigint | 语句的unique sql id。 | + | trace_id | text | 驱动传入的trace id,与应用的一次请求相关联。 | - pg_stat_get_activity_with_conninfo(integer) - 描述:返回一个关于带有特殊PID的后台进程的记录信息,当参数为NULL时,则返回每个活动的后台进程的记录。PG_STAT_ACTIVITY视图是该函数的一个子集。 + 描述:返回一个关于带有特殊PID的后台进程的记录信息,当参数为NULL时,则返回每个活动的后台进程的记录。初始用户、系统管理员和monadmin可以查看所有的数据,普通用户只能查询自己的结果。 返回值类型:setofrecord @@ -592,7 +571,7 @@ date: 2021-04-20 | datid | oid | 用户会话在后台连接到的数据库OID。 | | pid | bigint | 后台线程ID。 | | sessionid | bigint | 会话ID。 | - | usesysid | oid | 登录该后台的用户名。 | + | usesysid | oid | 登录该后台的用户OID。 | | application_name | text | 连接到该后台的应用名。 | | state | text | 改后台当前总体状态。 | | query | text | 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 | @@ -607,7 +586,10 @@ date: 2021-04-20 | enqueue | text | 该字段暂不支持。 | | query_id | bigint | 查询语句的ID。 | | connection_info | text | json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息。 | + | srespool | name | 资源池名字。 | | global_sessionid | text | 全局会话ID。 | + | unique_sql_id | bigint | 语句的unique sql id。 | + | trace_id | text | 驱动传入的trace id,与应用的一次请求相关联。 | - pg_user_iostat(text) @@ -814,11 +796,11 @@ date: 2021-04-20 返回值类型:bigint -- fenced_udf_process() +- fenced_udf_process(integer) - 描述:查看本地UDF Master和Work进程数。 + 描述:查看本地UDF Master和Work进程数。入参为1时查看master进程数,入参为2时查看worker进程数,入参为3时杀死所有worker进程。 - 返回值类型:record + 返回值类型:text - total_cpu() @@ -1154,15 +1136,15 @@ date: 2021-04-20 - global_stat_get_hotkeys_info() - 描述:获取整个集群中热点key的统计情况。目前该接口不支持单机和集中式,暂不可用。 + 描述:获取整个数据库实例中热点key的统计情况。目前该接口不支持单机和集中式,暂不可用。 - global_stat_clean_hotkeys() - 描述:清理整个集群中热点key的统计信息。目前该接口不支持单机和集中式,暂不可用。 + 描述:清理整个数据库实例中热点key的统计信息。目前该接口不支持单机和集中式,暂不可用。 - DBE_PERF.get_global_session_stat_activity() - 描述:汇聚MogDB内各节点上正在运行的线程相关的信息,查询该函数必须具有sysadmin权限。 + 描述:汇聚MogDB内各节点上正在运行的线程相关的信息,查询该函数必须具有monitoradmin权限。 返回值类型:record @@ -1174,31 +1156,31 @@ date: 2021-04-20 - DBE_PERF.get_global_operator_history_table() - 描述:汇聚当前用户数据库主节点上执行作业结束后的算子相关记录(持久化),查询该函数必须具有sysadmin权限。 + 描述:汇聚当前用户数据库主节点上执行作业结束后的算子相关记录(持久化),查询该函数必须具有sysadmin和monitoradmin权限。 返回值类型:record - DBE_PERF.get_global_operator_history() - 描述:汇聚当前用户数据库主节点上执行作业结束后的算子相关记录,查询该函数必须具有sysadmin权限。 + 描述:汇聚当前用户数据库主节点上执行作业结束后的算子相关记录,查询该函数必须具有sysadmin和monitoradmin权限。 返回值类型:record - DBE_PERF.get_global_operator_runtime() - 描述:汇聚当前用户数据库主节点上执行作业实时的算子相关记录,查询该函数必须具有sysadmin权限。 + 描述:汇聚当前用户数据库主节点上执行作业实时的算子相关记录,查询该函数必须具有sysadmin和monitoradmin权限。 返回值类型:record - DBE_PERF.get_global_statement_complex_history() - 描述:汇聚当前用户数据库主节点上复杂查询的历史记录,查询该函数必须具有sysadmin权限。 + 描述:汇聚当前用户数据库主节点上复杂查询的历史记录,查询该函数必须具有monitoradmin权限。 返回值类型:record - DBE_PERF.get_global_statement_complex_history_table() - 描述:汇聚当前用户数据库主节点上复杂查询的历史记录(持久化),查询该函数必须具有sysadmin权限。 + 描述:汇聚当前用户数据库主节点上复杂查询的历史记录(持久化),查询该函数必须具有monitoradmin权限。 返回值类型:record @@ -1210,13 +1192,13 @@ date: 2021-04-20 - DBE_PERF.get_global_memory_node_detail() - 描述:汇聚所有节点某个数据库节点内存使用情况,查询该函数必须具有sysadmin权限。 + 描述:汇聚所有节点某个数据库节点内存使用情况,查询该函数必须具有monitoradmin权限。 返回值类型:record - DBE_PERF.get_global_shared_memory_detail() - 描述:汇聚所有节点已产生的共享内存上下文的使用信息,查询该函数必须具有sysadmin权限。 + 描述:汇聚所有节点已产生的共享内存上下文的使用信息,查询该函数必须具有monitoradmin权限。 返回值类型:record @@ -1528,7 +1510,7 @@ date: 2021-04-20 - DBE_PERF.get_summary_statement() - 描述:汇聚各节点历史执行语句状态信息,查询该函数必须具有sysadmin权限或者monitor admin权限。 + 描述:汇聚各节点历史执行语句状态信息,查询该函数必须具有monitor admin和sysadmin权限。 返回值类型:record @@ -1775,3 +1757,91 @@ SELECT * FROM GS_ALL_NODEGROUP_CONTROL_GROUP_INFO('installation') 描述:返回当前数据库逻辑数据库使用内存的信息,单位为MB得到一个逻辑数据库。 返回值类型:setof record + +- local_redo_time_count() + + 描述:返回本节点各个回放线程的各个流程的耗时统计(仅在备机上有有效数据)。 + + 返回值如下: + + local_redo_time_count返回参数说明。 + + | 字段名 | 描述 | + | :---------- | :----------------------------------------------------------- | + | thread_name | 线程名字 | + | step1_total | step1的总时间,每个线程对应的流程如下:
极致RTO:
- batch redo:从队列中获取一条日志
- redo manager:从队列中获取一条日志
- redo worker:从队列中获取一条日志
- trxn manager:从队列中读取一条日志
- trxn worker:从队列中读取一条日志
- read worker:从文件中读取一次xlog page(整体)
- read page worker:从队列中获取一个日志
- startup:从队列中获取一个日志
并行回放:
- page redo:从队列中获取一条日志
- startup:读取一条日志 | + | step1_count | step1的统计次数 | + | step2_total | step2的总时间,每个线程对应的流程如下:
极致RTO:
- batch redo:处理日志(整体)
- redo manager:处理日志(整体)
- redo worker:处理日志(整体)
- trxn manager:处理日志(整体)
- trxn worker:处理日志(整体)
- redo worker:读取xlog page耗时
- read page worker:生成和发送lsn forwarder
- startup:check stop(是否回放到指定位置)
并行回放:
- page redo:处理日志(整体)
- startup:check stop(是否回放到指定位置) | + | step2_count | step2的统计次数 | + | step3_total | step3的总时间,每个线程对应的流程如下:
极致RTO:
- batch redo:更新standbystate
- redo manager:数据日志处理
- redo worker:回放page也日志(整体)
- trxn manager:更新flush lsn
- trxn worker:回放日志处理
- redo worker:推进xlog segment
- read page worker:获取一个新的item
- startup:redo delay(延迟回放特性等待时间)
并行回放:
- page redo:更新standbystate
- startup:redo delay(延迟回放特性等待时间) | + | step3_count | step3的统计次数 | + | step4_total | step4的总时间,每个线程对应的流程如下:
极致RTO:
- batch redo:解析xlog
- redo manager:DDL处理
- redo worker:读取数据page页
- trxn manager:同步等待时间
- trxn worker:更新本线程lsn
- read page worker:将日志放入分发线程
- startup:分发(整体)
并行回放:
- page redo:undo 日志回放
- startup:分发(整体) | + | step4_count | step4的统计次数 | + | step5_total | step5的总时间,每个线程对应的流程如下:
极致RTO:
- batch redo:分发给redo manager
- redo manager:分发给redo worker
- redo worker:回放数据page页的日志
- trxn manager:分发给trxn worker
- trxn worker:强同步wait时间
- read page worker:更新本线程lsn
- startup:日志decode
并行回放:
- page redo:sharetrxn 日志回放
- startup:日志回放 | + | step5_count | step5的统计次数 | + | step6_total | step6的总时间,每个线程对应的流程如下:
极致RTO:
- redo worker:回放非数据页page日志
- trxn manager:全局lsn更新
- read page worker:日志crc校验
并行回放:
- page redo:synctrxn 日志回放
- startup:强同步等待 | + | step6_count | step6的统计次数 | + | step7_total | step7的总时间,每个线程对应的流程如下:
极致RTO:
redo worker:fsm更新
并行回放:
page redo:single 日志回放 | + | step7_count | step7的统计次数 | + | step8_total | step8的总时间,每个线程对应的流程如下:
极致RTO:
redo worker:强同步等待
并行回放:
page redo:all workers do 日志回放 | + | step8_count | step8的统计次数 | + | step9_total | step9的总时间,每个线程对应的流程如下:
极致RTO:

并行回放:
page redo:muliti workers do 日志回放 | + | step9_count | step9的统计次数 | + +- local_xlog_redo_statics() + + 描述:返回本节点已经回放的各个类型类型的日志统计信息(仅在备机上有有效数据)。 + + 返回值如下: + + **表 9** local_xlog_redo_statics返回参数说明 + + | 字段名 | 描述 | + | :-------- | :----------------------------------------------------------- | + | xlog_type | 日志类型 | + | rmid | resource manager id | + | info | xlog operation | + | num | 日志个数 | + | extra | 针对page回放日志和xact日志有有效值。page页回放日志标识从磁盘读取page的个数。xact日志表示删除文件的个数。 | + +- gs_get_shared_memctx_detail(text) + + 描述:返回指定内存上下文上的内存申请的详细信息,包含每一处内存申请所在的文件、行号和大小(同一文件同一行大小会做累加)。只支持查询通过pg_shared_memory_detail视图查询出来的内存上下文,入参为内存上下文名称(即pg_shared_memory_detail返回结果的contextname列)。查询该函数必须具有sysadmin权限或者monitor admin权限。 + + 返回值类型:setof record + + | 名称 | 类型 | 描述 | + | :--- | :--- | :----------------------------------------------- | + | file | text | 申请内存所在文件的文件名。 | + | line | int8 | 申请内存所在文件的代码行号。 | + | size | int8 | 申请的内存大小,同一文件同一行多次申请会做累加。 | + + > **说明:** 该视图不支持release版本小型化场景。 + +- gs_get_session_memctx_detail(text) + + 描述:返回指定内存上下文上的内存申请的详细信息,包含每一处内存申请所在的文件、行号和大小(同一文件同一行大小会做累加)。仅在线程池模式下生效。只支持查询通过pv_session_memory_context视图查询出来的内存上下文,入参为内存上下文名称(即pv_session_memory_context返回结果的contextname列)。查询该函数必须具有sysadmin权限或者monitor admin权限。 + + 返回值类型:setof record + + | 名称 | 类型 | 描述 | + | :--- | :--- | :----------------------------------------------- | + | file | text | 申请内存所在文件的文件名。 | + | line | int8 | 申请内存所在文件的代码行号。 | + | size | int8 | 申请的内存大小,同一文件同一行多次申请会做累加。 | + + > **说明:** 该视图仅在线程池模式下生效,且该视图不支持release版本小型化场景。 + +- gs_get_thread_memctx_detail(tid,text) + + 描述:返回指定内存上下文上的内存申请的详细信息,包含每一处内存申请所在的文件,行号和大小(同一文件同一行大小会做累加)。只支持查询通过pv_thread_memory_context视图查询出来的内存上下文,第一个入参为线程id(即pv_thread_memory_context返回数据的tid列),第二个参数为内存上下文名称(即pv_thread_memory_context返回数据的contextname列)。查询该函数必须具有sysadmin权限或者monitor admin权限。 + + 返回值类型:setof record + + | 名称 | 类型 | 描述 | + | :--- | :--- | :----------------------------------------------- | + | file | text | 申请内存所在文件的文件名。 | + | line | int8 | 申请内存所在文件的代码行号。 | + | size | int8 | 申请的内存大小,同一文件同一行多次申请会做累加。 | + + > **说明:** 该视图不支持release版本小型化场景。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/27.1-hash-function.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/27.1-hash-function.md index 1c9f468173d1df4ed1885c7ac54fce4607999da7..9d0f636fe8d3d57d2e34aca917a09a4663596f9f 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/27.1-hash-function.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/27.1-hash-function.md @@ -108,7 +108,7 @@ date: 2021-10-28 value为需要输入的数值,类型: - “char”,abstime,bigint,boolean,bytea,character varying,character,date,double precision,int2vector,integer,interval,money,name,numeric,nvarchar2,oid,oidvector,raw,real,record,reltime,smalldatetime,smallint,text,time with time zone,time without time zone,timestamp with time zone,timestamp without time zone,tinyint,uuid。 + “char”、abstime、bigint、boolean、bytea、character varying、character、date、double precision、int2vector、integer、interval、money、name、numeric、nvarchar、nvarchar2、oid、oidvector、raw、real、record、reltime、smalldatetime、smallint、text、time with time zone、time without time zone、timestamp with time zone、timestamp without time zone、tinyint、uuid flag表示数据分布方式,类型:integer @@ -494,7 +494,7 @@ date: 2021-10-28 描述:计算入参的哈希值。 - 参数:nvarchar2, integer + 参数:nvarchar/nvarchar2, integer 返回值类型:integer diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/28-ai-feature-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/28-ai-feature-functions.md index ac88e818f14e15aed5aeec4555948ff86b462d75..5ed91d9d332a8af6c134076a616d97febeb30903 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/28-ai-feature-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/28-ai-feature-functions.md @@ -182,3 +182,19 @@ date: 2021-04-20 参数:模型名称和推断任务的输入列。 返回值类型:text + +- db4ai\_predict\_by\_float8\_array\(text, VARIADIC "any"\) + + 描述:获取返回值为字符型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。 + + 参数:模型名称和推断任务的输入列。 + + 返回值类型:text + +- gs\_explain\_model\(text\) + + 描述:获取返回值为字符型的模型进行模型解析文本化任务。 + + 参数:模型名称。 + + 返回值类型:text diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/29-other-system-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/29-other-system-functions.md index e7e2767f677448478d7260d514e01ee9fec85f96..3944a8229f4a98858c71b1069565c140e1f35917 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/29-other-system-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/29-other-system-functions.md @@ -143,6 +143,7 @@ MogDB的内建函数和操作符继承自开源PG,下述函数不作赘述, | interval_pl_timetz | interval_recv | interval_send | interval_smaller | interval_transform | interval_um | intervaltypmodin | | intervaltypmodout | intinterval | isexists | ishorizontal | iso_to_koi8r | iso_to_mic | iso_to_win1251 | | iso_to_win866 | iso8859_1_to_utf8 | iso8859_to_utf8 | isparallel | isperp | isvertical | johab_to_utf8 | +| jsonb_in | jsonb_out | jsonb_recv | jsonb_send | - | - | - | | json_in | json_out | json_recv | json_send | justify_days | justify_hours | justify_interval | | koi8r_to_iso | koi8r_to_mic | koi8r_to_utf8 | koi8r_to_win1251 | koi8r_to_win866 | koi8u_to_utf8 | language_handler_in | | language_handler_out | latin1_to_mic | latin2_to_mic | latin2_to_win1250 | latin3_to_mic | latin4_to_mic | like_escape | @@ -182,7 +183,7 @@ MogDB的内建函数和操作符继承自开源PG,下述函数不作赘述, | pg_encoding_to_char | pg_extension_config_dump | - | - | pg_node_tree_in | pg_node_tree_out | pg_node_tree_recv | | pg_node_tree_send | pg_prepared_statement | pg_prepared_xact | - | - | pg_show_all_settings | pg_stat_get_bgwriter_stat_reset_time | | pg_stat_get_buf_fsync_backend | pg_stat_get_checkpoint_sync_time | pg_stat_get_checkpoint_write_time | pg_stat_get_db_blk_read_time | pg_stat_get_db_blk_write_time | pg_stat_get_db_conflict_all | pg_stat_get_db_conflict_bufferpin | -| pg_stat_get_db_conflict_snapshot | pg_stat_get_db_conflict_startup_deadlock | pg_switch_xlog | xpath | pg_timezone_abbrevs | pg_timezone_names | - | +| pg_stat_get_db_conflict_snapshot | pg_stat_get_db_conflict_startup_deadlock | pg_switch_xlog | xpath | pg_timezone_abbrevs | pg_timezone_names | pg_stat_get_wal_receiver | | plpgsql_call_handler | plpgsql_inline_handler | plpgsql_validator | point_above | point_add | point_below | point_distance | | point_div | point_eq | point_horiz | point_in | point_left | point_mul | point_ne | | point_out | point_recv | point_right | point_send | point_sub | point_vert | poly_above | @@ -266,9 +267,9 @@ MogDB的内建函数和操作符继承自开源PG,下述函数不作赘述, | win1251_to_mic | win1251_to_win866 | win866_to_iso | win866_to_koi8r | win866_to_mic | win866_to_win1251 | xideq | | xideqint4 | xidin | xidout | xidrecv | xidsend | xml | xml_in | | xml_is_well_formed | xml_is_well_formed_content | xml_is_well_formed_document | xml_out | xml_recv | xml_send | xmlagg | -| xmlcomment | xmlconcat2 | xmlexists | xmlvalidate | pg_notify | pg_stat_get_wal_receiver | - | +| xmlcomment | xmlconcat2 | xmlexists | xmlvalidate | pg_notify | - | - | -下述列表为MogDB Kernel实现系统内部功能所使用的函数,不推荐使用,若需使用,请联系云和恩墨技术支持工程师。 +下述列表为MogDB实现系统内部功能所使用的函数,不推荐使用,若需使用,请联系云和恩墨技术支持工程师。 - pv_compute_pool_workload() @@ -564,11 +565,28 @@ MogDB的内建函数和操作符继承自开源PG,下述函数不作赘述, - pg_buffercache_pages - 描述:从共享buffer缓存里读取数据。 + 描述:读取共享缓冲区的状态数据。 参数:nan - 返回值类型:bufferid integer, relfilenode oid, bucketid smallint, reltablespace oid, reldatabase oid, relforknumber smallint, relblocknumber bigint, isdirty boolean, usage_count smallint + 返回值类型:setof record + + 返回字段说明如下: + + | 名称 | 类型 | 描述 | + | :--------------- | :------- | :----------------------------------------- | + | bufferid | integer | 缓冲区的内部ID。 | + | relfilenode | oid | 缓冲区中页面所属关系的OID。 | + | bucketid | integer | 缓冲区所处的哈希桶号。 | + | storage_type | bigint | 缓冲区中数据的存储类型。 | + | reltablespace | oid | 缓冲区中数据所处的表空间的OID。 | + | reldatabase | oid | 缓冲区中数据所处的数据库的OID。 | + | relforknumber | integer | 缓冲区中数据所在的关系文件分支类型。 | + | relblocknumber | integer | 缓冲区中数据在其所属关系文件中的文件块号。 | + | isdirty | boolean | 缓冲区是否为脏。 | + | isvalid | boolean | 缓冲区是否有效。 | + | usage_count | smallint | 缓冲区的使用计数。 | + | pinning_backends | integer | 正在使用缓冲区的后端数。 | - pg_check_xidlimit @@ -642,6 +660,143 @@ MogDB的内建函数和操作符继承自开源PG,下述函数不作赘述, 返回值类型:start_backup_flag boolean, to_delay boolean, ddl_delay_recycle_ptr text, rewind_time text +- pgfadvise_DONTNEED + + 描述:这个函数为当前关系设置*DONTNEED*标记。这意味着如果需要释放一些内存,操作系统会首先卸载该文件的页。主要思想是卸载不再使用的文件(而不是可能会被使用的页面)。 + + 示例: + + ``` + MogDB=# select * from pgfadvise_dontneed('pgbench_accounts'); + relpath | os_page_size | rel_os_pages | os_pages_free + --------------------+--------------+--------------+--------------- + base/11874/16447 | 4096 | 262144 | 342071 + base/11874/16447.1 | 4096 | 65726 | 408103 + ``` + +- pgfadvise_WILLNEED + + 描述:这个函数为当前关系设置*WILLNEED*标记。这意味着操作系统将尝试加载该关系尽可能多的页面。主要思想是在服务器启动时预加载文件,预加载文件时可能使用缓存命中率/失误率以及最可能被使用的关系/索引等信息。 + + 示例: + + ``` + MogDB=# select * from pgfadvise_willneed('pgbench_accounts'); + relpath | os_page_size | rel_os_pages | os_pages_free + --------------------+--------------+--------------+--------------- + base/11874/16447 | 4096 | 262144 | 80650 + base/11874/16447.1 | 4096 | 65726 | 80650 + ``` + +- pgfadvise_NORMAL + + 描述:这个函数为当前关系设置*NORMAL*标记。 + +- pgfadvise_SEQUENTIAL + + 描述:这个函数为当前关系设置*SEQUENTIAL*标记。 + +- pgfadvise_RANDOM + + 描述:这个函数为当前关系设置*RANDOM*标记。 + +- pgfadvise_loader + + 描述:这个函数允许直接与页面缓存交互。它可以用于根据表示要加载/卸载的页面映射的varbit从内存加载和/或卸载页面。 + + 示例:该示例使用的关系名称为pgbench_accounts, 段号为0以及任意的varbit映射 + + ``` + -- 加载与卸载 + MogDB=# select * from pgfadvise_loader('pgbench_accounts', 0, true, true, B'111000'); + relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded + ------------------+--------------+---------------+--------------+---------------- + base/11874/16447 | 4096 | 408376 | 3 | 3 + + -- 加载 + MogDB=# select * from pgfadvise_loader('pgbench_accounts', 0, true, false, B'111000'); + relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded + ------------------+--------------+---------------+--------------+---------------- + base/11874/16447 | 4096 | 408370 | 3 | 0 + + -- 卸载 + MogDB=# select * from pgfadvise_loader('pgbench_accounts', 0, false, true, B'111000'); + relpath | os_page_size | os_pages_free | pages_loaded | pages_unloaded + ------------------+--------------+---------------+--------------+---------------- + base/11874/16447 | 4096 | 408370 | 0 | 3 + ``` + +- pgfincore + + 描述:这个函数提供关于文件系统缓存(页面缓存)的信息。 + + 示例: + + ``` + MogDB=# select * from pgfincore('pgbench_accounts'); + relpath | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit | pages_dirty | group_dirty + --------------------+---------+--------------+--------------+-----------+-----------+---------------+---------+-------------+------------- + base/11874/16447 | 0 | 4096 | 262144 | 3 | 1 | 408444 | | 0 | 0 + base/11874/16447.1 | 1 | 4096 | 65726 | 0 | 0 | 408444 | | 0 | 0 + ``` + + 对于一个指定的关系,该函数返回包括以下字段: + + - relpath : 该关系的路径 + - segment : 被分析的段号 + - os_page_size : 一个页面的大小 + - rel_os_pages : 该关系的总页面数 + - pages_mem : 关系在页面缓存中的页面总数。 (不是来自PostgreSQL的共享缓冲区,而是操作系统缓存) + - group_mem : 相邻pages_mem的组数 + - os_page_free : 操作系统页面缓存中空闲的页面数 + - databit : 该文件的varbit映射,因为该字段的大小关系,若需要输出该字段,需要使用pgfincore('pgbench_accounts',true)来激活它。 + - pages_dirty : 如果定义了HAVE_FINCORE常量,平台将提供相关的信息,和pages_mem类似,只不过是对于脏页面的 + - group_dirty : 如果定义了HAVE_FINCORE常量,平台将提供相关的信息,和group_mem类似,只不过是对于脏页面的 + +- pgsysconf + + 描述:这个函数输出操作系统块的大小,操作系统页面缓冲区中空闲页面的数量。 + + 示例: + + ``` + MogDB=# select * from pgsysconf(); + os_page_size | os_pages_free | os_total_pages + --------------+---------------+---------------- + 4096 | 80431 | 4094174 + ``` + +- pgsysconf_pretty + + 描述:该函数的功能同上,不同之处在于该函数进行了单位转换,便于阅读。 + + 示例: + + ``` + MogDB=# select * from pgsysconf_pretty(); + os_page_size | os_pages_free | os_total_pages + --------------+---------------+---------------- + 4096 bytes | 314 MB | 16 GB + ``` + +- pgfincore_drawer + + 描述:一个非常简单的渲染器。这个函数需要一个varbit类型的参数。通常,这个参数的值来源于pgfincore函数的*databit*返回字段。*databit*字段的值由0和1组成,如果是0,意味着该页不在操作系统页面缓存中,如果是1,则意味着该页在操作系统页面缓存中。 + + 示例: + + ``` + MogDB=# select * from pgfincore_drawer(B'000111'); + drawer + -------------- + ... + + MogDB=# select * from pgfincore_drawer(B'111000'); + drawer + -------------- + ... + ``` + - psortoptions 描述:返回psort属性。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md index 5a0ddfe2235959ef270f8487cf05fed4a2c0986d..08218d9291f21b83fe4afd4417f4852d3f9f8628 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md @@ -7,7 +7,7 @@ date: 2021-04-20 # 字符处理函数和操作符 -MogDB提供的字符处理函数和操作符主要用于字符串与字符串、字符串与非字符串之间的连接,以及字符串的模式匹配操作。 +MogDB提供的字符处理函数和操作符主要用于字符串与字符串、字符串与非字符串之间的连接,以及字符串的模式匹配操作。注意:字符串处理函数除了length相关函数,其他函数和操作符不支持大于1GB CLOB作为参数。 - bit_length(string) @@ -18,11 +18,11 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT bit_length('world'); - bit_length - ------------ - 40 - (1 row) + MogDB=# SELECT bit_length('world'); + bit_length + ------------ + 40 + (1 row) ``` - btrim(string text [, characters text]) @@ -34,7 +34,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT btrim('sring' , 'ing'); + MogDB=# SELECT btrim('sring' , 'ing'); btrim ------- sr @@ -50,7 +50,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT char_length('hello'); + MogDB=# SELECT char_length('hello'); char_length ------------- 5 @@ -66,7 +66,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT instr( 'abcdabcdabcd', 'bcd', 2, 2 ); + MogDB=# SELECT instr( 'abcdabcdabcd', 'bcd', 2, 2 ); instr ------- 6 @@ -82,7 +82,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT lengthb('hello'); + MogDB=# SELECT lengthb('hello'); lengthb --------- 5 @@ -98,7 +98,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT left('abcde', 2);s + MogDB=# SELECT left('abcde', 2); left ------ ab @@ -114,7 +114,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT length('jose', 'UTF8'); + MogDB=# SELECT length('jose', 'UTF8'); length -------- 4 @@ -134,7 +134,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT lpad('hi', 5, 'xyza'); + MogDB=# SELECT lpad('hi', 5, 'xyza'); lpad ------- xyzhi @@ -150,12 +150,12 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT notlike(1,2); + MogDB=# SELECT notlike(1,2); notlike -------------- t (1 row) - mogdb=# SELECT notlike(1,1); + MogDB=# SELECT notlike(1,1); notlike -------------- f @@ -171,7 +171,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT octet_length('jose'); + MogDB=# SELECT octet_length('jose'); octet_length -------------- 4 @@ -187,7 +187,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT overlay('hello' placing 'world' from 2 for 3 ); + MogDB=# SELECT overlay('hello' placing 'world' from 2 for 3 ); overlay --------- hworldo @@ -203,7 +203,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT position('ing' in 'string'); + MogDB=# SELECT position('ing' in 'string'); position ---------- 4 @@ -219,7 +219,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT pg_client_encoding(); + MogDB=# SELECT pg_client_encoding(); pg_client_encoding -------------------- UTF8 @@ -235,7 +235,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT quote_ident('hello world'); + MogDB=# SELECT quote_ident('hello world'); quote_ident -------------- "hello world" @@ -251,7 +251,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT quote_literal('hello'); + MogDB=# SELECT quote_literal('hello'); quote_literal --------------- 'hello' @@ -261,7 +261,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,text文本将进行转义。 ```sql - mogdb=# SELECT quote_literal(E'O\'hello'); + MogDB=# SELECT quote_literal(E'O\'hello'); quote_literal --------------- 'O''hello' @@ -271,7 +271,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,反斜杠会写入两次。 ```sql - mogdb=# SELECT quote_literal('O\hello'); + MogDB=# SELECT quote_literal('O\hello'); quote_literal --------------- E'O\\hello' @@ -281,7 +281,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果参数为NULL,返回空。如果参数可能为null,通常使用函数quote_nullable更适用。 ```sql - mogdb=# SELECT quote_literal(NULL); + MogDB=# SELECT quote_literal(NULL); quote_literal --------------- @@ -297,7 +297,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT quote_literal(42.5); + MogDB=# SELECT quote_literal(42.5); quote_literal --------------- '42.5' @@ -307,7 +307,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,定值将进行转义。 ```sql - mogdb=# SELECT quote_literal(E'O\'42.5'); + MogDB=# SELECT quote_literal(E'O\'42.5'); quote_literal --------------- '0''42.5' @@ -317,7 +317,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,反斜杠会写入两次。 ```sql - mogdb=# SELECT quote_literal('O\42.5'); + MogDB=# SELECT quote_literal('O\42.5'); quote_literal --------------- E'O\\42.5' @@ -333,7 +333,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT quote_nullable('hello'); + MogDB=# SELECT quote_nullable('hello'); quote_nullable ---------------- 'hello' @@ -343,7 +343,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,text文本将进行转义。 ```sql - mogdb=# SELECT quote_nullable(E'O\'hello'); + MogDB=# SELECT quote_nullable(E'O\'hello'); quote_nullable ---------------- 'O''hello' @@ -353,7 +353,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,反斜杠会写入两次。 ```sql - mogdb=# SELECT quote_nullable('O\hello'); + MogDB=# SELECT quote_nullable('O\hello'); quote_nullable ---------------- E'O\\hello' @@ -363,7 +363,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果参数为NULL,返回NULL。 ```sql - mogdb=# SELECT quote_nullable(NULL); + MogDB=# SELECT quote_nullable(NULL); quote_nullable ---------------- NULL @@ -379,7 +379,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT quote_nullable(42.5); + MogDB=# SELECT quote_nullable(42.5); quote_nullable ---------------- '42.5' @@ -389,7 +389,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,定值将进行转义。 ```sql - mogdb=# SELECT quote_nullable(E'O\'42.5'); + MogDB=# SELECT quote_nullable(E'O\'42.5'); quote_nullable ---------------- 'O''42.5' @@ -399,7 +399,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果出现如下写法,反斜杠会写入两次。 ```sql - mogdb=# SELECT quote_nullable('O\42.5'); + MogDB=# SELECT quote_nullable('O\42.5'); quote_nullable ---------------- E'O\\42.5' @@ -409,7 +409,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 如果参数为NULL,返回NULL。 ```sql - mogdb=# SELECT quote_nullable(NULL); + MogDB=# SELECT quote_nullable(NULL); quote_nullable ---------------- NULL @@ -425,7 +425,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# select substring_inner('adcde', 2,3); + MogDB=# select substring_inner('adcde', 2,3); substring_inner ----------------- dcd @@ -441,7 +441,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substring('Thomas' from 2 for 3); + MogDB=# SELECT substring('Thomas' from 2 for 3); substring ----------- hom @@ -457,17 +457,17 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substring('Thomas' from '...$'); + MogDB=# SELECT substring('Thomas' from '...$'); substring ----------- mas (1 row) - mogdb=# SELECT substring('foobar' from 'o(.)b'); + MogDB=# SELECT substring('foobar' from 'o(.)b'); result -------- o (1 row) - mogdb=# SELECT substring('foobar' from '(o(.)b)'); + MogDB=# SELECT substring('foobar' from '(o(.)b)'); result -------- oob @@ -486,7 +486,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substring('Thomas' from '%#"o_a#"_' for '#'); + MogDB=# SELECT substring('Thomas' from '%#"o_a#"_' for '#'); substring ----------- oma @@ -502,7 +502,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT rawcat('ab','cd'); + MogDB=# SELECT rawcat('ab','cd'); rawcat -------- ABCD @@ -518,26 +518,106 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT regexp_like('str','[ac]'); + MogDB=# SELECT regexp_like('str','[ac]'); regexp_like ------------- f (1 row) ``` -- regexp_substr(text,text) +- regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]]) 描述:正则表达式的抽取子串函数。与substr功能相似,正则表达式出现多个并列的括号时,也全部处理。 + 参数说明: + + − string:用于匹配的源字符串。 + + − pattern:用于匹配的正则表达式模式串。 + + − position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。 + + − occurrence:可选参数,表示抽取第几个满足匹配的子串,为,默认值为1。 + + − flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m表示按照多行模式匹配。SQL语法兼容A和B的情况下,n选项在GUC参数behavior_compat_options值包含aformat_regexp_match时,表示“.”能够匹配 '\n' 字符,flags中没有指定n时,默认“.”不能匹配 '\n' 字符;值不包含aformat_regexp_match时,“.”默认能匹配'\n'字符。n选项的含义与m选项一致。 + 返回值类型:text 示例: ```sql - mogdb=# SELECT regexp_substr('str','[ac]'); + MogDB=# SELECT regexp_substr('str','[ac]'); regexp_substr --------------- + + (1 row) + + MogDB=# SELECT regexp_substr('foobarbaz', 'b(..)', 3, 2) AS RESULT; + result + -------- + baz + (1 row) + ``` + +- regexp_count(string text, pattern text [, position int [, flags text]]) + + 描述:获取满足匹配的子串个数。 + + 参数说明: + + − string:用于匹配的源字符串。 + + − pattern:用于匹配的正则表达式模式串。 + + − position:表示从源字符串的第几个字符开始匹配,为可选参数,默认值为1。 + + − flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m表示按照多行模式匹配。SQL语法兼容A和B的情况下,n选项在GUC参数behavior_compat_options值包含aformat_regexp_match时,表示“.”能够匹配 '\n' 字符,flags中没有指定n时,默认“.”不能匹配 '\n' 字符;值不包含aformat_regexp_match时,“.”默认能匹配'\n'字符。n选项的含义与m选项一致。 + + 返回值类型:int + 示例: + + ``` + MogDB=# SELECT regexp_count('foobarbaz','b(..)', 5) AS RESULT; + result + -------- + 1 + (1 row) + ``` + +- regexp_instr(string text, pattern text [, position int [, occurrence int [, return_opt int [, flags text]]]]) + + 描述:获取满足匹配条件的子串位置(从1开始)。如果没有匹配的子串,则返回0。 + + 参数说明: + + − string:用于匹配的源字符串。 + + − pattern:用于匹配的正则表达式模式串。 + + − position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。 + + − occurrence:可选参数,表示获取第occurrence个匹配子串的位置,默认值为1。 + + − return_opt:可选参数,用于控制返回匹配子串的首字符位置还是尾字符位置。取值为0时,返回匹配子串的第一个字符的位置(从1开始计算),取值为大于0的值时,返回匹配子串的尾字符的下一个字符的位置。默认值为0。 + + − flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m表示按照多行模式匹配。SQL语法兼容A和B的情况下,n选项在GUC参数behavior_compat_options值包含aformat_regexp_match时,表示“.”能够匹配 '\n' 字符,flags中没有指定n时,默认“.”不能匹配 '\n' 字符;值不包含aformat_regexp_match时,“.”默认能匹配'\n'字符。n选项的含义与m选项一致。 + + 返回值类型:int + + 示例: + + ``` + MogDB=# SELECT regexp_instr('foobarbaz','b(..)', 1, 1, 0) AS RESULT; + result + -------- + 4 + (1 row) + + MogDB=# SELECT regexp_instr('foobarbaz','b(..)', 1, 2, 0) AS RESULT; + result + -------- + 7 (1 row) ``` @@ -558,17 +638,17 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT regexp_matches('foobarbequebaz', '(bar)(beque)'); + MogDB=# SELECT regexp_matches('foobarbequebaz', '(bar)(beque)'); regexp_matches ---------------- {bar,beque} (1 row) - mogdb=# SELECT regexp_matches('foobarbequebaz', 'barbeque'); + MogDB=# SELECT regexp_matches('foobarbequebaz', 'barbeque'); regexp_matches ---------------- {barbeque} (1 row) - mogdb=# SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g'); + MogDB=# SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g'); result -------------- {bar,beque} @@ -585,7 +665,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT regexp_split_to_array('hello world', E'\\s+'); + MogDB=# SELECT regexp_split_to_array('hello world', E'\\s+'); regexp_split_to_array ----------------------- {hello,world} @@ -603,7 +683,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT regexp_split_to_table('hello world', E'\\s+'); + MogDB=# SELECT regexp_split_to_table('hello world', E'\\s+'); regexp_split_to_table ----------------------- hello @@ -620,7 +700,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT repeat('Pg', 4); + MogDB=# SELECT repeat('Pg', 4); repeat ---------- PgPgPgPg @@ -639,13 +719,33 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT replace('abcdefabcdef', 'cd', 'XXX'); + MogDB=# SELECT replace('abcdefabcdef', 'cd', 'XXX'); replace ---------------- abXXXefabXXXef (1 row) ``` +- replace(string, substring) + + 描述:删除字符串string里出现的所有子字符串substring的内容。 + + string类型:text + + substring类型:text + + 返回值类型:text + + 示例: + + ```sql + MogDB=# SELECT replace('abcdefabcdef', 'cd'); + replace + ---------------- + abefabef + (1 row) + ``` + - reverse(str) 描述:返回颠倒的字符串。 @@ -655,7 +755,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT reverse('abcde'); + MogDB=# SELECT reverse('abcde'); reverse --------- edcba @@ -671,13 +771,13 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT right('abcde', 2); + MogDB=# SELECT right('abcde', 2); right ------- de (1 row) - mogdb=# SELECT right('abcde', -2); + MogDB=# SELECT right('abcde', -2); right ------- cde @@ -693,7 +793,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT rpad('hi', 5, 'xy'); + MogDB=# SELECT rpad('hi', 5, 'xy'); rpad ------- hixyx @@ -709,7 +809,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT rtrim('trimxxxx', 'x'); + MogDB=# SELECT rtrim('trimxxxx', 'x'); rtrim ------- trim @@ -725,7 +825,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substrb('string',2,3); + MogDB=# SELECT substrb('string',2,3); substrb --------- tri @@ -741,7 +841,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substrb('string',2); + MogDB=# SELECT substrb('string',2); substrb --------- tring @@ -757,7 +857,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substr('string',2,3); + MogDB=# SELECT substr('string',2,3); substr -------- tri @@ -773,7 +873,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT 'MPP'||'DB' AS RESULT; + MogDB=# SELECT 'MPP'||'DB' AS RESULT; result -------- MPPDB @@ -789,7 +889,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT 'Value: '||42 AS RESULT; + MogDB=# SELECT 'Value: '||42 AS RESULT; result ----------- Value: 42 @@ -805,7 +905,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT split_part('abc~@~def~@~ghi', '~@~', 2); + MogDB=# SELECT split_part('abc~@~def~@~ghi', '~@~', 2); split_part ------------ def @@ -821,7 +921,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT strpos('source', 'rc'); + MogDB=# SELECT strpos('source', 'rc'); strpos -------- 4 @@ -837,7 +937,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT to_hex(2147483647); + MogDB=# SELECT to_hex(2147483647); to_hex ---------- 7fffffff @@ -853,7 +953,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT translate('12345', '143', 'ax'); + MogDB=# SELECT translate('12345', '143', 'ax'); translate ----------- a2x5 @@ -869,7 +969,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT length('abcd'); + MogDB=# SELECT length('abcd'); length -------- 4 @@ -885,7 +985,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT lengthb('Chinese'); + MogDB=# SELECT lengthb('Chinese'); lengthb --------- 7 @@ -911,7 +1011,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 from为正数时: ```sql - mogdb=# SELECT substr('ABCDEF',2); + MogDB=# SELECT substr('ABCDEF',2); substr -------- BCDEF @@ -921,7 +1021,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 from为负数时: ```sql - mogdb=# SELECT substr('ABCDEF',-2); + MogDB=# SELECT substr('ABCDEF',-2); substr -------- EF @@ -950,7 +1050,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 from为正数时: ```sql - mogdb=# SELECT substr('ABCDEF',2,2); + MogDB=# SELECT substr('ABCDEF',2,2); substr -------- BC @@ -960,7 +1060,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 from为负数时: ```sql - mogdb=# SELECT substr('ABCDEF',-3,2); + MogDB=# SELECT substr('ABCDEF',-3,2); substr -------- DE @@ -976,7 +1076,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substrb('ABCDEF',-2); + MogDB=# SELECT substrb('ABCDEF',-2); substrb --------- EF @@ -992,7 +1092,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT substrb('ABCDEF',2,2); + MogDB=# SELECT substrb('ABCDEF',2,2); substrb --------- BC @@ -1008,7 +1108,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT trim(BOTH 'x' FROM 'xTomxx'); + MogDB=# SELECT trim(BOTH 'x' FROM 'xTomxx'); btrim ------- Tom @@ -1016,7 +1116,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT trim(LEADING 'x' FROM 'xTomxx'); + MogDB=# SELECT trim(LEADING 'x' FROM 'xTomxx'); ltrim ------- Tomxx @@ -1024,7 +1124,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT trim(TRAILING 'x' FROM 'xTomxx'); + MogDB=# SELECT trim(TRAILING 'x' FROM 'xTomxx'); rtrim ------- xTom @@ -1040,7 +1140,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT rtrim('TRIMxxxx','x'); + MogDB=# SELECT rtrim('TRIMxxxx','x'); rtrim ------- TRIM @@ -1056,7 +1156,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT ltrim('xxxxTRIM','x'); + MogDB=# SELECT ltrim('xxxxTRIM','x'); ltrim ------- TRIM @@ -1072,7 +1172,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT upper('tom'); + MogDB=# SELECT upper('tom'); upper ------- TOM @@ -1088,7 +1188,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT lower('TOM'); + MogDB=# SELECT lower('TOM'); lower ------- tom @@ -1106,7 +1206,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT rpad('hi',5,'xyza'); + MogDB=# SELECT rpad('hi',5,'xyza'); rpad ------- hixyz @@ -1114,7 +1214,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT rpad('hi',5,'abcdefg'); + MogDB=# SELECT rpad('hi',5,'abcdefg'); rpad ------- hiabc @@ -1135,7 +1235,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT instr('corporate floor','or', 3); + MogDB=# SELECT instr('corporate floor','or', 3); instr ------- 5 @@ -1143,7 +1243,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT instr('corporate floor','or',-3,2); + MogDB=# SELECT instr('corporate floor','or',-3,2); instr ------- 2 @@ -1159,7 +1259,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT initcap('hi THOMAS'); + MogDB=# SELECT initcap('hi THOMAS'); initcap ----------- Hi Thomas @@ -1175,7 +1275,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT ascii('xyz'); + MogDB=# SELECT ascii('xyz'); ascii ------- 120 @@ -1191,7 +1291,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT replace('jack and jue','j','bl'); + MogDB=# SELECT replace('jack and jue','j','bl'); replace ---------------- black and blue @@ -1209,7 +1309,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT lpad('PAGE 1',15,'*.'); + MogDB=# SELECT lpad('PAGE 1',15,'*.'); lpad ----------------- *.*.*.*.*PAGE 1 @@ -1217,7 +1317,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT lpad('hello world',5,'abcd'); + MogDB=# SELECT lpad('hello world',5,'abcd'); lpad ------- hello @@ -1235,12 +1335,12 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT concat('Hello', ' World!'); + MogDB=# SELECT concat('Hello', ' World!'); concat -------------- Hello World! (1 row) - mogdb=# SELECT concat('Hello', NULL); + MogDB=# SELECT concat('Hello', NULL); concat -------- Hello @@ -1256,7 +1356,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT chr(65); + MogDB=# SELECT chr(65); chr ----- A @@ -1265,14 +1365,14 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 - regexp_substr(source_char, pattern) - 描述:正则表达式的抽取子串函数。 + 描述:正则表达式的抽取子串函数。SQL语法兼容A和B的情况下,GUC参数behavior_compat_options的值包含aformat_regexp_match时,“.”不能匹配 '\n' 字符;不包含aformat_regexp_match时,“.”能够匹配'\n'字符。 - 返回值类型:varchar + 返回值类型:text 示例: ```sql - mogdb=# SELECT regexp_substr('500 Hello World, Redwood Shores, CA', ',[^,]+,') "REGEXPR_SUBSTR"; + MogDB=# SELECT regexp_substr('500 Hello World, Redwood Shores, CA', ',[^,]+,') "REGEXPR_SUBSTR"; REGEXPR_SUBSTR ------------------- , Redwood Shores, @@ -1283,27 +1383,57 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 描述:替换匹配POSIX正则表达式的子字符串。 如果没有匹配pattern,那么返回不加修改的string串。 如果有匹配,则返回的string串里面的匹配子串将被replacement串替换掉。 - \\n, 其中\\n是1 到9, 表明string串里匹配模式里第n个圆括号子表达式的子串应该被插入, 并且它可以包含\&表示应该插入匹配整个模式的子串。 + replacement串可以包含\\n, 其中\\n是1到9, 表明string串里匹配模式里第n个圆括号子表达式的子串应该被插入, 并且它可以包含\&表示应该插入匹配整个模式的子串。 - 可选的flags参数包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配,g表示替换每一个匹配的子字符串而不仅仅是第一个。 + 可选的flags参数包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配,g表示替换每一个匹配的子字符串而不仅仅是第一个。m表示按照多行模式匹配。SQL语法兼容A和B的情况下,n选项在GUC参数behavior_compat_options的值包含aformat_regexp_match时,表示“.”能够匹配 '\n' 字符,flags中没有指定n时,默认“.”不能匹配 '\n' 字符;值不包含aformat_regexp_match时,“.”默认能匹配'\n'字符。n选项的含义与m选项一致。 返回值类型:varchar 示例: ```sql - mogdb=# SELECT regexp_replace('Thomas', '.[mN]a.', 'M'); + MogDB=# SELECT regexp_replace('Thomas', '.[mN]a.', 'M'); regexp_replace ---------------- ThM (1 row) - mogdb=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 'g') AS RESULT; + MogDB=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 'g') AS RESULT; result ------------- fooXarYXazY (1 row) ``` +- repexp_replace(string text, pattern text [, replacement text [, position int [, occurrence int [, flags text]]]]) + + 描述:替换匹配POSIX正则表达式的子字符串。 如果没有匹配pattern,那么返回不加修改的string串。 如果有匹配,则返回的string串里面的匹配子串将被replacement串替换掉。 + + 参数说明: + + − string:用于匹配的源字符串 + + − pattern:用于匹配的正则表达式模式串 + + − replacement:可选参数,用于替换匹配子串的字符串。如果不给定参数值或者为null, 表示用空串替换。 + + − position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。 + + − occurrence:可选参数,表示替换第occurrence个匹配的子串。默认值为0,表示替换所有匹配到的子串。 + + − flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m表示按照多行模式匹配。SQL语法兼容A和B的情况下,n选项在GUC参数behavior_compat_options值包含aformat_regexp_match时,表示“.”能够匹配 '\n' 字符,flags中没有指定n时,默认“.”不能匹配 '\n' 字符;值不包含aformat_regexp_match时,“.”默认能匹配'\n'字符。n选项的含义与m选项一致。 + + 返回值类型:text + + 示例: + + ``` + MogDB=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 2, 2, 'n') AS RESULT; + result + ------------ + foobarXazY + (1 row) + ``` + - concat_ws(sep text, str"any" [, str"any" [, …] ]) 描述:以第一个参数为分隔符,链接第二个以后的所有参数。NULL参数被忽略。 @@ -1318,13 +1448,39 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT concat_ws(',', 'ABCDE', 2, NULL, 22); + MogDB=# SELECT concat_ws(',', 'ABCDE', 2, NULL, 22); concat_ws ------------ ABCDE,2,22 (1 row) ``` +- nlssort(string text, sort_method text) + + 描述:以sort_method指定的排序方式返回字符串在该排序模式下的编码值,该编码值可用于排序,其决定了string在这种排序模式下的先后位置。目前支持的sort_method为'nls_sort=schinese_pinyin_m'和'nls_sort=generic_m_ci'。其中,'nls_sort=generic_m_ci'仅支持纯英文不区分大小写排序。 + + string类型:text + + sort_method类型:text + + 返回值类型:text + + 示例: + + ``` + MogDB=# SELECT nlssort('A', 'nls_sort=schinese_pinyin_m'); + nlssort + ---------------- + 01EA0000020006 + (1 row) + + MogDB=# SELECT nlssort('A', 'nls_sort=generic_m_ci'); + nlssort + ---------------- + 01EA000002 + (1 row) + ``` + - convert(string bytea, src_encoding name, dest_encoding name) 描述:以dest_encoding指定的目标编码方式转化字符串bytea。src_encoding指定源编码方式,在该编码下,string必须是合法的。 @@ -1334,7 +1490,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT convert('text_in_utf8', 'UTF8', 'GBK'); + MogDB=# SELECT convert('text_in_utf8', 'UTF8', 'GBK'); convert ---------------------------- \x746578745f696e5f75746638 @@ -1346,12 +1502,12 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 > 示例: > > ```sql - > mogdb=# show server_encoding; + > MogDB=# show server_encoding; > server_encoding > ----------------- > LATIN1 > (1 row) - > mogdb=# SELECT convert_from('some text', 'GBK'); + > MogDB=# SELECT convert_from('some text', 'GBK'); > convert_from > -------------- > some text @@ -1379,7 +1535,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT convert_from('text_in_utf8', 'UTF8'); + MogDB=# SELECT convert_from('text_in_utf8', 'UTF8'); convert_from -------------- text_in_utf8 @@ -1395,7 +1551,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT convert_to('some text', 'UTF8'); + MogDB=# SELECT convert_to('some text', 'UTF8'); convert_to ---------------------- \x736f6d652074657874 @@ -1415,7 +1571,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT 'AA_BBCC' LIKE '%A@_B%' ESCAPE '@' AS RESULT; + MogDB=# SELECT 'AA_BBCC' LIKE '%A@_B%' ESCAPE '@' AS RESULT; result -------- t @@ -1423,7 +1579,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT 'AA_BBCC' LIKE '%A@_B%' AS RESULT; + MogDB=# SELECT 'AA_BBCC' LIKE '%A@_B%' AS RESULT; result -------- f @@ -1431,7 +1587,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT 'AA@_BBCC' LIKE '%A@_B%' AS RESULT; + MogDB=# SELECT 'AA@_BBCC' LIKE '%A@_B%' AS RESULT; result -------- t @@ -1456,7 +1612,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT regexp_like('ABC', '[A-Z]'); + MogDB=# SELECT regexp_like('ABC', '[A-Z]'); regexp_like ------------- t @@ -1464,7 +1620,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT regexp_like('ABC', '[D-Z]'); + MogDB=# SELECT regexp_like('ABC', '[D-Z]'); regexp_like ------------- f @@ -1472,7 +1628,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 ``` ```sql - mogdb=# SELECT regexp_like('ABC', '[a-z]','i'); + MogDB=# SELECT regexp_like('ABC', '[a-z]','i'); regexp_like ------------- t @@ -1488,7 +1644,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT format('Hello %s, %1$s', 'World'); + MogDB=# SELECT format('Hello %s, %1$s', 'World'); format -------------------- Hello World, World @@ -1507,7 +1663,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT md5('ABC'); + MogDB=# SELECT md5('ABC'); md5 ---------------------------------- 902fbdd2b1df0c4f70b4a5d23525e932 @@ -1523,7 +1679,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT decode('MTIzAAE=', 'base64'); + MogDB=# SELECT decode('MTIzAAE=', 'base64'); decode -------------- \x3132330001 @@ -1539,7 +1695,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# select similar_escape('\s+ab','2'); + MogDB=# select similar_escape('\s+ab','2'); similar_escape ---------------- ^(?:\\s+ab)$ @@ -1555,7 +1711,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# select svals('"aa"=>"bb"'); + MogDB=# select svals('"aa"=>"bb"'); svals ------- bb @@ -1571,7 +1727,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# select tconvert('aa', 'bb'); + MogDB=# select tconvert('aa', 'bb'); tconvert ------------ "aa"=>"bb" @@ -1587,7 +1743,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - mogdb=# SELECT encode(E'123\\000\\001', 'base64'); + MogDB=# SELECT encode(E'123\\000\\001', 'base64'); encode ---------- MTIzAAE= @@ -1603,11 +1759,10 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 > - MogDB支持多种类型的数据库,目前有4种,分别是A类型、B类型、C类型以及PG类型。在不指定数据库类型时,我们的数据库默认是A类型,A的词法分析器与另外三种不一样,在A中空字符串会被当作是NULL。所以,当使用A类型的数据库时,假如上述字符操作函数中有空字符串作为参数,会出现没有输出的情况。例如: > > ```sql -> mogdb=# SELECT translate('12345','123',''); +> MogDB=# SELECT translate('12345','123',''); > translate > ----------- -> -> (1 row) +> (1 row) > ``` -> -> 这是因为内核在调用相应的函数进行处理前,会判断所输入的参数中是否含有NULL,假如 有,则不会调用相应的函数,因此会没有输出。而在PG模式下,字符串的处理方式与PostgreSQL保持一致,因此不会有上述问题产生。 +> +> 这是因为内核在调用相应的函数进行处理前,会判断所输入的参数中是否含有NULL,假如 有,则不会调用相应的函数,因此会没有输出。而在PG模式下,字符串的处理方式与PostgreSQL保持一致,因此不会有上述问题产生。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/30-internal-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/30-internal-functions.md index ba18c959b6f383d4b729c54c20e0df19f8458c27..8eb8db2b24a66785712e8a9f57656974c5f02867 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/30-internal-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/30-internal-functions.md @@ -40,37 +40,53 @@ MogDB中下列函数使用了内部数据类型,用户无法直接调用,在 - 内部类型处理函数 - | abstimerecv | euc_jis_2004_to_utf8 | int2recv | line_recv | oidvectorrecv_extend | tidrecv | utf8_to_koi8u | - | --------------------------------- | -------------------- | ------------------ | ----------------- | ------------------------------ | -------------------- | ---------------------- | - | anyarray_recv | euc_jp_to_mic | int2vectorrecv | lseg_recv | path_recv | time_recv | utf8_to_shift_jis_2004 | - | array_recv | euc_jp_to_sjis | int4recv | macaddr_recv | pg_node_tree_recv | time_transform | utf8_to_sjis | - | ascii_to_mic | euc_jp_to_utf8 | int8recv | mic_to_ascii | point_recv | timestamp_recv | utf8_to_uhc | - | ascii_to_utf8 | euc_kr_to_mic | internal_out | mic_to_big5 | poly_recv | timestamp_transform | utf8_to_win | - | big5_to_euc_tw | euc_kr_to_utf8 | interval_recv | mic_to_euc_cn | pound_nexttoken | timestamptz_recv | uuid_recv | - | big5_to_mic | euc_tw_to_big5 | interval_transform | mic_to_euc_jp | prsd_nexttoken | timetz_recv | varbit_recv | - | big5_to_utf8 | euc_tw_to_mic | iso_to_koi8r | mic_to_euc_kr | range_recv | tintervalrecv | varbit_transform | - | bit_recv | euc_tw_to_utf8 | iso_to_mic | mic_to_euc_tw | rawrecv | tsqueryrecv | varchar_transform | - | boolrecv | float4recv | iso_to_win1251 | mic_to_iso | record_recv | tsvectorrecv | varcharrecv | - | box_recv | float8recv | iso_to_win866 | mic_to_koi8r | regclassrecv | txid_snapshot_recv | void_recv | - | bpcharrecv | gb18030_to_utf8 | iso8859_1_to_utf8 | mic_to_latin1 | regconfigrecv | uhc_to_utf8 | win_to_utf8 | - | btoidsortsupport | gbk_to_utf8 | iso8859_to_utf8 | mic_to_latin2 | regdictionaryrecv | unknownrecv | win1250_to_latin2 | - | bytearecv | gin_extract_tsvector | johab_to_utf8 | mic_to_latin3 | regoperatorrecv | utf8_to_ascii | win1250_to_mic | - | byteawithoutorderwithequalcolrecv | gtsvector_compress | json_recv | mic_to_latin4 | regoperrecv | utf8_to_big5 | win1251_to_iso | - | cash_recv | gtsvector_consistent | koi8r_to_iso | mic_to_sjis | regprocedurerecv | utf8_to_euc_cn | win1251_to_koi8r | - | charrecv | gtsvector_decompress | koi8r_to_mic | mic_to_win1250 | regprocrecv | utf8_to_euc_jis_2004 | win1251_to_mic | - | cidr_recv | gtsvector_penalty | koi8r_to_utf8 | mic_to_win1251 | regtyperecv | utf8_to_euc_jp | win1251_to_win866 | - | cidrecv | gtsvector_picksplit | koi8r_to_win1251 | mic_to_win866 | reltimerecv | utf8_to_euc_kr | win866_to_iso | - | circle_recv | gtsvector_same | koi8r_to_win866 | namerecv | shift_jis_2004_to_euc_jis_2004 | utf8_to_euc_tw | win866_to_koi8r | - | cstring_recv | gtsvector_union | koi8u_to_utf8 | ngram_nexttoken | shift_jis_2004_to_utf8 | utf8_to_gb18030 | win866_to_mic | - | date_recv | hll_recv | latin1_to_mic | numeric_recv | sjis_to_euc_jp | utf8_to_gbk | win866_to_win1251 | - | domain_recv | hll_trans_recv | latin2_to_mic | numeric_transform | sjis_to_mic | utf8_to_iso8859 | xidrecv | - | euc_cn_to_mic | hstore_recv | latin2_to_win1250 | nvarchar2recv | sjis_to_utf8 | utf8_to_iso8859_1 | xidrecv4 | - | euc_cn_to_utf8 | inet_recv | latin3_to_mic | oidrecv | smalldatetime_recv | utf8_to_johab | xml_recv | - | euc_jis_2004_to_shift_jis_2004 | int1recv | latin4_to_mic | oidvectorrecv | textrecv | utf8_to_koi8r | cstore_tid_out | - | i16toi1 | int16 | int16_bool | int16eq | int16div | int16ge | int16gt | - | int16in | int16le | int16lt | int16mi | int16mul | int16ne | int16out | - | int16pl | int16recv | int16send | numeric_bool | | | | - | jsonb_in | jsonb_out | jsonb_recv | jsonb_send | | | | + | abstimerecv | euc_jis_2004_to_utf8 | int2recv | line_recv | oidvectorrecv_extend | tidrecv | utf8_to_koi8u | + | --------------------------------- | -------------------- | --------------------- | ------------------ | ------------------------------ | ----------------------- | ---------------------- | + | anyarray_recv | euc_jp_to_mic | int2vectorrecv | lseg_recv | path_recv | time_recv | utf8_to_shift_jis_2004 | + | array_recv | euc_jp_to_sjis | int4recv | macaddr_recv | pg_node_tree_recv | time_transform | utf8_to_sjis | + | ascii_to_mic | euc_jp_to_utf8 | int8recv | mic_to_ascii | point_recv | timestamp_recv | utf8_to_uhc | + | ascii_to_utf8 | euc_kr_to_mic | internal_out | mic_to_big5 | poly_recv | timestamp_transform | utf8_to_win | + | big5_to_euc_tw | euc_kr_to_utf8 | interval_recv | mic_to_euc_cn | pound_nexttoken | timestamptz_recv | uuid_recv | + | big5_to_mic | euc_tw_to_big5 | interval_transform | mic_to_euc_jp | prsd_nexttoken | timetz_recv | varbit_recv | + | big5_to_utf8 | euc_tw_to_mic | iso_to_koi8r | mic_to_euc_kr | range_recv | tintervalrecv | varbit_transform | + | bit_recv | euc_tw_to_utf8 | iso_to_mic | mic_to_euc_tw | rawrecv | tsqueryrecv | varchar_transform | + | boolrecv | float4recv | iso_to_win1251 | mic_to_iso | record_recv | tsvectorrecv | varcharrecv | + | box_recv | float8recv | iso_to_win866 | mic_to_koi8r | regclassrecv | txid_snapshot_recv | void_recv | + | bpcharrecv | gb18030_to_utf8 | iso8859_1_to_utf8 | mic_to_latin1 | regconfigrecv | uhc_to_utf8 | win_to_utf8 | + | btoidsortsupport | gbk_to_utf8 | iso8859_to_utf8 | mic_to_latin2 | regdictionaryrecv | unknownrecv | win1250_to_latin2 | + | bytearecv | gin_extract_tsvector | johab_to_utf8 | mic_to_latin3 | regoperatorrecv | utf8_to_ascii | win1250_to_mic | + | byteawithoutorderwithequalcolrecv | gtsvector_compress | json_recv | mic_to_latin4 | regoperrecv | utf8_to_big5 | win1251_to_iso | + | cash_recv | gtsvector_consistent | koi8r_to_iso | mic_to_sjis | regprocedurerecv | utf8_to_euc_cn | win1251_to_koi8r | + | charrecv | gtsvector_decompress | koi8r_to_mic | mic_to_win1250 | regprocrecv | utf8_to_euc_jis_2004 | win1251_to_mic | + | cidr_recv | gtsvector_penalty | koi8r_to_utf8 | mic_to_win1251 | regtyperecv | utf8_to_euc_jp | win1251_to_win866 | + | cidrecv | gtsvector_picksplit | koi8r_to_win1251 | mic_to_win866 | reltimerecv | utf8_to_euc_kr | win866_to_iso | + | circle_recv | gtsvector_same | koi8r_to_win866 | namerecv | shift_jis_2004_to_euc_jis_2004 | utf8_to_euc_tw | win866_to_koi8r | + | cstring_recv | gtsvector_union | koi8u_to_utf8 | ngram_nexttoken | shift_jis_2004_to_utf8 | utf8_to_gb18030 | win866_to_mic | + | date_recv | hll_recv | latin1_to_mic | numeric_recv | sjis_to_euc_jp | utf8_to_gbk | win866_to_win1251 | + | domain_recv | hll_trans_recv | latin2_to_mic | numeric_transform | sjis_to_mic | utf8_to_iso8859 | xidrecv | + | euc_cn_to_mic | hstore_recv | latin2_to_win1250 | nvarchar2recv | sjis_to_utf8 | utf8_to_iso8859_1 | xidrecv4 | + | euc_cn_to_utf8 | inet_recv | latin3_to_mic | oidrecv | smalldatetime_recv | utf8_to_johab | xml_recv | + | euc_jis_2004_to_shift_jis_2004 | int1recv | latin4_to_mic | oidvectorrecv | textrecv | utf8_to_koi8r | cstore_tid_out | + | i16toi1 | int16 | int16_bool | int16eq | int16div | int16ge | int16gt | + | int16in | int16le | int16lt | int16mi | int16mul | int16ne | int16out | + | int16pl | int16recv | int16send | numeric_bool | int2vectorin_extend | int2vectorout_extend | int2vectorrecv_extend | + | int2vectorsend_extend | jsonb_in | jsonb_out | jsonb_recv | jsonb_send | complex_array_in | bool_int1 | + | bool_int2 | bool_int8 | bpchar_float4 | bpchar_float8 | bpchar_int4 | bpchar_int8 | bpchar_numeric | + | bpchar_timestamp | f4toi1 | f8toi1 | float4_bpchar | float4_text | float4_varchar | float8_bpchar | + | float8_text | float8_varchar | i1tof4 | i1tof8 | i1toi2 | i1toi4 | i1toi8 | + | i2toi1 | i4toi1 | i8toi1 | int1_avg_accum | int1_bool | int1_bpchar | int1_numeric | + | int1_nvarchar2 | int1_text | int1_varchar | int1abs | int1and | int1cmp | int1div | + | int1eq | int1ge | int1gt | int1in | int1inc | int1larger | int1le | + | int1lt | int1mi | int1mod | int1mul | int1ne | int1not | int1or | + | int1out | int1pl | int1shl | int1shr | int1smaller | int1um | int1up | + | int1xor | int2_bool | int2_bpchar | int2_text | int2_varchar | int4_bpchar | int4_text | + | int4_varchar | int8_bool | int8_bpchar | int8_text | int8_varchar | job_submit | numeric_bpchar | + | numeric_int1 | numeric_text | numeric_varchar | nvarchar2in | nvarchar2out | nvarchar2send | oidvectorin_extend | + | oidvectorout_extend | oidvectorsend_extend | rawcmp | raweq | rawge | rawgt | rawin | + | rawle | rawlike | rawlt | rawne | rawnlike | rawout | rawsend | + | text_float4 | text_float8 | text_int1 | text_int2 | text_int4 | text_int8 | text_numeric | + | timestamp_text | timestamp_varchar | varchar_float4 | varchar_float8 | varchar_int4 | varchar_int8 | varchar_numeric | + | xidout4 | xidsend4 | calculate_quantile_of | calculate_value_at | large_seq_rollback_ntree | large_seq_upgrade_ntree | - | - 聚合操作内部函数 @@ -137,14 +153,31 @@ MogDB中下列函数使用了内部数据类型,用户无法直接调用,在 plpgsql_inline_handler +- 集合相关内部函数 + + | array_indexby_delete | array_indexby_length | array_integer_deleteidx | array_integer_exists | array_integer_first | array_integer_last | + | -------------------- | -------------------- | ----------------------- | -------------------- | ------------------- | ------------------ | + | array_integer_next | array_integer_prior | array_varchar_deleteidx | array_varchar_exists | array_varchar_first | array_varchar_last | + | array_varchar_next | array_varchar_prior | - | - | - | - | + - 外表相关内部函数 | dist_fdw_handler | roach_handler | streaming_fdw_handler | dist_fdw_validator | file_fdw_handler | file_fdw_validator | log_fdw_handler | | ---------------- | ------------- | --------------------- | ------------------ | ---------------- | ------------------ | --------------- | -- 主DN远程读取备DN数据页辅助函数 +- 主数据库节点远程读取备数据库节点数据页辅助函数 + + gs_read_block_from_remote用于读取非段页式表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 + + pg_read_binary_file_blocks用于读取数据,非压缩表返回实际数据,压缩表返回压缩后的数据。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 - gs_read_block_from_remote + gs_read_segment_block_from_remote用于读取段页式表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 + +- 主数据库节点远程读取备数据库节点数据文件辅助函数 + + gs_read_file_from_remote用于读取指定的文件。gs_repair_file利用gs_read_file_size_from_remote函数获取文件大小后,依赖这个函数将远端文件逐段读取。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 + + gs_read_file_size_from_remote用于读取指定文件的大小。用于读取指定文件的大小,gs_repair_file函数修复文件时,要先获取远端关于这个文件的大小,用于校验本地文件缺失的文件信息,然后将缺失的文件逐个修复。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 - 账本数据库函数 @@ -156,11 +189,11 @@ MogDB中下列函数使用了内部数据类型,用户无法直接调用,在 | ----------------------- | ------------------------ | ------------------------- | ---------------- | ------------------------ | ---------------- | ---------------- | | purge_snapshot_internal | purge_snapshot | sample_snapshot | | | | | - - PKG_SERVICE函数 +- PKG_SERVICE函数 | isubmit_on_nodes | submit_on_nodes | | | | | | | ---------------- | --------------- | ---- | ---- | ---- | ---- | ---- | - + - 其他函数 | to_tsvector_for_batch | value_of_percentile | session_context | bind_variable | job_update | job_cancel | job_finish | @@ -168,4 +201,4 @@ MogDB中下列函数使用了内部数据类型,用户无法直接调用,在 | similar_escape | table_skewness (不可用) | timetz_text | time_text | reltime_text | abstime_text | _pg_keysequal | | analyze_query(不可用) | analyze_workload (不可用) | ssign_table_type | gs_comm_proxy_thread_status | gs_txid_oldestxmin | pg_cancel_session | pg_stat_segment_space_info | | remote_segment_space_info | set_cost_params | set_weight_params | start_collect_workload | tdigest_in | tdigest_merge | tdigest_merge_to_one | - | tdigest_mergep | tdigest_out | pg_get_delta_info | | | | | + | tdigest_mergep | tdigest_out | pg_get_delta_info | disable_conn | - | - | - | diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/32-global-syscache-feature-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/32-global-syscache-feature-functions.md new file mode 100644 index 0000000000000000000000000000000000000000..78c6ad2511327956b2ee134ede5c2a48b4ac9355 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/32-global-syscache-feature-functions.md @@ -0,0 +1,99 @@ +--- +title: Global SysCache特性函数 +summary: Global SysCache特性函数 +author: Guo Huan +date: 2022-05-10 +--- + +# Global SysCache特性函数 + +- gs_gsc_table_detail(database_id dafault NULL, rel_id default NULL) + + 描述:查看数据库里全局系统缓存的表元数据。调用该函数的用户需要具有SYSADMIN权限。 + + 参数:指定需要查看全局系统缓存的数据库和表,database_id默认值NULL或者-1表示所有的数据库,0表示共享表,其他数字表示指定数据库及共享表,rel_id表示指定表的oid,默认值NULL或者-1表示所有的表,其他值表示指定的表,表不存在会报错。 + + 返回值类型:Tuple + + 示例: + + ``` + select * from gs_gsc_table_detail(-1) limit 1; + database_oid | database_name | reloid | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relhasindex | relisshared | relkind | relnatts | relhasoids | relhaspkey | parttype | tdhasuids | attnames | extinfo + --------------+---------------+--------+-------------------------+--------------+---------+-----------+----------+-------+-------------+---------------+-------------+-------------+---------+----------+------------+------------+----------+-----------+-----------+--------- + 0 | | 2676 | pg_authid_rolname_index | 11 | 0 | 0 | 10 | 403 | 0 | 1664 | f | t | i | 1 | f | f | n | f | 'rolname' | + (1 row) + ``` + +- gs_gsc_catalog_detail(database_id dafault NULL, rel_id default NULL) + + 描述:查看数据库里全局系统缓存的系统表行信息。调用该函数的用户需要具有SYSADMIN权限。 + + 参数:指定需要查看全局系统缓存的数据库和表,database_id 默认值NULL或者-1表示所有的数据库,0表示共享表,其他数字表示指定数据库及共享表, rel_id表示指定表的id,仅包含所有有系统缓存的系统表,默认值NULL或者-1表示所有的表,其他值表示指定的表,表不存在会报错。 + + 返回值类型:Tuple + + 示例: + + ``` + MogDB=# + select * from gs_gsc_catalog_detail(16574, 1260); + database_id | database_name | rel_id | rel_name | cache_id | self | ctid | infomask | infomask2 | hash_value | refcount + -------------+---------------+--------+-----------+----------+--------+--------+----------+-----------+------------+---------- + 0 | | 1260 | pg_authid | 10 | (0, 9) | (0, 9) | 10507 | 26 | 531311568 | 10 + 0 | | 1260 | pg_authid | 11 | (0, 4) | (0, 4) | 2313 | 26 | 365368336 | 1 + 0 | | 1260 | pg_authid | 11 | (0, 9) | (0, 9) | 10507 | 26 | 3911517328 | 10 + 0 | | 1260 | pg_authid | 11 | (0, 7) | (0, 7) | 2313 | 26 | 1317799983 | 1 + 0 | | 1260 | pg_authid | 11 | (0, 5) | (0, 5) | 2313 | 26 | 3664347448 | 1 + 0 | | 1260 | pg_authid | 11 | (0, 1) | (0, 1) | 2313 | 26 | 276477273 | 1 + 0 | | 1260 | pg_authid | 11 | (0, 3) | (0, 3) | 2313 | 26 | 2465837659 | 1 + 0 | | 1260 | pg_authid | 11 | (0, 8) | (0, 8) | 2313 | 26 | 3205288035 | 1 + 0 | | 1260 | pg_authid | 11 | (0, 6) | (0, 6) | 2313 | 26 | 131811687 | 1 + 0 | | 1260 | pg_authid | 11 | (0, 2) | (0, 2) | 2313 | 26 | 1226484587 | 1 + (10 rows) + ``` + +- gs_gsc_clean(database_id dafault NULL) + + 描述:清理global syscache的缓存,需要注意,正在使用中的数据不会被清理。调用该函数的用户需要具有SYSADMIN权限。 + + 参数:指定需要清理全局系统缓存的数据库,默认值NULL或者-1表示清理所有的数据库全局系统缓存,0表示只清理共享表的全局系统缓存,其他数字表示清理指定数据库以及共享表的全局系统缓存,表不存在会报错。 + + 返回值类型:bool + + 示例: + + ``` + MogDB=# select * from gs_gsc_clean(); + gs_gsc_clean + -------------- + t + (1 row) + ``` + +- gs_gsc_dbstat_info(database_id default NULL) + + 描述:获取本地节点的GSC的内存统计信息,包括tuple、relation、partition的缓存查询,命中,加载、失效、占用空间信息,DB级别的淘汰信息,线程引用信息,内存占用信息。可以用于定位性能问题,例如当发现hits/searches数组远小于1时,可能是global_syscache_threshold设置太小,导致查询命中率下降。调用该函数的用户需要具有SYSADMIN权限。 + + 参数:指定需要查看的数据库全局系统缓存统计信息,NULL或者-1表示查看所有的数据库,0表示只查看共享表信息,其他数字表示查看指定的数据库和共享表的信息。不合法的输入值,表不存在会报错。 + + 返回值类型:Tuple + + 示例: + + ``` + MogDB=# select * from gs_gsc_dbstat_info(); + database_id | database_name | tup_searches | tup_hits | tup_miss | tup_count | tup_dead | tup_memory | rel_searches | rel_hits | rel_mis + s | rel_count | rel_dead | rel_memory | part_searches | part_hits | part_miss | part_count | part_dead | part_memory | total_memory | swa + pout_count | refcount + -------------+---------------+--------------+----------+----------+-----------+----------+------------+--------------+----------+-------- + --+-----------+----------+------------+---------------+-----------+-----------+------------+-----------+-------------+--------------+---- + -----------+---------- + 0 | | 300 | 235 | 31 | 22 | 2 | 9752 | 598 | 108 | 1 + 8 | 18 | 0 | 77720 | 0 | 0 | 0 | 0 | 0 | 0 | 752912 | + 0 | 0 + 16574 | postgres | 3368 | 2289 | 329 | 273 | 0 | 92593 | 1113 | 524 | 4 + 8 | 48 | 0 | 340456 | 0 | 0 | 0 | 0 | 0 | 0 | 4124792 | + 0 | 10 + (2 rows) + ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/33-data-damage-detection-and-repair-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/33-data-damage-detection-and-repair-functions.md new file mode 100644 index 0000000000000000000000000000000000000000..a26feb99dc80a79216f987c01481834021e5b6b3 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/33-data-damage-detection-and-repair-functions.md @@ -0,0 +1,207 @@ +--- +title: 数据损坏检测修复函数 +summary: 数据损坏检测修复函数 +author: Guo Huan +date: 2022-05-10 +--- + +# 数据损坏检测修复函数 + +- gs_verify_data_file(verify_segment bool) + + 描述:校验当前实例当前库是否存在文件丢失的情况。校验只包括数据表主文件是否有中间段丢失的情况。默认参数是false,表示不校验段页式表数据文件。参数设置为true时仅校验段页式表文件。默认只有初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。 + + 返回的结果: + + - 非段页式表:rel_oid和rel_name是对应文件的表oid和表名,miss_file_path表示丢失文件的相对路径。 + - 段页式表:因所有表存放在相同文件中,所以rel_oid和rel_name无法显示具体表的信息。对于段页式表,如果第一个文件损坏,不会检查出后面的.1 .2等文件。例如3、3.1、3.2损坏,只能检查出3损坏。当段页式文件不足5个时,使用函数检测时,未生成的文件也会校验出来,例如只有1和2文件,校验段页式时,也会检测出3,4,5文件。以下示例,第一个是校验非段页式表的示例,第二是校验段页式表的示例。 + + 参数说明: + + - verify_segment + + 指定文件校验的范围。false校验非段页式表;true校验段页式表。 + + 取值范围:true和false,默认是false。 + + 返回值类型:record + + 示例: + + 校验非段页式表 + + ``` + MogDB=# select * from gs_verify_data_file(); + node_name | rel_oid | rel_name | miss_file_path + ------------------+---------+--------------+------------------ + dn_6001_6002_6003 | 16554 | test | base/16552/24745 + ``` + + 校验段页式表 + + ``` + MogDB=# select * from gs_verify_data_file(true); + node_name | rel_oid | rel_name | miss_file_path + -------------------+---------+----------+---------------- + dn_6001_6002_6003 | 0 | none | base/16573/2 + ``` + +- gs_repair_file(tableoid Oid,path text, timeout int) + + 描述:根据传入的参数修复文件,仅支持有正常主备连接的主DN使用。参数依据gs_verify_data_file函数返回的oid和路径填写。段页式表tableoid赋值为0到4,294,967,295的任意值(内部校验根据文件路径判断是否是段页式表文件,段页式表文件则不使用tableoid)。修复成功返回值为true,修复失败会显示具体失败原因。默认只有在主DN节点上,使用初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。 + + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **注意:** 1. 当DN实例上存在文件损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。可在其他DN升主后,通过备DN自动修复进行修复。 2. 当文件存在但是大小为0时,此时不会去修复该文件,若想要修复该文件,需要将为0的文件删除后再修复。 3. 删除文件需要等文件fd自动关闭后再修复,人工操作可以执行重启进程、主备切换命令。 + +参数说明: + +- tableoid + + 要修复的文件对应的表oid,依据gs_verify_data_file函数返回的列表中rel_oid一列填写。 + + 取值范围: Oid,0 - 4294967295。注意:输入负值等都会被强制转成非负整数类型。 + +- path + + 需要修复的文件路径,依据gs_verify_data_file函数返回的列表中miss_file_path一列填写。 + + 取值范围:字符串。 + +- timeout + + 等待备DN回放的时长,修复文件需要等待备DN回放到当前主DN对应的位置,根据备DN回放所需时长设定。 + + 取值范围:60s - 3600s。 + +返回值类型:bool + +示例: + +```` +``` +MogDB=# select * from gs_repair_file(16554,'base/16552/24745',360); +gs_repair_file +---------------- +t +``` +```` + +- local_bad_block_info() + + 描述:显示本实例页面损坏的情况。从磁盘读取页面,发现页面CRC校验失败时进行记录。默认只有初始化用户、具有sysadmin属性的用户、具有监控管理员属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。 + + 显示信息:file_path是损坏文件的相对路径,如果是段页式表,则显示的是逻辑信息,不是实际的物理文件信息。block_num是该文件损坏的具体页面号,页面号从0开始。check_time表示发现页面损坏的时间。repair_time表示修复页面的时间。 + + 返回值类型:record + + 示例: + + ``` + MogDB=# select * from local_bad_block_info(); + node_name | spc_node | db_node | rel_node| bucket_node | fork_num | block_num | file_path | check_time | repair_time + -----------------+-------+--------+--------+--------------+----------+-----------+-----------------+--------------------------+------------------------------- + dn_6001_6002_6003| 1663 | 16552 | 24745 | -1 | 0 | 0 | base/16552/24745 | 2022-01-13 20:19:08.385004+08 | 2022-01-13 20:19:08.407314+08 + + ``` + +- local_clear_bad_block_info() + + 描述:清理local_bad_block_info中已修复页面的数据,也就是repair_time不为空的信息。默认只有初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。 + + 返回值类型:bool + + 示例: + + ``` + MogDB=# select * from local_clear_bad_block_info(); + result + -------- + t + ``` + +- gs_verify_and_tryrepair_page (path text, blocknum oid, verify_mem bool, is_segment bool) + + 描述:校验本实例指定页面的情况。默认只有在主DN节点上,使用初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。 + + 返回的结果信息:disk_page_res表示磁盘上页面的校验结果;mem_page_res表示内存中页面的校验结果;is_repair表示在校验的过程中是否触发修复功能,t表示已修复,f表示未修复。 + + 注意:当DN实例上存在页面损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。可在其他DN升主后,通过备DN自动修复进行修复。 + + 参数说明: + + - path + + 损坏文件的路径。依据local_bad_block_info中file_path一列填写。 + + 取值范围:字符串。 + + - blocknum + + 损坏文件的页号。依据local_bad_block_info中block_num一列填写。 + + 取值范围:Oid,0 - 4294967295。注意:输入负值等都会被强制转成非负整数类型。 + + - verify_mem + + 指定是否校验内存中的指定页面。设定为false时,只校验磁盘上的页面。设置为true时,校验内存中的页面和磁盘上的页面。如果发现磁盘上页面损坏,会将内存中的页面做一个基本信息校验刷盘,修复磁盘上页面。如果校验内存页面时发现页面不在内存中,会经内存接口读取磁盘上的页面。此过程中如果磁盘页面有问题,则会触发远程读自动修复功能。 + + 取值范围:bool,true和false。 + + - is_segment + + 是否是段页式表。根据local_bad_block_info中的bucket_node列值决定。如果bucket_node为-1时,表示不是段页式表,将is_segment设置为false;非-1的情况将is_segment设置为true。 + + 取值范围:bool,true和false。 + + 返回值类型:record + + 示例: + + ``` + MogDB=# select * from gs_verify_and_tryrepair_page('base/16552/24745',0,false,false); + node_name | path | blocknum | disk_page_res | mem_page_res | is_repair + ------------------+------------------+------------+-----------------------------+---------------+---------- + dn_6001_6002_6003 | base/16552/24745 | 0 | page verification succeeded.| | f + ``` + +- gs_repair_page(path text, blocknum oid, is_segment bool, timeout int) + + 描述:修复本实例指定页面,仅支持有正常主备连接的主DN使用。页面修复成功返回true,修复过程中出错会有报错信息提示。默认只有在主DN节点上,使用初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。 + + 注意:当DN实例上存在页面损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。可在其他DN升主后,通过备DN自动修复进行修复。 + + 参数说明: + + - path + + 损坏页面的路径。根据local_bad_block_info中file_path一列设置,或者是gs_verify_and_tryrepair_page函数中path一列设置。 + + 取值范围:字符串。 + + - blocknum + + 损坏页面的页面号。根据local_bad_block_info中block_num一列设置,或者是gs_verify_and_tryrepair_page函数中blocknum一列设置。 + + 取值范围:Oid,0 - 4294967295。注意:输入负值等都会被强制转成非负整数类型。 + + - is_segment + + 是否是段页式表。根据local_bad_block_info中的bucket_node列值决定,如果bucket_node为-1时,表示不是段页式表,将is_segment设置为false;非-1的情况将is_segment设置为true。 + + 取值范围:bool,true或者false。 + + - timeout + + 等待备DN回放的时长。修复页面需要等待备DN回放到当前主DN对应的位置,根据备DN回放所需时长设定。 + + 取值范围:60s - 3600s。 + + 返回值类型:bool + + 示例: + + ``` + MogDB=# select * from gs_repair_page('base/16552/24745',0,false,60); + result + -------- + t + ``` \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/4-binary-string-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/4-binary-string-functions-and-operators.md index 590e8f8bf879e5f48db29c440205df7511b5b9c5..d9d1fb83b5cd061d8b9bcdd4b9c78db528cafb89 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/4-binary-string-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/4-binary-string-functions-and-operators.md @@ -13,11 +13,11 @@ SQL定义了一些字符串函数,在这些函数里使用关键字而不是 - octet_length(string) - 描述: 二进制字符串中的字节数。 + 描述:二进制字符串中的字节数。 - 返回值类型: int + 返回值类型:int - 示例: + 示例: ```sql mogdb=# SELECT octet_length(E'jo\\000se'::bytea) AS RESULT; @@ -29,11 +29,11 @@ SQL定义了一些字符串函数,在这些函数里使用关键字而不是 - overlay(string placing string from int [for int]) - 描述: 替换子串。 + 描述:替换子串。 - 返回值类型: bytea + 返回值类型:bytea - 示例: + 示例: ```sql mogdb=# SELECT overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) AS RESULT; @@ -45,11 +45,11 @@ SQL定义了一些字符串函数,在这些函数里使用关键字而不是 - position(substring in string) - 描述: 特定子字符串的位置。 + 描述:特定子字符串的位置。 - 返回值类型: int + 返回值类型:int - 示例: + 示例: ```sql mogdb=# SELECT position(E'\\000om'::bytea in E'Th\\000omas'::bytea) AS RESULT; @@ -61,14 +61,14 @@ SQL定义了一些字符串函数,在这些函数里使用关键字而不是 - substring(string [from int] [for int]) - 描述: 截取子串。 + 描述:截取子串。 - 返回值类型: bytea + 返回值类型:bytea - 示例: + 示例: ```sql - mogdb=# select substr(E'Th\\000omas'::bytea,2, 3) as result; + mogdb=# SELECT substr(E'Th\\000omas'::bytea,2, 3) as result; result ---------- \x68006f @@ -77,11 +77,11 @@ SQL定义了一些字符串函数,在这些函数里使用关键字而不是 - substr(string, from int [, for int]) - 描述: 截取子串。 + 描述:截取子串。 - 返回值类型: bytea + 返回值类型:bytea - 示例: + 示例: ```sql mogdb=# SELECT substr(E'Th\\000omas'::bytea from 2 for 3) AS RESULT; @@ -93,11 +93,11 @@ SQL定义了一些字符串函数,在这些函数里使用关键字而不是 - trim([both] bytes from string) - 描述: 从string的开头和结尾删除只包含bytes中字节的最长字符串。 + 描述:从string的开头和结尾删除只包含bytes中字节的最长字符串。 - 返回值类型: bytea + 返回值类型:bytea - 示例: + 示例: ```sql mogdb=# SELECT trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) AS RESULT; @@ -113,11 +113,11 @@ MogDB也提供了函数调用所使用的常用语法。 - btrim(string bytea,bytes bytea) - 描述: 从string的开头和结尾删除只包含bytes中字节的最长的字符串。 + 描述:从string的开头和结尾删除只包含bytes中字节的最长的字符串。 - 返回值类型: bytea + 返回值类型:bytea - 示例: + 示例: ```sql mogdb=# SELECT btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) AS RESULT; @@ -129,11 +129,11 @@ MogDB也提供了函数调用所使用的常用语法。 - get_bit(string, offset) - 描述: 从字符串中抽取位。 + 描述:从字符串中抽取位。 - 返回值类型: int + 返回值类型:int - 示例: + 示例: ```sql mogdb=# SELECT get_bit(E'Th\\000omas'::bytea, 45) AS RESULT; @@ -145,11 +145,11 @@ MogDB也提供了函数调用所使用的常用语法。 - get_byte(string, offset) - 描述: 从字符串中抽取字节。 + 描述:从字符串中抽取字节。 - 返回值类型: int + 返回值类型:int - 示例: + 示例: ```sql mogdb=# SELECT get_byte(E'Th\\000omas'::bytea, 4) AS RESULT; @@ -161,11 +161,11 @@ MogDB也提供了函数调用所使用的常用语法。 - set_bit(string,offset, newvalue) - 描述: 设置字符串中的位。 + 描述:设置字符串中的位。 - 返回值类型: bytea + 返回值类型:bytea - 示例: + 示例: ```sql mogdb=# SELECT set_bit(E'Th\\000omas'::bytea, 45, 0) AS RESULT; @@ -177,11 +177,11 @@ MogDB也提供了函数调用所使用的常用语法。 - set_byte(string,offset, newvalue) - 描述: 设置字符串中的字节。 + 描述:设置字符串中的字节。 - 返回值类型: bytea + 返回值类型:bytea - 示例: + 示例: ```sql mogdb=# SELECT set_byte(E'Th\\000omas'::bytea, 4, 64) AS RESULT; diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/6-mode-matching-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/6-mode-matching-operators.md index 4c19d85943d04ec2d582606d4353ba8408ffd7d7..c2321688f1b957c4fd4881caa99851522eda8769 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/6-mode-matching-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/6-mode-matching-operators.md @@ -152,19 +152,25 @@ date: 2021-04-20 - [substring(string from pattern)](3-character-processing-functions-and-operators)函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。 + - [regexp_count](3-character-processing-functions-and-operators)函数提供了获取匹配POSIX正则表达式模式的子串数量的功能。 + + - [regexp_instr](3-character-processing-functions-and-operators)函数提供了获取匹配POSIX正则表达式模式子串位置的功能。 + + - [regexp_substr](3-character-processing-functions-and-operators)函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。 + - [regexp_replace(string, pattern, replacement [,flags ])](3-character-processing-functions-and-operators)函数提供了将匹配POSIX正则表达式模式的子串替换为新文本的功能。 - [regexp_matches(string text, pattern text [, flags text])](3-character-processing-functions-and-operators)函数返回一个文本数组,该数组由匹配一个POSIX正则表达式模式得到的所有被捕获子串构成。 - + - [regexp_split_to_table(string text, pattern text [, flags text])](3-character-processing-functions-and-operators)函数把一个POSIX正则表达式模式当作一个定界符来分离一个串。 - + - [regexp_split_to_array(string text, pattern text [, flags text ])](3-character-processing-functions-and-operators)和regexp_split_to_table类似,是一个正则表达式分离函数,不过它的结果以一个text数组的形式返回。 - + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > 正则表达式分离函数会忽略零长度的匹配,这种匹配发生在串的开头或结尾或者正好发生在前一个匹配之后。这和正则表达式匹配的严格定义是相悖的,后者由regexp_matches实现,但是通常前者是实际中最常用的行为。 - + 示例: - + ```sql mogdb=# SELECT 'abc' ~ 'Abc' AS RESULT; result @@ -172,7 +178,7 @@ date: 2021-04-20 f (1 row) ``` - + ```sql mogdb=# SELECT 'abc' ~* 'Abc' AS RESULT; result @@ -180,7 +186,7 @@ date: 2021-04-20 t (1 row) ``` - + ```sql mogdb=# SELECT 'abc' !~ 'Abc' AS RESULT; result @@ -188,7 +194,7 @@ date: 2021-04-20 t (1 row) ``` - + ```sql mogdb=# SELECT 'abc'!~* 'Abc' AS RESULT; result @@ -196,7 +202,7 @@ date: 2021-04-20 f (1 row) ``` - + ```sql mogdb=# SELECT 'abc' ~ '^a' AS RESULT; result @@ -204,7 +210,7 @@ date: 2021-04-20 t (1 row) ``` - + ```sql mogdb=# SELECT 'abc' ~ '(b|d)'AS RESULT; result @@ -212,7 +218,7 @@ date: 2021-04-20 t (1 row) ``` - + ```sql mogdb=# SELECT 'abc' ~ '^(b|c)'AS RESULT; result @@ -220,5 +226,5 @@ date: 2021-04-20 f (1 row) ``` - + 虽然大部分的正则表达式搜索都能很快地执行,但是正则表达式仍可能被人为地弄成需要任意长的时间和任意量的内存进行处理。不建议从非安全模式来源接受正则表达式搜索模式,如果必须这样做,建议加上语句超时限制。使用SIMILAR TO模式的搜索具有同样的安全性危险, 因为SIMILAR TO提供了很多和POSIX-风格正则表达式相同的能力。LIKE搜索比其他两种选项简单得多,因此在接受非安全模式来源搜索时要更安全些。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md index eadfaa158291a831217826e27402da9c46190f58..e5955ffcf4e6779a7bc3900121ae590739ababe0 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md @@ -536,7 +536,7 @@ date: 2021-04-20 描述:将传入参数转换为int2类型值并返回。 - 支持的入参类型包括float4、float8、numeric、text。 + 支持的入参类型包括float4、float8、int16、numeric、text。 返回值类型:int2 @@ -559,7 +559,7 @@ date: 2021-04-20 描述:将传入参数转换为int4类型值并返回。 - 支持的入参类型包括bit、boolean、char、duoble precision、numeric、real、smallint、text。 + 支持的入参类型包括bit、boolean、char、duoble precision、int16、numeric、real、smallint、text。 返回值类型:int4 @@ -578,6 +578,100 @@ date: 2021-04-20 (1 row) ``` +- float4\(in\) + + 描述:将传入参数转换为float4类型值并返回。支持的入参类型包括:bigint、duoble precision、int16、integer、numeric、smallint、text。 + + 返回值类型:float4 + + 示例: + + ``` + MogDB=# select float4('789'); + float4 + -------- + 789 + (1 row) + + MogDB=# select float4(99.9); + float4 + -------- + 99.9 + (1 row) + ``` + +- float8\(in\) + + 描述:将传入参数转换为float8类型值并返回。支持的入参类型包括:bigint、int16、integer、numeric、real、smallint、text。 + + 返回值类型:float8 + + 示例: + + ``` + MogDB=# select float8('789'); + float8 + -------- + 789 + (1 row) + + MogDB=# select float8(99.9); + float8 + -------- + 99.9 + (1 row) + ``` + +- int16\(in\) + + 描述:将传入参数转换为int16类型值并返回。支持的入参类型包括:bigint、boolean、double precision、integer、numeric、oid、real、smallint、tinyint。 + + 返回值类型:int16 + + 示例: + + ``` + MogDB=# select int16('789'); + int16 + -------- + 789 + (1 row) + + MogDB=# select int16(99.9); + int16 + -------- + 99 + (1 row) + ``` + +- numeric\(in\) + + 描述:将传入参数转换为numeric类型值并返回。支持的入参类型包括:bigint、boolean、double precision、int16、integer、money、real、smallint。 + + 返回值类型:numeric + + 示例: + + ``` + MogDB=# select "numeric"('789'); + numeric + --------- + 789 + (1 row) + + MogDB=# select "numeric"(99.9); + numeric + --------- + 99.9 + (1 row) + ``` + +- oid\(in\) + + 描述:将传入参数转换为oid类型值并返回。支持的入参类型包括:bigint、int16。 + + 返回值类型:oid + - radians(dp) 描述:把角度转为弧度。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md index 41cf8cca28e8b462741e850320b1c77dfd58ff2c..262fbbf1ef0caa90ef17de838b6c97225297b95d 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md @@ -27,7 +27,7 @@ date: 2021-04-20 | | `mogdb=# SELECT interval '1 day' + interval '1 hour' AS RESULT; result ------ 1 day 01:00:00 (1 row)` | | | `mogdb=# SELECT timestamp '2001-09-28 01:00' + interval '23 hours' AS RESULT; result -------- 2001-09-29 00:00:00 (1 row)` | | | `mogdb=# SELECT time '01:00' + interval '3 hours' AS RESULT; result ---- 04:00:00 (1 row)` | -| - | `mogdb=# SELECT date '2001-10-01' - date '2001-09-28' AS RESULT; result ---- 3 (1 row)` | +| - | `mogdb=# SELECT date '2001-10-01' - date '2001-09-28' AS RESULT; result ---- 3days (1 row)` | | | `mogdb=# SELECT date '2001-10-01' - integer '7' AS RESULT; result -------- 2001-09-24 00:00:00 (1 row)` | | | `mogdb=# SELECT date '2001-09-28' - interval '1 hour' AS RESULT; result -------- 2001-09-27 23:00:00 (1 row)` | | | `mogdb=# SELECT time '05:00' - time '03:00' AS RESULT; result ---- 02:00:00 (1 row)` | @@ -604,7 +604,7 @@ date: 2021-04-20 mogdb=# call tinterval(abstime 'May 10, 1947 23:59:12', abstime 'Mon May 1 00:30:30 1995'); tinterval ----------------------------------------------------- - ["1947-05-10 23:59:12+08" "1995-05-01 00:30:30+08"] + ["1947-05-10 23:59:12+09" "1995-05-01 00:30:30+08"] (1 row) ``` @@ -949,7 +949,7 @@ timestampdiff函数是计算两个日期时间之间(timestamp_expr2-timestamp_e ## EXTRACT -- **EXTRACT(**_field_**FROM**source) +- **EXTRACT**(field **FROM** source) extract函数从日期或时间的数值里抽取子域,比如年、小时等。source必须是一个timestamp、time或interval类型的值表达式(类型为date的表达式转换为timestamp,因此也可以用)。field是一个标识符或者字符串,它指定从源数据中抽取的域。extract函数返回类型为double precision的数值。field的取值范围如下所示。 @@ -1273,52 +1273,58 @@ mogdb=# SELECT date_part('hour', INTERVAL '4 hours 3 minutes'); **表 2** 用于日期/时间格式化的模式 -| 类别 | 模式 | 描述 | -| ---------------- | ------------------------------------------------------------ | ----------------------------------------------- | -| 小时 | HH | 一天的小时数(01-12) | -| HH12 | 一天的小时数(01-12) | | -| HH24 | 一天的小时数(00-23) | | -| 分钟 | MI | 分钟(00-59) | -| 秒 | SS | 秒(00-59) | -| FF | 微秒(000000-999999) | | -| SSSSS | 午夜后的秒(0-86399) | | -| 上、下午 | AM或A.M. | 上午标识 | -| PM或P.M. | 下午标识 | | -| 年 | Y,YYY | 带逗号的年(4和更多位) | -| SYYYY | 公元前四位年 | | -| YYYY | 年(4和更多位) | | -| YYY | 年的后三位 | | -| YY | 年的后两位 | | -| Y | 年的最后一位 | | -| IYYY | ISO年(4位或更多位) | | -| IYY | ISO年的最后三位 | | -| IY | ISO年的最后两位 | | -| I | ISO年的最后一位 | | -| RR | 年的后两位(可在21世纪存储20世纪的年份) | | -| RRRR | 可接收4位年或两位年。若是两位,则和RR的返回值相同,若是四位,则和YYYY相同。 | | -| BC或B.C.AD或A.D. | 纪元标识。BC(公元前),AD(公元后)。 | | -| 月 | MONTH | 全长大写月份名(空白填充为9字符) | -| MON | 大写缩写月份名(3字符) | | -| MM | 月份数(01-12) | | -| RM | 罗马数字的月份(I-XII ;I=JAN)(大写) | | -| 天 | DAY | 全长大写日期名(空白填充为9字符) | -| DY | 缩写大写日期名(3字符) | | -| DDD | 一年里的日(001-366) | | -| DD | 一个月里的日(01-31) | | -| D | 一周里的日(1-7 ;周日是 1) | | -| 周 | W | 一个月里的周数(1-5)(第一周从该月第一天开始) | -| WW | 一年里的周数(1-53)(第一周从该年的第一天开始) | | -| IW | ISO一年里的周数(第一个星期四在第一周里) | | -| 世纪 | CC | 世纪(2位)(21 世纪从 2001-01-01 开始) | -| 儒略日 | J | 儒略日(自公元前 4712 年 1 月 1 日来的天数) | -| 季度 | Q | 季度 | - -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** +| 类别 | 模式 | 描述 | +| -------- | --------------------- | ------------------------------------------------------------ | +| 小时 | HH | 一天的小时数(01-12) | +| | HH12 | 一天的小时数(01-12) | +| | HH24 | 一天的小时数(00-23) | +| 分钟 | MI | 分钟(00-59) | +| 秒 | SS | 秒(00-59) | +| | FF | 微秒(000000-999999) | +| | SSSSS | 午夜后的秒(0-86399) | +| 上、下午 | AM或A.M. | 上午标识 | +| | PM或P.M. | 下午标识 | +| 年 | Y,YYY | 带逗号的年(4和更多位) | +| | SYYYY | 公元前四位年 | +| | YYYY | 年(4和更多位) | +| | YYY | 年的后三位 | +| | YY | 年的后两位 | +| | Y | 年的最后一位 | +| | IYYY | ISO年(4位或更多位) | +| | IYY | ISO年的最后三位 | +| | IY | ISO年的最后两位 | +| | I | ISO年的最后一位 | +| | RR | 年的后两位(可在21世纪存储20世纪的年份) | +| | RRRR | 可接收4位年或两位年。若是两位,则和RR的返回值相同,若是四位,则和YYYY相同。 | +| | BC或B.C.
AD或A.D. | 纪元标识。BC(公元前),AD(公元后)。 | +| 月 | MONTH | 全长大写月份名(空白填充为9字符) | +| | MON | 大写缩写月份名(3字符) | +| | MM | 月份数(01-12) | +| | RM | 罗马数字的月份(I-XII ;I=JAN)(大写) | +| 天 | DAY | 全长大写日期名(空白填充为9字符) | +| | DY | 缩写大写日期名(3字符) | +| | DDD | 一年里的日(001-366) | +| | DD | 一个月里的日(01-31) | +| | D | 一周里的日(1-7 ;周日是 1) | +| 周 | W | 一个月里的周数(1-5)(第一周从该月第一天开始) | +| | WW | 一年里的周数(1-53)(第一周从该年的第一天开始) | +| | IW | ISO一年里的周数(第一个星期四在第一周里) | +| 世纪 | CC | 世纪(2位)(21 世纪从 2001-01-01 开始) | +| 儒略日 | J | 儒略日(自公元前 4712 年 1 月 1 日来的天数) | +| 季度 | Q | 季度 | + +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** +> > 上表中RR计算年的规则如下: > > - 输入的两位年份在00~49之间: +> > 当前年份的后两位在00~49之间,返回值年份的前两位和当前年份的前两位相同; +> > 当前年份的后两位在50~99之间,返回值年份的前两位是当前年份的前两位加1。 +> > - 输入的两位年份在50~99之间: -> 当前年份的后两位在00~49之间,返回值年份的前两位是当前年份的前两位减1; -> - 当前年份的后两位在50~99之间,返回值年份的前两位和当前年份的前两位相同。 +> +> 当前年份的后两位在00\~49之间,返回值年份的前两位是当前年份的前两位减1; +> +> 当前年份的后两位在50~99之间,返回值年份的前两位和当前年份的前两位相同。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/9-type-conversion-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/9-type-conversion-functions.md index 779e3d8ed0e60c3bc09fb15bed44b6234392aab4..cc499697a00cf25cde7249bccb0e5a143c3b2518 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/9-type-conversion-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/9-type-conversion-functions.md @@ -372,9 +372,9 @@ date: 2021-04-20 (1 row) ``` -- to_clob(char/nchar/varchar/varchar2/nvarchar2/text/raw) +- to_clob(char/nchar/varchar/varchar2/nvarchar/nvarchar2/text/raw) - 描述:将RAW类型或者文本字符集类型CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR2、TEXT转成CLOB类型。 + 描述:将RAW类型或者文本字符集类型CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR、NVARCHAR2、TEXT转成CLOB类型。 返回值类型:clob @@ -809,7 +809,7 @@ date: 2021-04-20 - float8_bpchar - 描述:float4转换为bpchar。 + 描述:float8转换为bpchar。 参数:double precision @@ -817,7 +817,7 @@ date: 2021-04-20 - float8_interval - 描述:float4转换为interval。 + 描述:float8转换为interval。 参数:double precision diff --git a/product/zh/docs-mogdb/v3.0/toc.md b/product/zh/docs-mogdb/v3.0/toc.md index e2b6f7dda69625deae0e13a8ca7d90a98ae2642f..9f7fad10380460c3ab7773bcb9a23afd1351d849 100644 --- a/product/zh/docs-mogdb/v3.0/toc.md +++ b/product/zh/docs-mogdb/v3.0/toc.md @@ -39,6 +39,98 @@ + [Rust](/quick-start/mogdb-access/use-programming-language-to-access-mogdb/rust.md) + [NodeJS](/quick-start/mogdb-access/use-programming-language-to-access-mogdb/nodejs.md) + [使用样本数据集Mogila](/quick-start/mogila.md) ++ 特性描述 + + 高性能 + + [CBO优化器](/characteristic-description/high-performance/1-cbo-optimizer.md) + + [支持LLVM](/characteristic-description/high-performance/2-llvm.md) + + [向量化引擎](/characteristic-description/high-performance/3-vectorized-engine.md) + + [行列混合存储](/characteristic-description/high-performance/4-hybrid-row-column-store.md) + + [自适应压缩](/characteristic-description/high-performance/5-adaptive-compression.md) + + [SQL by pass](/characteristic-description/high-performance/6-sql-by-pass.md) + + [鲲鹏NUMA架构优化](/characteristic-description/high-performance/7-kunpeng-numa-architecture-optimization.md) + + [支持线程池高并发](/characteristic-description/high-performance/8-high-concurrency-of-thread-pools.md) + + [SMP并行执行](/characteristic-description/high-performance/9-smp-for-parallel-execution.md) + + [Xlog no Lock Flush](/characteristic-description/high-performance/10-xlog-no-lock-flush.md) + + [Parallel Page-based Redo For Ustore](/characteristic-description/high-performance/11-parallel-page-based-redo-for-ustore.md) + + [行存转向量化](/characteristic-description/high-performance/12-row-store-execution-to-vectorized-execution.md) + + 高可用 + + [主备机](/characteristic-description/high-availability/1-primary-standby.md) + + [逻辑复制](/characteristic-description/high-availability/2-logical-replication.md) + + [在线节点替换](/characteristic-description/high-availability/3-online-node-replacement.md) + + [逻辑备份](/characteristic-description/high-availability/4-logical-backup.md) + + [物理备份](/characteristic-description/high-availability/5-physical-backup.md) + + [作业失败自动重试](/characteristic-description/high-availability/6-automatic-job-retry-upon-failure.md) + + [极致RTO](/characteristic-description/high-availability/7-ultimate-rto.md) + + [级联备机](/characteristic-description/high-availability/8-cascaded-standby-server.md) + + [延时回放](/characteristic-description/high-availability/9-delayed-replay.md) + + [备机增加删除](/characteristic-description/high-availability/10-adding-or-deleting-a-standby-server.md) + + [延迟进入最大可用模式](/characteristic-description/high-availability/11-delaying-entering-the-maximum-availability-mode.md) + + [并行逻辑解码](/characteristic-description/high-availability/12-parallel-logical-decoding.md) + + [DCF](/characteristic-description/high-availability/13-dcf.md) + + [CM](/characteristic-description/high-availability/14-cm.md) + + [支持global syscache](/characteristic-description/high-availability/15-global-syscache.md) + + [支持备机build备机](/characteristic-description/high-availability/16-using-a-standby-node-to-build-a-standby-node.md) + + 维护性 + + [灰度升级](/characteristic-description/maintainability/1-gray-upgrade.md) + + [支持WDR诊断报告](/characteristic-description/maintainability/2-workload-diagnosis-report.md) + + [慢SQL诊断](/characteristic-description/maintainability/3-slow-sql-diagnosis.md) + + [Session性能诊断](/characteristic-description/maintainability/4-session-performance-diagnosis.md) + + [系统KPI辅助诊断](/characteristic-description/maintainability/5-system-kpi-aided-diagnosis.md) + + 数据库安全 + + [访问控制模型](/characteristic-description/database-security/1-access-control-model.md) + + [控制权和访问权分离](/characteristic-description/database-security/2-separation-of-control-and-access-permissions.md) + + [数据库认证机制](/characteristic-description/database-security/3-database-encryption-authentication.md) + + [数据加密存储](/characteristic-description/database-security/4-data-encryption-and-storage.md) + + [数据库审计](/characteristic-description/database-security/5-database-audit.md) + + [网络通信安全](/characteristic-description/database-security/6-network-communication-security.md) + + [资源标签机制](/characteristic-description/database-security/7-resource-label.md) + + [统一审计机制](/characteristic-description/database-security/8-unified-audit.md) + + [动态数据脱敏机制](/characteristic-description/database-security/9-dynamic-data-anonymization.md) + + [行级访问控制](/characteristic-description/database-security/10-row-level-access-control.md) + + [用户口令强度校验机制](/characteristic-description/database-security/11-password-strength-verification.md) + + [全密态数据库等值查询](/characteristic-description/database-security/12-equality-query-in-a-fully-encrypted-database.md) + + [账本数据库机制](/characteristic-description/database-security/13-ledger-database-mechanism.md) + + [透明数据加密](/characteristic-description/database-security/14-transparent-data-encryption.md) + + 企业级特性 + + [函数及存储过程支持](/characteristic-description/enterprise-level-features/1-support-for-functions-and-stored-procedures.md) + + [支持SQL hint](/characteristic-description/enterprise-level-features/2-sql-hints.md) + + [全文索引](/characteristic-description/enterprise-level-features/3-full-text-indexing.md) + + [Copy接口支持容错机制](/characteristic-description/enterprise-level-features/4-copy-interface-for-error-tolerance.md) + + [分区](/characteristic-description/enterprise-level-features/5-partitioning.md) + + [高级分析函数支持](/characteristic-description/enterprise-level-features/6-support-for-advanced-analysis-functions.md) + + [物化视图](/characteristic-description/enterprise-level-features/7-materialized-view.md) + + [支持HyperLogLog](/characteristic-description/enterprise-level-features/8-hyperloglog.md) + + [在线添加索引](/characteristic-description/enterprise-level-features/9-creating-an-index-online.md) + + [自治事务](/characteristic-description/enterprise-level-features/10-autonomous-transaction.md) + + [全局临时表](/characteristic-description/enterprise-level-features/11-global-temporary-table.md) + + [伪列ROWNUM](/characteristic-description/enterprise-level-features/12-pseudocolumn-rownum.md) + + [支持存储过程调试](/characteristic-description/enterprise-level-features/13-stored-procedure-debugging.md) + + [JDBC客户端负载均衡与读写分离](/characteristic-description/enterprise-level-features/14-jdbc-client-load-balancing-and-readwrite-isolation.md) + + [In-place Update存储引擎](/characteristic-description/enterprise-level-features/15-in-place-update-storage-engine.md) + + [发布订阅](/characteristic-description/enterprise-level-features/16-publication-subscription.md) + + [外键锁增强](/characteristic-description/enterprise-level-features/17-foreign-key-lock-enhancement.md) + + [支持OLTP场景数据压缩](/characteristic-description/enterprise-level-features/18-data-compression-in-oltp-scenarios.md) + + 应用开发接口 + + [支持标准SQL](/characteristic-description/application-development-interfaces/1-standard-sql.md) + + [支持标准开发接口](/characteristic-description/application-development-interfaces/2-standard-development-interfaces.md) + + [PG接口兼容](/characteristic-description/application-development-interfaces/3-postgresql-api-compatibility.md) + + [支持PL/Java](/characteristic-description/application-development-interfaces/4-pl-java.md) + + AI能力 + + AI4DB:数据库自治运维 + + [数据库指标采集、预测与异常监控](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/1-database-metric-collection-forecast-and-exception-detection.md) + + [慢SQL根因分析](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/2-root-cause-analysis-for-slow-sql-statements.md) + + [索引推荐](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/3-index-recommendation.md) + + [参数调优与诊断](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/4-parameter-tuning-and-diagnosis.md) + + [慢SQL发现](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/5-slow-sql-statement-discovery.md) + + [DB4AI:数据库驱动AI](/characteristic-description/ai-capabilities/db4ai-database-driven-ai.md) + + AI in DB:数据库内AI功能 + + [Predictor:AI查询时间预测](/characteristic-description/ai-capabilities/ai-in-db/predictor-ai-query-time-forecasting.md) + + 工具链 + + [MySQL->MogDB迁移工具chameleon](/characteristic-description/tool-chain/mysql-to-mogdb-migration-tool-chameleon.md) + + [MogDB客户端工具DataStudio](/characteristic-description/tool-chain/mogdb-client-tool-datastudio.md) + + 中间件 + + [分布式数据库能力](/characteristic-description/middleware/distributed-database-capability.md) + + [使用kubernetes部署分布式数据库](/characteristic-description/middleware/deploying-a-distributed-database-using-kubernetes.md) + 安装指南 + [容器化安装](/installation-guide/docker-installation/docker-installation.md) + 极简安装 @@ -687,6 +779,8 @@ + [动态数据脱敏函数](/reference-guide/functions-and-operators/29.1-dynamic-data-masking-functions.md) + [其他系统函数](/reference-guide/functions-and-operators/29-other-system-functions.md) + [内部函数](/reference-guide/functions-and-operators/30-internal-functions.md) + + [Global SysCache特性函数](/reference-guide/functions-and-operators/32-global-syscache-feature-functions.md) + + [数据损坏检测修复函数](/reference-guide/functions-and-operators/33-data-damage-detection-and-repair-functions.md) + [废弃函数](/reference-guide/functions-and-operators/31-obsolete-functions.md) + 支持的数据类型 + [数值类型](/reference-guide/supported-data-types/1-numeric-data-types.md) diff --git a/product/zh/docs-mogdb/v3.0/toc_characteristic_description.md b/product/zh/docs-mogdb/v3.0/toc_characteristic_description.md new file mode 100644 index 0000000000000000000000000000000000000000..ad0c5c3973ab446e4a2fe8c0127a577c25cff5f0 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/toc_characteristic_description.md @@ -0,0 +1,98 @@ + + + +# MogDB Documentation 3.0 + +## 特性描述 + ++ 高性能 + + [CBO优化器](/characteristic-description/high-performance/1-cbo-optimizer.md) + + [支持LLVM](/characteristic-description/high-performance/2-llvm.md) + + [向量化引擎](/characteristic-description/high-performance/3-vectorized-engine.md) + + [行列混合存储](/characteristic-description/high-performance/4-hybrid-row-column-store.md) + + [自适应压缩](/characteristic-description/high-performance/5-adaptive-compression.md) + + [SQL by pass](/characteristic-description/high-performance/6-sql-by-pass.md) + + [鲲鹏NUMA架构优化](/characteristic-description/high-performance/7-kunpeng-numa-architecture-optimization.md) + + [支持线程池高并发](/characteristic-description/high-performance/8-high-concurrency-of-thread-pools.md) + + [SMP并行执行](/characteristic-description/high-performance/9-smp-for-parallel-execution.md) + + [Xlog no Lock Flush](/characteristic-description/high-performance/10-xlog-no-lock-flush.md) + + [Parallel Page-based Redo For Ustore](/characteristic-description/high-performance/11-parallel-page-based-redo-for-ustore.md) + + [行存转向量化](/characteristic-description/high-performance/12-row-store-execution-to-vectorized-execution.md) ++ 高可用 + + [主备机](/characteristic-description/high-availability/1-primary-standby.md) + + [逻辑复制](/characteristic-description/high-availability/2-logical-replication.md) + + [在线节点替换](/characteristic-description/high-availability/3-online-node-replacement.md) + + [逻辑备份](/characteristic-description/high-availability/4-logical-backup.md) + + [物理备份](/characteristic-description/high-availability/5-physical-backup.md) + + [作业失败自动重试](/characteristic-description/high-availability/6-automatic-job-retry-upon-failure.md) + + [极致RTO](/characteristic-description/high-availability/7-ultimate-rto.md) + + [级联备机](/characteristic-description/high-availability/8-cascaded-standby-server.md) + + [延时回放](/characteristic-description/high-availability/9-delayed-replay.md) + + [备机增加删除](/characteristic-description/high-availability/10-adding-or-deleting-a-standby-server.md) + + [延迟进入最大可用模式](/characteristic-description/high-availability/11-delaying-entering-the-maximum-availability-mode.md) + + [并行逻辑解码](/characteristic-description/high-availability/12-parallel-logical-decoding.md) + + [DCF](/characteristic-description/high-availability/13-dcf.md) + + [CM](/characteristic-description/high-availability/14-cm.md) + + [支持global syscache](/characteristic-description/high-availability/15-global-syscache.md) + + [支持备机build备机](/characteristic-description/high-availability/16-using-a-standby-node-to-build-a-standby-node.md) ++ 维护性 + + [灰度升级](/characteristic-description/maintainability/1-gray-upgrade.md) + + [支持WDR诊断报告](/characteristic-description/maintainability/2-workload-diagnosis-report.md) + + [慢SQL诊断](/characteristic-description/maintainability/3-slow-sql-diagnosis.md) + + [Session性能诊断](/characteristic-description/maintainability/4-session-performance-diagnosis.md) + + [系统KPI辅助诊断](/characteristic-description/maintainability/5-system-kpi-aided-diagnosis.md) ++ 数据库安全 + + [访问控制模型](/characteristic-description/database-security/1-access-control-model.md) + + [控制权和访问权分离](/characteristic-description/database-security/2-separation-of-control-and-access-permissions.md) + + [数据库认证机制](/characteristic-description/database-security/3-database-encryption-authentication.md) + + [数据加密存储](/characteristic-description/database-security/4-data-encryption-and-storage.md) + + [数据库审计](/characteristic-description/database-security/5-database-audit.md) + + [网络通信安全](/characteristic-description/database-security/6-network-communication-security.md) + + [资源标签机制](/characteristic-description/database-security/7-resource-label.md) + + [统一审计机制](/characteristic-description/database-security/8-unified-audit.md) + + [动态数据脱敏机制](/characteristic-description/database-security/9-dynamic-data-anonymization.md) + + [行级访问控制](/characteristic-description/database-security/10-row-level-access-control.md) + + [用户口令强度校验机制](/characteristic-description/database-security/11-password-strength-verification.md) + + [全密态数据库等值查询](/characteristic-description/database-security/12-equality-query-in-a-fully-encrypted-database.md) + + [账本数据库机制](/characteristic-description/database-security/13-ledger-database-mechanism.md) + + [透明数据加密](/characteristic-description/database-security/14-transparent-data-encryption.md) ++ 企业级特性 + + [函数及存储过程支持](/characteristic-description/enterprise-level-features/1-support-for-functions-and-stored-procedures.md) + + [支持SQL hint](/characteristic-description/enterprise-level-features/2-sql-hints.md) + + [全文索引](/characteristic-description/enterprise-level-features/3-full-text-indexing.md) + + [Copy接口支持容错机制](/characteristic-description/enterprise-level-features/4-copy-interface-for-error-tolerance.md) + + [分区](/characteristic-description/enterprise-level-features/5-partitioning.md) + + [高级分析函数支持](/characteristic-description/enterprise-level-features/6-support-for-advanced-analysis-functions.md) + + [物化视图](/characteristic-description/enterprise-level-features/7-materialized-view.md) + + [支持HyperLogLog](/characteristic-description/enterprise-level-features/8-hyperloglog.md) + + [在线添加索引](/characteristic-description/enterprise-level-features/9-creating-an-index-online.md) + + [自治事务](/characteristic-description/enterprise-level-features/10-autonomous-transaction.md) + + [全局临时表](/characteristic-description/enterprise-level-features/11-global-temporary-table.md) + + [伪列ROWNUM](/characteristic-description/enterprise-level-features/12-pseudocolumn-rownum.md) + + [支持存储过程调试](/characteristic-description/enterprise-level-features/13-stored-procedure-debugging.md) + + [JDBC客户端负载均衡与读写分离](/characteristic-description/enterprise-level-features/14-jdbc-client-load-balancing-and-readwrite-isolation.md) + + [In-place Update存储引擎](/characteristic-description/enterprise-level-features/15-in-place-update-storage-engine.md) + + [发布订阅](/characteristic-description/enterprise-level-features/16-publication-subscription.md) + + [外键锁增强](/characteristic-description/enterprise-level-features/17-foreign-key-lock-enhancement.md) + + [支持OLTP场景数据压缩](/characteristic-description/enterprise-level-features/18-data-compression-in-oltp-scenarios.md) ++ 应用开发接口 + + [支持标准SQL](/characteristic-description/application-development-interfaces/1-standard-sql.md) + + [支持标准开发接口](/characteristic-description/application-development-interfaces/2-standard-development-interfaces.md) + + [PG接口兼容](/characteristic-description/application-development-interfaces/3-postgresql-api-compatibility.md) + + [支持PL/Java](/characteristic-description/application-development-interfaces/4-pl-java.md) ++ AI能力 + + AI4DB:数据库自治运维 + + [数据库指标采集、预测与异常监控](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/1-database-metric-collection-forecast-and-exception-detection.md) + + [慢SQL根因分析](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/2-root-cause-analysis-for-slow-sql-statements.md) + + [索引推荐](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/3-index-recommendation.md) + + [参数调优与诊断](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/4-parameter-tuning-and-diagnosis.md) + + [慢SQL发现](/characteristic-description/ai-capabilities/ai4db-autonomous-database-o-m/5-slow-sql-statement-discovery.md) + + [DB4AI:数据库驱动AI](/characteristic-description/ai-capabilities/db4ai-database-driven-ai.md) + + AI in DB:数据库内AI功能 + + [Predictor:AI查询时间预测](/characteristic-description/ai-capabilities/ai-in-db/predictor-ai-query-time-forecasting.md) ++ 工具链 + + [MySQL->MogDB迁移工具chameleon](/characteristic-description/tool-chain/mysql-to-mogdb-migration-tool-chameleon.md) + + [MogDB客户端工具DataStudio](/characteristic-description/tool-chain/mogdb-client-tool-datastudio.md) ++ 中间件 + + [分布式数据库能力](/characteristic-description/middleware/distributed-database-capability.md) + + [使用kubernetes部署分布式数据库](/characteristic-description/middleware/deploying-a-distributed-database-using-kubernetes.md) \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/toc_system-catalogs-and-functions.md b/product/zh/docs-mogdb/v3.0/toc_system-catalogs-and-functions.md index f3d6aa2fb5a9c4b31976669966fd542961471e7d..bc0eaf366ac67add87b74b82dffad23c10ae5bcc 100644 --- a/product/zh/docs-mogdb/v3.0/toc_system-catalogs-and-functions.md +++ b/product/zh/docs-mogdb/v3.0/toc_system-catalogs-and-functions.md @@ -245,4 +245,6 @@ + [动态数据脱敏函数](./reference-guide/functions-and-operators/29.1-dynamic-data-masking-functions.md) + [其他系统函数](./reference-guide/functions-and-operators/29-other-system-functions.md) + [内部函数](./reference-guide/functions-and-operators/30-internal-functions.md) + + [Global SysCache特性函数](/reference-guide/functions-and-operators/32-global-syscache-feature-functions.md) + + [数据损坏检测修复函数](/reference-guide/functions-and-operators/33-data-damage-detection-and-repair-functions.md) + [废弃函数](./reference-guide/functions-and-operators/31-obsolete-functions.md)