# 云数据库 GaussDB > 新一代企业级分布式关系型数据库产品 ## 服务公告 - [漏洞修复策略](https://support.huaweicloud.com/bulletin-gaussdb/gaussdb-bulletin_0002.md): 本服务感知漏洞后,会遵照华为云漏洞管理修补策略(参考“《华为云安全白皮书》> 漏洞管理”章节) 进行修补或规避,该章节会对重大漏洞进行公告。对于其他漏洞,请参考内核版本发布记录,根据漏洞风险情况及时升级。 - [GaussDB版本策略](https://support.huaweicloud.com/bulletin-gaussdb/gaussdb-bulletin_0006.md): GaussDB是华为自主创新研发的分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。本文将为您介绍GaussDB集群的版本生命周期及策略。GaussDB采用点分式版本号。格式为:V2.0-A.BCD。其中:"V2.0":代表GaussDB数据 - [V2.0-3.x版本](https://support.huaweicloud.com/bulletin-gaussdb/gaussdb-bulletin_0009.md): 本章节介绍云数据库 GaussDB的内核V2.0-3.x版本更新说明。版本号说明、版本映射关系以及如何查看版本号请参考数据库引擎版本说明。 - [V2.0-2.x版本](https://support.huaweicloud.com/bulletin-gaussdb/gaussdb-bulletin_0010.md): 本章节介绍云数据库 GaussDB的内核V2.0-2.x版本更新说明。版本号说明以及如何查看版本号请参考数据库引擎版本说明。 - [V2.0-8.x版本](https://support.huaweicloud.com/bulletin-gaussdb/gaussdb-bulletin_0015.md): 本章节介绍云数据库 GaussDB的内核V2.0-8.x版本更新说明。版本号说明、版本映射关系以及如何查看版本号请参考数据库引擎版本说明。V2.0-8.201.0版本更新说明时间需求名称描述规格及约束2024.11M兼容隔离框架-集中式大行客户语法兼容条目此特性在现有M兼容隔离框架的基础上,补充语法条目支持:支持field函数。支持DML - [V2.0-10.x版本](https://support.huaweicloud.com/bulletin-gaussdb/gaussdb-bulletin_0018.md): 本章节介绍云数据库 GaussDB V2.0-10.x版本的更新说明。版本号说明、版本映射关系以及如何查看版本号请参考数据库引擎版本说明。 ## 产品介绍 - [图解云数据库GaussDB](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_002.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [什么是云数据库GaussDB](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_003.md): GaussDB是华为自主创新研发的企业级关系型数据库。该产品支持分布式事务,同城跨AZ部署,数据0丢失,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。您可以通过云数据库GaussDB成长地图快速了解GaussD - [应用场景](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_004.md): 交易型应用大并发、大数据量、以联机事务处理为主的交易型应用,如政务、金融、电商、O2O、电信CRM/计费等,服务能力支持高扩展、弹性扩缩,应用可按需选择不同的部署规模。大并发、大数据量、以联机事务处理为主的交易型应用,如政务、金融、电商、O2O、电信CRM/计费等,服务能力支持高扩展、弹性扩缩,应用可按需选择不同的部署规模。详单查询具备P - [产品优势](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_007.md): 高安全GaussDB拥有TOP级的商业数据库安全特性,能够满足政企和金融级客户的核心安全诉求。安全特性包括:数据动态脱敏,行级访问控制,密态计算。GaussDB拥有TOP级的商业数据库安全特性,能够满足政企和金融级客户的核心安全诉求。安全特性包括:数据动态脱敏,行级访问控制,密态计算。健全的工具与服务化能力GaussDB已经拥有华为云,商 - [数据库实例状态](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_009.md): 数据库实例状态是数据库实例的运行情况。用户可以使用管理控制台和API操作查看数据库实例状态。 - [数据库实例规格](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_010.md): GaussDB的实例规格CPU架构分为X86架构和ARM架构,不同架构支持的区域请参见表1,支持的规格列表请参见表2。X86架构:独享型(1:4)、独享型(1:8)、通用型(1:4)ARM架构:鲲鹏独享型(1:4)、鲲鹏独享型(1:8)其中,“1:4”和“1:8”表示vCPU与内存的比例关系。 - [数据库实例存储类型](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_011.md): 数据库系统通常是IT系统最为重要的系统,对存储IO性能要求高,GaussDB支持超高IO和“极速型SSD”存储类型。超高IO:超高性能云硬盘,可用于企业关键性业务,适合高吞吐、低时延的工作负载。具体请参见《云硬盘产品介绍》中“磁盘类型及性能介绍”中“超高IO”的内容。极速型SSD:适用于需要超大带宽和超低时延的场景。具体请参见《云硬盘产品 - [数据库引擎版本说明](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_012.md): GaussDB采用点分式版本号。格式为:V2.0-A.BCD。其中:"V2.0":代表GaussDB数据库的第2代体系架构。“A”:表示年度需求基线版本。“BCD”:首位(B)代表半年度需求基线版本,第二位(C)和第三位(D)代表三方验证适配补丁。GaussDB版本的对应关系如表1所示。GaussDB数据库引擎版本和内核引擎版本查询方法请 - [数据库实例类型](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_013.md): GaussDB的最小管理单元是实例,一个实例代表了一个独立运行的数据库。GaussDB的实例类型如表1所示。OM:运维管理模块(Operation Manager)。提供集群日常运维、配置管理的管理接口、工具。CM:集群管理模块(Cluster Manager)。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运 - [存储引擎(分布式)](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_035.md): 数据库存储引擎负责数据的存储、检索和管理。从整个数据库服务的组成架构来看,存储引擎向上对接SQL引擎,为SQL引擎提供或接收标准化的数据格式(元组或向量数组),向下对接存储介质,按照特定的数据组织方式,以页面、压缩单元(Compress Unit)或其他形式为单位,通过存储介质提供的特定接口完成读写操作。GaussDB通过静态编译使数据库 - [存储引擎(集中式)](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_036.md): 数据库存储引擎负责数据的存储、检索和管理。从整个数据库服务的组成架构来看,存储引擎向上对接SQL引擎,为SQL引擎提供或接收标准化的数据格式(元组或向量数组),向下对接存储介质,按照特定的数据组织方式,以页面、压缩单元(Compress Unit)或其他形式为单位,通过存储介质提供的特定接口完成读写操作。GaussDB通过静态编译使数据库 - [闪回恢复(分布式)](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_037.md): 闪回恢复功能是数据库恢复技术的一环,可以有选择性地撤销一个已提交的事务,将数据从人为不正确的操作中进行恢复。按照恢复对象与底层机制的不同,GaussDB闪回恢复主要分为:闪回查询、闪回表、闪回DROP/TRUNCATE和闪回库。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪 - [闪回恢复(集中式)](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_038.md): 闪回恢复功能是数据库恢复技术的一环,可以有选择性地撤销一个已提交的事务,将数据从人为不正确的操作中进行恢复。按照恢复对象与底层机制的不同,GaussDB闪回恢复主要分为:闪回查询、闪回表、闪回DROP/TRUNCATE和闪回库。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪 - [VACUUM(分布式)](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_039.md): 在GaussDB中,当数据被更新或删除时,系统并不会立即释放物理空间,而是将其标记为“可重用”。随着时间推移,表中的死元组会越来越多。死元组(dead tuples)是指已被删除或因更新而被新版本覆盖,不再被任何活跃事务引用的历史数据行。上述情况不仅会导致存储空间利用率下降,也可能影响查询性能,因为查询需要遍历这些无用的元组。而VACUU - [VACUUM(集中式)](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_040.md): 在GaussDB中,当数据被更新或删除时,系统并不会立即释放物理空间,而是将其标记为“可重用”。随着时间推移,表中的死元组会越来越多。死元组(dead tuples)是指已被删除或因更新而被新版本覆盖,不再被任何活跃事务引用的历史数据行。上述情况不仅会导致存储空间利用率下降,也可能影响查询性能,因为查询需要遍历这些无用的元组。而VACUU - [服务的访问控制](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_051.md): 用户访问云数据库 GaussDB时支持对数据库用户进行身份验证,包含密码验证和IAM验证两种方式。密码验证您需要对数据库实例进行管理,使用数据管理服务(Data Admin Service)登录数据库时,需要对账号密码进行验证,验证成功后方可进行操作。您需要对数据库实例进行管理,使用数据管理服务(Data Admin Service)登录 - [数据保护技术](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_052.md): GaussDB通过多种数据保护手段和特性,保障存储在GaussDB中的数据安全可靠。 - [审计与日志](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_053.md): 云审计服务(Cloud Trace Service,CTS),是华为云安全解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。CTS的详细介绍和开通配置方法,请参见CTS快速入门。通过云审计服务,您可以记录与GaussDB实例相关的操作事件,便于日后 - [监控安全风险](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_054.md): 云监控服务为用户提供一个针对云数据库、云服务器等资源的立体化监控平台。使您全面了解云上的资源使用情况、业务的运行状况,并及时收到异常告警做出反应,保证业务顺畅运行。GaussDB提供基于云监控服务的资源和操作监控能力,帮助用户监控账号下的GaussDB实例,执行自动实时监控、告警和通知操作。用户可以实时掌握实例运行过程中产生的运行指标和存 - [故障恢复](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_055.md): GaussDB会在数据库实例的备份时段中创建数据库实例的自动备份。系统根据您指定的备份保留期(1-732天)保存数据库实例的自动备份。具体请参见自动备份。GaussDB提供了多种方式恢复实例的数据,用以满足不同的使用场景:恢复数据到当前实例、新实例或者已有实例数据库实例恢复到指定时间点可用区指在同一区域下,电力、网络隔离的物理区域,可用区 - [认证证书](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_056.md): 华为云服务及平台通过了多项国内外权威机构(ISO/SOC/PCI等)的安全合规认证,用户可自行申请下载合规资质证书。合规证书下载华为云还提供以下资源来帮助用户满足合规性要求,具体请查看资源中心。资源中心华为云安全服务提供了网络安全专用产品安全检测证书、软件著作权等证书,供用户下载和参考。具体请查看合规资质证书。合规资质证书 - [权限管理](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_057.md): 如果您需要对华为云上购买的GaussDB资源,为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全地控制华为云资源的访问。如果华为账号已经能满 - [约束与限制](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_070.md): 云数据库 GaussDB在使用上有一些固定限制,用来提高实例的稳定性和安全性。GaussDB 单副本部署实例禁止在生产环境使用,如在生产环境使用,不承诺SLA。且在功能上有相关约束,具体约束限制请参考表6。 - [GaussDB与其他服务的关系](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_072.md): GaussDB与其他服务的关系如表1。 - [数据库产品类型](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_693.md): 云数据库GaussDB提供基础版和企业版两种产品类型。主要区别在于,企业版提供多项高级特性,包括高级压缩、动态脱敏和防篡改,基础版仅支持高级压缩。基础版的定位为GaussDB性价比版本,对高级特性做了裁剪,相比企业版性能相当但价格更低,主要面向价格敏感且对高级特性无诉求的用户。基础版和企业版的具体差异请参见表1。 - [兼容性说明](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_699.md): 本节主要介绍GaussDB数据库的Oracle兼容模式与原生Oracle数据库之间的兼容性对比,以及GaussDB的MySQL兼容模式与原生MySQL数据库的兼容性对比。GaussDB数据库在基本功能(数据类型、SQL、数据库对象等)和PL/SQL方面与Oracle数据库基本兼容。但是由于架构设计方面的差异,还是存在一些不兼容的项。我们将 - [产品功能](https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_01_891.md): 云数据库GaussDB提供包年/包月、按需计费两种计费模式,以满足不同场景下的用户需求。包年/包月是一种预付费模式,即先付费再使用,按照订单的购买周期进行结算,因此在购买之前,您必须确保账户余额充足。按需计费是一种后付费模式,即先使用再付费,按照云数据库实际使用时长计费。在购买云数据库后,如果发现当前计费模式无法满足业务需求,您还可以变更 ## 开发指南(分布式_V2.0-10.x) - [两地三中心跨Region容灾计划内倒换switchover流程异常](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-09-0116.md): 现象一:计划内switchover中主集群执行命令返回如下错误,提示主集群产生一致性点失败。Result exception error : Failed to generate switchover barrier before switchover计划内switchover中主集群执行命令返回如下错误,提示主集群产生一致性点失败。Re - [容灾演练介绍](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0457.md): 使用计划内倒换switchover功能可实现容灾演练。该操作可实现主备集群角色互换,原灾备集群升主对外提供服务,原主集群降备。该功能执行过程保证无数据丢失,即RPO=0。 - [前置检查项](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0458.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [执行切换](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0459.md): 满足前置检查条件,通过以下接口执行切换:OM Agent URI /v1/om/agent/mgr/cluster/streaming_disaster_recovery_switchover执行主备切换。 - [容灾演练后置检查](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0460.md): 容灾集群执行完容灾switchover后,通过 OM Agent URI /v1/om/agent/mgr/cluster/dr_cluster_postcheck检查集群状态,集群类型,容灾状态等信息,并上报未参与容灾切换或者容灾升主的实例ID等。相关信息用于接口调用方核查流程执行结果,决策修复策略。接口返回结果示例:cluster_s - [组件异常](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0462.md): 未参与容灾切换的实例ID使用后置检查接口上报后,可以通过 OM Agent URI /v1/om/agent/mgr/cluster/repair进行修复。修复场景: - [集群异常](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0463.md): 容灾主备集群switchover切换时,由于异地网络异常、集群组件异常等原因导致切换异常失败,可通过 OM Agent URI /v1/om/agent/mgr/cluster/dr_cluster_manual_recovery恢复集群为容灾主集群或者灾备集群。针对无主场景(两个灾备集群),调用内核修复接口进行修复,优先快速恢复原主集群 - [容灾演练介绍](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0490.md): 使用计划内主备集群switchover切换功能可实现容灾演练。该操作可实现主备集群角色互换,原灾备集群升主对外提供服务,原主集群降备。该功能执行过程保证无数据丢失,即RPO=0。 - [前置检查项](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0491.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [执行切换](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0492.md): 满足前置检查条件,通过以下接口执行切换:OM Agent URI /v1/om/agent/mgr/cluster/dorado_switch执行主备集群计划内切换。 - [容灾演练后置检查](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0493.md): 通过OM Agent URI /v1/om/agent/mgr/cluster/dr_cluster_postcheck执行容灾演练后置检查。后台执行后置检查参考:按主集群:curl -H "Content-Type:application/json" -d '{"drMode": " dorado_cluster ", "drOptio - [组件异常](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0495.md): 依据后置检查接口(参见容灾演练后置检查)的返回的以下值是否为空,针对异常组件进行修复:not_in_switchover_instance_ids:未参与主备倒换的组件实例ID。incorrect_params_instance_ids:参数配置错误的组件实例ID。节点修复接口:POST /v1/om/agent/mgr/cluster/ - [集群异常](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-10-0496.md): 容灾主备集群switchover切换,由于异地网络异常、集群组件异常等原因导致切换异常失败,可通过该接口恢复集群为容灾主集群或者灾备集群。可使用“容灾切换异常场景集群修复”接口进行修复。集群修复接口:POST /v1/om/agent/mgr/cluster/dr_cluster_manual_recovery。POST /v1/om/a - [数据库逻辑结构图](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0004.md): 集群的每个DN(Data Node,数据节点)负责存储数据,其存储介质是磁盘,本节主要从逻辑视角介绍每个DN上有哪些对象,以及这些对象之间的关系。另外介绍数据在不同节点的分布方式。数据库逻辑结构如图1所示。Tablespace,即表空间,表空间是一个目录,集群中可以存在多个表空间,其中存储的是它所包含的数据库的各种物理文件。每个表空间可以 - [数据查询请求处理过程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0005.md): GaussDB服务响应流程涉及到客户端、Coordinator、GTM、datanode等组件。具体流程请参见图1。 - [管理事务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0006.md): 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。GaussDB数据库支持的事务控制命令有启动、设置、提交、回滚。GaussDB数据库支持的事务隔离级别有READ COMMITTED、REPEATABLE READ和SERIALIZABLE,SERIALIZABLE等价于REPEATABLE REA - [默认权限机制](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0009.md): 数据库对象创建后,进行对象创建的用户就是该对象的所有者。集群安装后默认情况下,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户,请参见《参考》中 “SQL参考 > SQL语法 > G> GRANT”章节。为使其他用户能够使用 - [管理员](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0010.md): 集群安装过程中自动生成的账户称为初始用户。初始用户也是系统管理员、安全管理员、审计管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。如果安装时不设置初始用户名称,则该账户与进行集群安装的操作系统用户同名。如果在安装集群时不设置初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端修 - [用户](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0012.md): 使用CREATE USER和ALTER USER可以创建和管理数据库用户。非透明多写特性下数据库集群包含一个或多个数据库。用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的数据库。在用户登录GaussDB时会对其进行身份验证。用户可以拥有数据库和数据库对象( - [角色](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0013.md): 通过GRANT将角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。在角色级别授予或撤销权限时,这些更改将作用到角色下的所有成员。GaussDB提供了一个隐式定义的拥有所有角色的组PUBLIC, - [Schema](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0014.md): Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。每个数据库包含一个或多个Schema。数据库中的每个Schema包含表和其他类型的对象。数据库创建初始,默认具有一个名为public的公共Schema,所 - [用户权限设置](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0015.md): 给用户直接授予某对象的权限,请参见《参考》中 “SQL参考 > SQL语法 > G > GRANT”章节。将Schema中的表或者视图对象授权给其他用户或角色时,需要将表或视图所属Schema的USAGE权限同时授予该用户或角色。否则用户或角色将只能看到这些对象的名称,并不能实际进行对象访问。例如,下面示例将Schema tpcds的权限 - [行级访问控制](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0016.md): 行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Lev - [数据库审计](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0017.md): 数据库审计功能对数据库系统的安全性至关重要。数据库审计管理员可以利用审计日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。关于审计功能,用户需要了解以下几点内容:审计总开关GUC参数audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。 - [使用gsql连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0020.md): gsql是GaussDB提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。缺省情况下,客户端连接数据库后处于空闲状态时会根据GUC参数session_timeout的默认值自动断开连接。如果要关闭超时设置,设置GUC参数session_timeout为0即可。已联系管理员获取连接 - [应用程序接口](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0021.md): 用户可以使用标准的数据库应用程序接口(如ODBC、JDBC等),开发基于GaussDB的应用程序。每个应用程序是一个独立的GaussDB开发项目。应用程序通过API与数据库进行交互,在避免了应用程序直接操作数据库系统的同时,增强了应用程序的可移植性、扩展性和可维护性。表1为GaussDB所支持的应用程序接口及其下载地址。使用JDBC和OD - [创建数据库用户](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0023.md): 默认只有集群安装时创建的管理员用户可以访问初始数据库,您还可以创建其他数据库用户账号。当结果显示为如下信息,则表示创建成功。如上创建了一个用户名为joe,密码为********的用户。执行如下命令设置joe用户为系统管理员。非透明多写特性下,使用GRANT命令进行相关权限设置,具体操作请参见《参考》中“SQL参考 > SQL语法 > G - [管理数据库-非透明多写](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0024.md): 用户需具备数据库创建权限或系统管理员权限方可执行数据库创建操作,具体权限授予方法请参见用户及权限。初始时,GaussDB包含四个模板数据库template0、template1、templatea、templatem,以及一个默认的用户数据库postgres。CREATE DATABASE实际上通过复制模板数据库来创建新数据库。默认复制t - [管理表空间](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0026.md): 非透明多写特性下:通过使用表空间,管理员可以控制一个数据库安装的磁盘布局。这样有以下优点:如果初始化数据库所在的分区或者表空间已满,又不能逻辑上扩展更多空间,可以在不同的分区上创建和使用表空间,直到系统重新配置空间。表空间允许管理员根据数据库对象的使用模式安排数据位置,从而提高性能。一个频繁使用的索引可以存储在性能稳定且运算速度较快的磁盘 - [创建表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0028.md): 表是建立在数据库中的,在不同的数据库中可以存放相同的表,甚至可以通过使用模式在同一个数据库中创建相同名称的表。执行如下命令创建表。gaussdb=# CREATE TABLE customer_t1 ( c_customer_sk integer, c_customer_id - [向表中插入数据](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0029.md): 在创建一个表后,表中并没有数据,在使用这个表之前,需要向表中插入数据。本小节介绍如何使用INSERT命令插入一行或多行数据,及从指定表插入数据。如果有大量数据需要批量导入表中请联系管理员处理。服务端与客户端使用不同的字符集时,两者字符集中单个字符的长度也会不同,客户端输入的字符串会以服务端字符集的格式进行处理,所以产生的最终结果可能会与预 - [更新表中数据](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0030.md): 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。使用UPDATE命令更新现有行,需要提供以下三种信息:表的名称和要更新的字段名字段的新值要更新的行SQL通常不会为数据行提供唯一标识,因此更新操作需通过WHERE子句的条件表达式定位目标行。若表中定义主键, - [查看数据](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0031.md): 使用系统表pg_tables查询数据库所有表的信息。gaussdb=# SELECT * FROM pg_tables;使用gsql的\d+命令查询表的属性。gaussdb=# \d+ customer_t1执行如下命令查询表customer_t1的数据量。gaussdb=# SELECT count(*) FROM customer_t - [删除表中数据](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0032.md): 在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行删除。SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。执行DELETE命令删除行,如删除表customer_t1中所有c_customer_sk为3869的记录 - [查看系统表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0033.md): 除了创建的表以外,数据库还包含很多系统表。这些系统表包含集群安装信息以及GaussDB上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。系统表和系统视图(请参见《参考》中“系统表和系统视图”章节)中每个表的说明指出了表是对所有用户可见还是只对初始化用户可见。以初始化用户身份登录才能查询只对初始化用户可见的表。Gaus - [管理Schema](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0035.md): Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。 管理Schema包括:创建Schema、使用Schema、删除Schema、设置Schema的搜索路径以及Schema的权限控制。数据库集群包含一个或多 - [管理分区表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0036.md): GaussDB数据库支持的分区表为范围分区表、列表分区表和哈希分区表。范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式被广泛应用,并且分区键经常采用日期,例如将销售数据按照月份进行分区。列表分区表:将数据中包含的键值分别存储在不同的分区中,依次将数据映射到每一个分区,分区中包含的键值由创 - [管理索引](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0037.md): 索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。因此,在创建索引前需评估是否创建索引,需决策索引字段的选择。需要分析应用程序的业务处理、数据使用、经常被用作查询的条件或者被要求排序的字段来确定是否建立索引。索引建立在数据库表中的某些列上。因此,在创建索引时,需要评估目标列的选择标准。可以通过以下条件判断是否创建索 - [管理视图](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0038.md): 当用户需要频繁查询多张表的特定字段组合时,可通过定义视图来避免重复编写查询语句。视图通过虚拟表抽象底层表结构,简化常用查询操作。视图是一种逻辑表,与物理存储的基本表不同,其数据不实际驻留于磁盘。数据库仅保存视图的查询定义,实际数据始终保留在关联的基础表中。当基础表数据发生变更时,视图查询结果将动态同步这些变化。视图如同一个实时数据窗口,允 - [管理序列](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0039.md): 序列Sequence是用来产生唯一整数的数据库对象。声明了NO CYCLE时,序列的值是按照一定规则自增的整数。因为自增所以不重复,因此Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。通过序列使某字段成为唯一标识符的方法有两种:声明字段的类型为序列整型,由数据库在后台自动创建一个对应的Sequence。使用CRE - [管理定时任务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0040.md): 当客户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以客户经常选择在晚上执行,无形中增加了客户的工作量。因此GaussDB数据库兼容ORA数据库中定时任务的功能,可以由客户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而可以减少客户运维的 - [管理权限](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0041.md): 设置或更改数据库用户或角色权限,可以使用DCL(Data Control Language,数据控制语言)语句。数据库对象创建后,创建该对象的用户即成为其所有者。数据库安装后,默认未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和删除对象,以及通过GRANT将对 - [使用存储过程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0042.md): 商业规则和业务逻辑可以通过程序存储在GaussDB数据库中,这个程序就是存储过程。存储过程是SQL和PL/SQL的组合。存储过程可以将执行商业规则的代码从应用程序中移动到数据库,从而实现代码的一次存储,供多个程序使用。详细使用方法请参见《参考》中“存储过程”章节。PACKAGE是一组相关存储过程、函数、变量、常量和游标等PL/SQL程序的 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0044.md): 本规范以产品生命周期为主线,详细描述产品设计和开发流程过程中与数据库相关的设计和开发规范。规范以提高可读性、代码质量为原则,强调实用性、可操作性,对数据库开发容易产生问题的地方做出了明确的规定。主要包括下列内容:设计规范包括:数据库设计、性能设计。编程规范包括:排版、命名、注释、语法、脚本、数据库编程、安装部署和安全规范。同时,在必要时, - [基本规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0046.md): 【规则】数据库价值特性。数据库价值特性推荐特性分类特性列表说明表类型DISTRIBUTION表数据分片。PARTITION表数据分区。存储引擎行存储按行顺序存储表,建议点查,增删改操作较多场景下使用。事务事务块显式启动事务。单语句事务不显式启动事务,单语句即为事务。分布式事务(弱一致)GTM FREE模式。该模式不支持分布式事务的强一致性 - [部署规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0047.md): 【规则】安装数据库后,DBA应根据环境特性,合理配置数据库GUC参数。GaussDB提供了多种修改GUC参数的方法,用户可以方便地针对数据库、用户、会话进行设置。GUC参数配置,请联系管理员处理。 - [数据库对象命名规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0048.md): 【规格】不使用保留或非保留关键字命名数据库对象。可以使用如下命令查询数据库关键字,或者在《参考》中“SQL参考 > 关键字”章节中查看。SELECT * FROM pg_get_keywords();可以使用如下命令查询数据库关键字,或者在《参考》中“SQL参考 > 关键字”章节中查看。SELECT * FROM pg_get_keywo - [Database和Schema设计规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0049.md): 【说明】创建Database时,需要重点关注字符集编码(ENCODING)和兼容性(DBCOMPATIBILITY)两个配置项。GaussDB支持TD、ORA、MYSQL、PG、M五种兼容模式,分别表示兼容Teradata语法、Oracle语法、MySQL语法、POSTGRES语法和M-Compatibility语法,不同兼容模式下的语法 - [权限设计规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0050.md): 【规则】数据库初始用户连接和访问数据库应作为DBA管理用途,不允许业务直接使用该数据库用户连接和访问数据库。数据库初始用户,即数据库的安装用户,与集群所属的操作系统用户同名。数据库初始用户,即数据库的安装用户,与集群所属的操作系统用户同名。【规则】数据库初始用户为业务创建用户和数据库,业务使用所创建的用户登录和访问数据库。【规则】合理对角 - [字符集设计规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0051.md): 【规格】目前除MYSQL或M模式数据库(即sql_compatibility = 'MYSQL'或'M')外,仅支持对数据库定义字符集,不支持对表、字段等其他对象定义字符集。在MYSQL或M模式数据库(即sql_compatibility = 'MYSQL'或'M')中,表、字段等其他对象的字符集需要同数据库的字符集一致,否则会报错。在M - [表设计规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0052.md): 【规则】视图不建议嵌套。如果视图编写时使用了通配符,当被调用的视图新增或删除列时,视图将发生错误。视图嵌套可能因无法使用索引而导致执行效率低下,尽量使用带有索引的基表而不是视图上做关联操作。如果视图编写时使用了通配符,当被调用的视图新增或删除列时,视图将发生错误。视图嵌套可能因无法使用索引而导致执行效率低下,尽量使用带有索引的基表而不是视 - [字段设计规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0053.md): 【规则】字段设计应使用推荐类型。字段设计需使用推荐字段。有些数据类型不推荐的原因是业务使用场景较少,未大规模商用。数据库数据类型最佳实践数据类型说明是否推荐UUID不同集群可能产生相同UUID禁止序列整型即自增列,包括SMALLSERIAL、SERIAL、BIGSERIAL禁止整数类型TINYINT、SMALLINT、INTEGER、BI - [索引设计规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0054.md): 【规格】使用数据库索引实践推荐的索引类型。索引设计建议使用推荐类型。数据库索引实践推荐索引类型说明是否推荐主键/唯一索引单列或多列主键/唯一索引推荐表达式索引索引列为表的一列或多列计算而来的一个函数或者标量表达式限制使用BTREE索引索引构建类型部分数据类型上推荐索引设计建议使用推荐类型。【规则】组合索引字段个数不超过5个。【规则】禁止总 - [函数/存储过程设计规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0056.md): 【规则】禁止使用存储过程、触发器等实现业务逻辑,应该将这些逻辑都放到业务服务器上处理,避免对数据库产生逻辑依赖。【规则】业务的数据库升级脚本中,禁止使用存储过程实现升级逻辑。【规则】仅创建对固定入参有固定返回值的函数,函数必须设为IMMUTABLE和SHIPPABLE类型。目前数据库支持三种类型的函数,分别是IMMUTABLE、STABL - [约束设计](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0057.md): 【建议】如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。【建议】给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。【建议】给可以显式命名的约束显式命名。除了NOT NULL和DEFAULT约束外,其他约束都可以显式命名。【建议】从命名上明确标识 - [视图和关联表设计](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0058.md): 【建议】除非视图之间存在强依赖关系,否则不建议视图嵌套。【建议】视图定义中尽量避免排序操作。【建议】表之间的关联字段应该尽量少。【建议】关联字段的数据类型应该保持一致。【建议】关联字段在命名上,应该可以明显体现出关联关系。例如,采用同样名称来命名。 - [GUC参数编程规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0060.md): 【规则】客户端(如JDBC)应使用默认参数执行查询,如果需要修改会话级别的GUC参数,应谨慎评估。通过ODBC或JDBC修改GUC参数时,需注意GUC参数仅会在当前connection中生效,特别是在连接池场景下,容易出现问题且问题定位困难。如果在连接中必须进行GUC参数设置,那么在将连接归还给连接池之前,必须使用如下命令将连接的状态清空 - [对象访问编程规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0061.md): 【规则】用户在操作对象时,应该拥有该对象的操作权限。权限说明请参考用户及权限章节,并遵循权限设计规范。权限说明请参考用户及权限章节,并遵循权限设计规范。【规则】访问对象(表,函数等)时建议带上SCHEMA名称,即使用schemaname.tablename进行访问。如果不追加SCHEMA名称前缀,会根据当前search_path中表空间列 - [WHERE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0062.md): 【规则】禁止在WHERE条件中进行相同表字段的比较。例如,如下语句应考虑合理性:SELECT * FROMt1 WHEREcol1 = col1;应考虑修改为:SELECT* FROMt1 WHEREcol1 IS NOT NULL;例如,如下语句应考虑合理性:应考虑修改为:【规则】禁止WHERE条件涉及隐式数据类型转换。数据库中进行隐式 - [SELECT](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0063.md): 【规则】SELECT语句中禁用通配符字段“*”。使用通配符字段查询表时,如果因业务或数据库升级导致表结构发生变化,可能出现与业务语句不兼容的情况。因此业务应指明所需查询的表字段名称,避免使用通配符。使用通配符字段查询表时,如果因业务或数据库升级导致表结构发生变化,可能出现与业务语句不兼容的情况。因此业务应指明所需查询的表字段名称,避免使用 - [INSERT](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0064.md): 【规格】INSERT ON DUPLICATE KEY UPDATE不支持对主键或唯一约束的列上执行UPDATE。INSERT ON DUPLICATE KEY UPDATE的语义是对唯一约束冲突的行进行更新,这个过程中不应对约束的值进行更新。INSERT ON DUPLICATE KEY UPDATE的语义是对唯一约束冲突的行进行更新, - [UPDATE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0065.md): 【规格】非透明多写特性下,在GTM-FREE模式下,不允许跨节点事务,因此更新HASH分布中数据表时WHERE条件中必须指定分布列等值过滤条件。【规则】UPDATE语句中必须有WHERE子句,避免全表扫描。【规则】不允许在UPDATE子句同时更新多个列时,被更新列同样是更新源。同时更新多列,且更新源相同,在不同的数据库下行为不同,为了避免 - [DELETE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0066.md): 【规格】非透明多写特性下,不支持DELETE语句中使用LIMIT。应使用WHERE条件明确需要更新的目标行。【规格】非透明多写特性下,在GTM-FREE模式下,不允许跨节点事务,因此删除HASH分布表中数据时,必须在WHERE条件中指定分布列等值过滤条件。【规则】DELETE语句中必须有WHERE子句,避免全表扫描。【规则】DELETE语 - [关联查询](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0067.md): 【规则】多表关联嵌套深度必须小于8。关联嵌套过深,容易产生慢SQL,应从业务层考虑优化。关联嵌套过深,容易产生慢SQL,应从业务层考虑优化。【规则】表关联查询必须明确指定各表的连接条件(ON),以避免产生笛卡尔积。在MySQL中,JOIN与CROSS JOIN和INNER JOIN等价,但是在SQL标准中,JOIN仅与INNER JOIN - [子查询](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0068.md): 【规则】禁止一条SQL语句中,出现重复子查询语句。【建议】避免在SELECT目标列中使用子查询,可能导致计划无法下推影响执行性能。【建议】少用标量子查询。标量子查询指结果为一个值,并且条件表达式为等值的子查询。不符合规范的语句示例如下:SELECT* FROMt1 WHEREid = (SELECTid FROMt2 LIMIT1);上述 - [事务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0069.md): 【规格】非透明多写特性下,在GTM-FREE模式下,不允许执行跨节点事务。在GTM-FREE模式下,如果所执行的SQL语句包含跨节点事务,会报错:Unsupport DML two phase commit under gtm free mode.在这种情况下,如果某一条语句必须临时开启跨节点事务,需要在事务中先执行如下命令开启跨节点事务 - [SQL编写](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0070.md): 在GaussDB中,建议DDL(建表、COMMENT等)操作统一执行。在批处理作业中尽量避免DDL操作,避免大量并发事务对性能的影响。在非日志表(unlogged table)使用完后,立即执行数据清理(TRUNCATE)操作。因为在异常场景下,GaussDB不保证非日志表(unlogged table)数据的安全性。临时表和非日志表的存 - [JDBC](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0072.md): 【说明】第三方工具通过JDBC连接GaussDB时,JDBC向GaussDB发起连接请求,会默认添加以下配置参数,详见JDBC代码ConnectionFactoryImpl类的实现。params = { { "user", user }, { "database", database }, - [连接控制规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0073.md): 【规则】建议维持静态连接池或控制建立连接频率,以避免频繁触发新建连接。如果CN或DN单节点的连接接入每秒超过以下建议次数,在未开启建连线程池时,可能会导致线程池和CPU使用率激增,从而显著影响业务性能;在开启建连线程池时会造成客户端建连时延的增加,并可能引起客户端建连超时报错。8U/64G系统,每秒连接接入次数空载业务下不高于90,30% - [GaussDB应用程序开发教程概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0075.md): GaussDB支持通过JDBC、ODBC、libpq、Psycopg、Go、ecpg等接口来连接数据库并进行操作。应用程序使用各驱动执行的SQL语句字符串中不能包含0字符,否则会导致执行失败。JDBC(Java Database Connectivity,Java数据库连接)是用于执行SQL语句的Java API,可以为多种关系数据库提供 - [开发规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0076.md): 如果用户在APP的开发过程中,使用了连接池机制,那么需要遵循如下规范:如果在连接中设置了GUC参数,那么在将连接归还连接池之前,必须使用以下语句将连接的状态清空。SET SESSION AUTHORIZATION DEFAULT; RESET ALL;如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。否则,连接池里面的连接就 - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0077.md): 基于JDBC开发应用程序的流程,包含获取驱动jar包并配置JDK环境、连接数据库、执行SQL语句、处理结果集、关闭连接等几个部分。基于JDBC开发应用程序的流程,请参见图1。 - [获取驱动jar包并配置JDK环境](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0079.md): 环境准备包括获取驱动jar包、配置JDK环境。下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussD - [连接介绍](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0081.md): 在获取驱动jar包并配置JDK环境的情况下,通过JDBC连接数据库时需先加载驱动。本节主要介绍驱动加载方式、连接接口以及连接方式。驱动加载有两种方式:在代码中创建连接之前的任意位置装载:Class.forName("com.huawei.gaussdb.jdbc.Driver");在JVM启动时通过参数传递,“jdbctest”为测试用例 - [以非加密方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0082.md): 前置条件:在运行环境(如IDE)已添加gaussdbjdbc.jar包。使用DriverManager.getConnection(String url, String user, String password)接口创建数据库连接的步骤如下:java.sql.Connection是数据库连接接口,通过java.sql.DriverMan - [以SSL方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0083.md): 用户通过JDBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通信,为敏感数据在网络上的传输提供一种安全保障手段。本小节中,连接数据库采用接口三:DriverManager.getConnection(String url, Properties info)。前置条件:在运行环境(如IDE)已添加gaussdbjd - [以UDS方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0084.md): Unix Domain Socket(UDS)用于同一主机上不同进程间的数据交换,需添加junixsocket以获取套接字工厂。前置条件:在运行环境(如IDE)添加gaussdbjdbc.jar、junixsocket-core-XXX.jar、junixsocket-common-XXX.jar、junixsocket-native-c - [以国密TLS方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0085.md): 用户通过JDBC连接GaussDB服务器时,可以通过开启国密TLS加密客户端和服务器之间的通信,为敏感数据在网络上的传输提供高强度的安全保障手段。以国密TLS方式连接数据库有两种方式:国密TLS单向认证、国密TLS双向认证。单向认证只需客户端验证服务端身份,而双向认证则需要客户端和服务端双方互相验证身份。前置条件:在运行环境(如IDE)已 - [连接参数参考](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0086.md): 连接参数的名称对大小写敏感。将连接参数进行分类,具体如表1所示。 - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0087.md): 应用程序通过执行SQL语句来操作数据库。本章节通过示例介绍CREATE TABLE、INSERT、UPDATE、DELETE和SELECT等操作。执行普通SQL语句执行批量插入处理语句执行预处理更新语句执行删除语句执行查询语句调用存储过程前置条件:已连接数据库,连接对象为conn。执行普通SQL语句,创建customer_t1表的步骤如下 - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0088.md): 执行SQL语句后,需要对结果集进行处理。本章节主要涵盖以下内容:设置结果集类型、在结果集中定位、获取结果集光标位置、获取结果集数据以及示例步骤。不同类型的结果集具有不同的应用场景,应用程序需要根据实际情况选择合适的结果集类型。在执行SQL语句时,应先创建相应的语句对象,其中部分创建方法支持设置结果集类型。java.sql.Connecti - [关闭数据库连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0089.md): 在完成相应的数据操作后,应调用close()方法关闭数据库连接。Connection、Statement和ResultSet接口都提供close()方法,在使用完对象后应及时关闭它们。关闭Connection对象将间接关闭所有与之关联的Statement对象,关闭Statement对象则会间接关闭其对应的ResultSet对象。 - [不同场景下配置连接参数](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0091.md): 以下示例场景中node代表“host:port”,host为数据库服务器名称或IP地址,port为数据库服务器端口。某客户有两套数据库集群,其中A集群为生产集群,B集群为容灾集群。当客户执行容灾切换时,A集群将降为容灾集群,B集群将升为生产集群。此时为了避免修改配置文件导致的应用重启或重新发版,客户可在初始配置文件时,即将A、B集群写入连 - [处理SQL异常](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0092.md): 当JDBC操作(如执行SQL语句、处理结果集等)发生错误时,JDBC程序会抛出SQL异常。SQLException有getMessage()和printStackTrace()等常用方法,详细介绍请参见java.sql.SQLException。以下代码展示了如何捕捉SQL异常。以使用错误的列索引为例,展示捕捉到SQL异常后的报错信息。若 - [创建和调用存储过程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0094.md): 本示例演示如何连接数据库、创建和调用存储过程。非透明多写特性下的示例上述2个示例的运行结果为: - [获取函数返回值](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0095.md): JDBC调用函数时获取返回值,以下示例展示返回值类型为bit和float8两种数据类型,其他数据类型可参考本示例。非透明多写特性下的示例上述2个示例的运行结果为: - [批量查询](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0096.md): 此示例主要使用setFetchSize调整客户端内存使用,原理是通过数据库游标来分批获取服务端数据,但会加大网络交互,可能会损失部分性能。由于游标事务内有效,故需要先关闭自动提交事务,最后执行手动提交事务。非透明多写特性下的示例上述2个示例的运行结果为:执行完毕后可执行如下命令恢复自动提交事务。 - [使用流式读功能](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0097.md): 流式读功能:读取数据时,服务端一次获取全部数据,发送到客户端socket缓冲区中,缓冲区占满则暂停,有空余则继续向缓冲区中发送数据,同时JVM逐行从缓冲区中读取数据。优势是处理结果快,不会造成JVM内存溢出。劣势是只能向后遍历,数据处理完毕之前或者statement关闭之前,当前连接不能执行其他操作。非透明多写特性下的示例上述2个示例的运 - [应用层SQL重试](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0098.md): 当主DN故障且10s未恢复时,GaussDB会自动将对应的备DN升主,使集群正常运行。备升主期间正在运行的作业会失败,备升主后启动的作业不会再受影响。如果要做到DN主备切换过程中,上层业务不感知,可参考此示例构建业务层SQL重试机制。非透明多写特性下的示例上述2个示例的运行结果为: - [通过本地文件导入导出数据](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0099.md): 在使用JAVA语言基于GaussDB数据库进行二次开发时,可以使用CopyManager接口,通过流方式将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件支持CSV、TEXT等格式。代码运行的前提条件:在数据库中创建表migration_table和migration_table_1,并在migration_table表中插入 - [逻辑复制(非透明多写)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0100.md): 本章节介绍JDBC逻辑解码的配置选项,并且通过示例演示JDBC接口使用逻辑复制功能。当前版本请使用直连DN解码,分布式强一致解码(CN解码)功能默认关闭,如有需要请联系华为工程师评估后打开enable-cn-decode参数。针对逻辑复制的配置选项,除了参考逻辑解码选项,还有专门给JDBC等流式解码工具增加的配置项,如下所示:解码线程并行 - [C/C++应用程序编译规范](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0101.md): 在C/C++应用程序开发过程中,编译器类型、语言标准及编译选项的差异,可能引入未定义行为、安全隐患和平台兼容性问题,进而影响系统稳定性和产品交付质量。本规范对C/C++应用程序的编译器选型、语言标准、编译参数、构建模式及相关管理要求作出统一规定,作为项目开发、集成、测试和交付过程中的基本遵循依据。如果需要定位C/C++应用程序中出现的内存 - [监控数据库连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0102.md): 连接监控功能支持监控JDBC端以下指标:应用开启连接的次数,关闭连接的次数,连接异常断开的次数,数据库访问量,客户端机器CPU的使用率,内存的使用率,上下行传输速率,应用端到数据库链路之间的网络时延、抖动、丢包率。此示例将演示如何使用JDBC驱动的连接监控功能。非透明多写特性下的示例上述2个示例的运行结果为:在日志文件dbMonitor. - [使用Array类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0103.md): 以下示例将演示如何使用JDBC驱动的Array类型。代码运行的前提条件:连接的数据库兼容模式为ORA,数据库版本需要大于等于503.0。非透明多写特性下的示例上述2个示例的运行结果为:非透明多写特性下的示例上述2个示例的运行结果为:元素类型为字符类型时,空元素在传给数据库时会转换成null。非透明多写特性下的示例上述2个示例的运行结果为: - [使用Struct类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0104.md): 以下示例将演示如何使用JDBC驱动的Struct类型。代码运行的前提条件:连接的数据库兼容模式为ORA,数据库版本需要大于等于503.0。非透明多写特性下的示例上述2个示例的运行结果为:非透明多写特性下的示例上述2个示例的运行结果为:元素类型为字符类型时,空元素在传给数据库时会转换成null。非透明多写特性下的示例上述2个示例的运行结果为 - [常用Package及接口](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0106.md): 常用Package及接口的作用,如表1所示。 - [java.sql.Connection](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0107.md): java.sql.Connection是数据库连接接口。接口内部默认使用自动提交模式,若通过setAutoCommit(false)关闭自动提交模式,将会导致后面执行的语句受到显式事务包裹,数据库中不支持事务中执行的语句不能在此模式下执行。创建PreparedStatement类时,在SQL语句中使用RETURNING语句,RETURNI - [java.sql.CallableStatement](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0108.md): java.sql.CallableStatement是存储过程执行接口。不允许含有OUT参数的语句执行批量操作。以下方法是从java.sql.Statement继承而来:close、execute、executeQuery、executeUpdate、getConnection、getResultSet、getUpdateCount、is - [java.sql.DatabaseMetaData](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0109.md): java.sql.DatabaseMetaData是数据库对象定义接口。uppercaseAttributeName为true时,以下方法会将查询结果转为大写,可转换范围与java中的toUpperCase方法一致。public ResultSet getProcedures(String catalog, String schemaPa - [java.sql.Driver](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0110.md): java.sql.Driver是数据库驱动接口。 - [java.sql.PreparedStatement](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0111.md): java.sql.PreparedStatement是预处理语句接口。addBatch()、execute()必须在clearBatch()之后才能执行。调用executeBatch()方法并不会清除batch。用户必须显式使用clearBatch()清除。在添加了一个batch的绑定变量后,用户若想重用这些值(再次添加一个batch), - [java.sql.ResultSet](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0112.md): java.sql.ResultSet是执行结果集接口。一个Statement不能有多个处于“open”状态的ResultSet。用于遍历结果集(ResultSet)的游标(Cursor)在被提交后不能保持“open”的状态。执行SQL语句时,报文有最大长度限制(不能超过1023MB)。因此使用updateAsciiStream、updat - [java.sql.ResultSetMetaData](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0113.md): java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。uppercaseAttributeName为true时,下面接口会将查询结果转为大写,可转换范围为26个英文字母。public String getColumnName(int column)public String getColumnL - [java.sql.Statement](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0114.md): java.sql.Statement是SQL语句接口。通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,但会有性能损耗。由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCo - [java.sql.Clob](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0115.md): java.sql.Clob接口提供用于获取SQL字符大对象,访问SQL CLOB值。 - [java.sql.SQLException](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0116.md): java.sql.SQLException是JDBC API中用于处理数据库操作错误的核心异常类。当JDBC操作(如执行SQL语句、处理结果集等)发生错误时,JDBC程序会抛出此异常。 - [java.io.IOException](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0117.md): java.io.IOException是Java I/O操作中的核心受检异常类,用于表示输入/输出操作期间发生的错误或中断。 - [javax.sql.ConnectionPoolDataSource](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0118.md): javax.sql.ConnectionPoolDataSource是数据源连接池接口。 - [javax.sql.DataSource](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0119.md): javax.sql.DataSource是数据源接口。 - [javax.sql.PooledConnection](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0120.md): javax.sql.PooledConnection是由连接池创建的连接接口。 - [javax.naming.Context](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0121.md): javax.naming.Context是连接配置的上下文接口。 - [CopyManager](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0122.md): CopyManager是GaussDB JDBC驱动中提供的一个API接口类,用于批量向数据库导入数据以及从数据库导出数据。CopyManager类位于com.huawei.gaussdb.jdbc.copy Package中,继承自java.lang.Object类,该类的声明如下:public CopyManager(BaseConn - [PGReplicationConnection](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0124.md): PGReplicationConnection是GaussDB JDBC驱动中提供的一个API接口类,用于执行逻辑复制相关的功能。PGReplicationConnection是逻辑复制的接口,非透明多写场景下的实现类是PGReplicationConnectionImpl,该类位于com.huawei.gaussdb.jdbc.repl - [PGReplicationStream](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0125.md): PGReplicationStream是GaussDB JDBC驱动中提供的一个API接口类,用于操作逻辑复制流。PGReplicationStream是逻辑复制的接口,非透明多写场景下的实现类是V3PGReplicationStream,该类位于com.huawei.gaussdb.jdbc.core.v3.replication Pa - [ChainedStreamBuilder](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0126.md): ChainedStreamBuilder是GaussDB JDBC驱动中提供的一个API接口类,用于构建复制流。本接口类仅在非透明多写特性下支持。ChainedStreamBuilder是逻辑复制的接口,实现类是ReplicationStreamBuilder,该类位于com.huawei.gaussdb.jdbc.replication - [ChainedCommonStreamBuilder](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0127.md): ChainedCommonStreamBuilder是GaussDB JDBC驱动中提供的一个API接口类,用于为逻辑和物理复制指定通用参数。本接口类仅在非透明多写特性下支持。ChainedCommonStreamBuilder是逻辑复制的接口,实现抽象类是AbstractCreateSlotBuilder,该类的继承类是LogicalC - [PGobject](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0128.md): PGobject类用于表示非JDBC标准定义的类型。 - [LogSequenceNumber](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0129.md): LogSequenceNumber类是逻辑解码场景下的日志序列号,其内部的LogSequenceValue变量用于唯一确认一条SQL对应的编码后的日志。非透明多写场景实现的子类为CommonLogSequenceValue。 - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0131.md): ODBC开发流程如图1所示。其中包括获取源码包、ODBC包以及依赖库、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [获取源码包、ODBC包以及依赖库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0133.md): 基于ODBC开发用户需要获取unixODBC源码包、ODBC包以及依赖库。unixODBC源码包获取参考地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz。MD5文件下载地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz.md5。下载后需使用M - [Linux系统下配置数据源](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0135.md): 在通过ODBC访问数据库之前,需要确保环境中已正确安装ODBC驱动及相关依赖。应用程序与数据库之间的通信依赖数据源(Data Source Name,DSN)配置,ODBC驱动程序管理器将根据DSN信息加载对应驱动、建立连接,并向应用程序提供统一的API接口。本节说明如何在Linux系统下配置ODBC数据源(包含驱动配置文件与DSN配置文 - [Windows系统下配置数据源](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0136.md): Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器即可直接进行配置。根据需要,将包名为GaussDB-Kernel_数据库版本号_Windows_X64_Odbc.tar.gz的64位驱动或包名为GaussDB-Kernel_数据库版本号_Windows_X86_Odbc.tar.gz的32位驱动解压后,单击gsqlo - [连接数据库涉及的API](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0137.md): 在完成数据源配置后,应用程序需要通过一组标准的ODBC API与数据库建立连接。该连接过程包含环境句柄与连接句柄的分配、属性设置以及实际连接动作,相关API说明如表1所示。ODBC驱动程序管理器在此过程中负责加载驱动、解析DSN参数,并初始化后续所有数据库交互所需的上下文。以开发源程序DBtest.c为例(完整示例请参考获取和处理数据库中 - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0138.md): 为了执行SQL语句,ODBC提供一组专门的API,并在表1中集中列出了相关API并进行了说明。这些API覆盖了SQL的预处理、参数绑定、直接执行以及语句属性设置等功能,是应用程序与数据库进行指令交互的核心接口。ODBC为应用程序与数据库的中心层,负责把应用程序发出的SQL指令传到数据库当中,自身并不解析SQL语法。故在应用程序中写入带有保 - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0139.md): ODBC处理结果集是从数据库获取数据并供应用程序进行处理的过程,包括:检索数据、展示、处理、传输以及业务逻辑实现等。相关API如表1所示。示例如下(完整示例请参考获取和处理数据库中的数据): - [关闭连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0140.md): 在完成数据库操作后,需通过ODBC API正确关闭语句、连接和环境句柄,释放驱动及数据库端的资源。根据ODBC句柄管理机制,应用程序需按照“语句 → 连接 → 环境”的顺序依次释放,以避免资源泄漏或驱动状态异常。ODBC关闭数据库连接,释放资源相关API如表1所示。示例如下(完整示例请参考获取和处理数据库中的数据): - [典型应用场景配置](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0142.md): ODBC日志分为unixODBC驱动管理器日志和gsqlODBC驱动端日志。前者可以用于追踪应用程序API调用的执行状态,后者包含驱动底层实现的诊断(DFX)日志,用于帮助定位问题。unixODBC日志需要在odbcinst.ini文件中配置:[ODBC] Trace=Yes TraceFile=/path/to/odbctrace.lo - [获取和处理数据库中的数据](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0143.md): 此示例完整演示如何通过ODBC获取和处理GaussDB中的数据。前提条件:数据源已配置成功。Linux系统请参考Linux系统下配置数据源;Windows系统请参考Windows系统下配置数据源。Windows环境下ODBC应用代码可以使用MinGW(Minimalist GNU for Windows)编译器进行编译。编译命令如下:gc - [批量绑定](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0144.md): 前提条件:数据源已配置成功。Linux系统请参考Linux系统下配置数据源;Windows系统请参考Windows系统下配置数据源。运行结果如下:数据库中查询后显示部分结果如下: - [高性能绑定类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0145.md): 需要进行大量数据插入时,有如下建议供用户参考和设置:需要设置批量绑定:在odbc.ini配置文件中设置“UseBatchProtocol=1”,并配置数据库GUC参数“support_batch_bind=on”。ODBC程序的绑定类型需与数据库中类型一致。客户端字符集需与数据库字符集一致。事务需切换为手动提交模式。odbc.ini配置文 - [开启连接池](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0146.md): 前提条件:数据源已配置成功。Linux系统请参考Linux系统下配置数据源;Windows系统请参考Windows系统下配置数据源。在Linux和Windows环境下开启连接池,对于需要频繁建立和断开连接的中间层应用程序可显著提升性能,参考配置请参见连接池场景,示例代码如下:不同环境下结果不一,在连接池打开的情况下,本示例运行结果如下:在 - [SQLAllocEnv](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0148.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLAllocConnect](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0149.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLAllocHandle](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0150.md): 分配环境、连接、语句或描述符的句柄,它替代了ODBC 2.x函数SQLAllocEnv、SQLAllocConnect及SQLAllocStmt。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVA - [SQLAllocStmt](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0151.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLBindCol](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0152.md): 将应用程序数据缓冲区绑定到结果集的列中。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLBindCol返回SQL_ERRO - [SQLBindParameter](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0154.md): 将一条SQL语句中的一个参数标志和一个缓冲区绑定起来。当绑定的字符类型数据中含'\0'字符且libpq的0字符参数supportZeroCharacter设置为1时,用户需要保证输入的字符串长度(StrLen_or_IndPtr)等于含'\0'字符的字符串的实际长度。当输入的字符串长度大于含'\0'字符的字符串实际长度时,此场景下若发生内 - [SQLColAttribute](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0155.md): 返回结果集中一列的描述符信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLColAttribute返回SQL_ERRO - [SQLConnect](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0156.md): 在驱动程序和数据源之间建立连接。连接上数据源之后,可以通过连接句柄访问到所有有关连接数据源的信息,包括程序运行状态、事务处理状态和错误信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID - [SQLDisconnect](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0157.md): 关闭一个与特定连接句柄相关的连接。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当调用SQLDisconnect函数返回SQL_ - [SQLExecDirect](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0158.md): 使用参数的当前值,执行一条准备好的语句。对于一次只执行一条SQL语句,SQLExecDirect是最快的执行方式。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。SQL_ERROR:表示比较严重的错误,如:内存分配 - [SQLExecute](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0159.md): 如果语句中存在参数标记,SQLExecute函数使用参数标记参数的当前值,执行一条准备好的SQL语句。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连 - [SQLFetch](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0160.md): 从结果集中取下一个行集的数据,并返回所有被绑定列的数据。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_NO_DATA:表示SQL语句不返回结果集。SQL_INVALID_HANDLE:表示调用无效句柄 - [SQLFreeStmt](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0161.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLFreeConnect](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0162.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLFreeHandle](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0163.md): 释放与指定环境、连接、语句或描述符相关联的资源,它替代了ODBC 2.x函数SQLFreeEnv、SQLFreeConnect及SQLFreeStmt。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_I - [SQLFreeEnv](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0164.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLPrepare](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0165.md): 准备一个将要使用的SQL语句。需要注意的是,ODBC发送准备好的语句不支持内核复用计划,会导致每次执行都需要重新生成计划,CPU占用率高。如果业务对计划复用有需求,建议优先使用JDBC作为客户端。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误, - [SQLGetData](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0166.md): SQLGetData返回结果集中某一列的数据。可以多次调用它来部分检索不定长度的数据。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_NO_DATA:表示SQL语句不返回结果集。SQL_INVALID_ - [SQLGetDiagRec](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0167.md): 返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。SQLGet - [SQLSetConnectAttr](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0169.md): 设置控制连接各方面的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetConnectAttr的返回值为SQL_E - [SQLSetEnvAttr](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0170.md): 设置控制环境各方面的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetEnvAttr的返回值为SQL_ERROR - [SQLSetStmtAttr](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0171.md): 设置相关语句的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetStmtAttr的返回值为SQL_ERROR或S - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0172.md): libpq开发流程如图1所示。其中包含获取发布包、依赖库和头文件、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [获取发布包、依赖库和头文件](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0174.md): 下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussDB-driver*.tar.gz);echo - [连接数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0175.md): 连接到数据库是使用libpq开发应用程序的第一步。此时用户可以使用PQconnectdb或PQsetdbLogin函数来建立与数据库服务器的连接。连接所用的连接串即conninfo有以下两种形式:所需的连接参数直接写为[name=value][...]的形式,多个参数之间使用空格隔开,例如:"dbname=%s port=%s host= - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0176.md): 通过连接对象,使用PQexec函数执行SQL查询语句。可以执行各种类型的SQL查询,例如SELECT查询、插入数据、更新数据、删除数据等。但如果同时执行多个SQL语句作为一个事务,应该使用事务控制功能,例如执行BEGIN、COMMIT、ROLLBACK 等SQL语句来控制事务的开始、提交和回滚。同时也需要注意执行SQL查询后的错误处理。示 - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0177.md): libpq提供PQnfields、PQntuples、PQfname等函数来帮助用户对执行SELECT查询后的结果进行适当的解析和处理。主要步骤如下:判断执行结果状态;获取结果集行数和列数;遍历并提取数据;释放PGresult对象(必须执行)。示例如下(完整示例请参考数据库建连、执行SQL并返回结果): - [关闭连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0178.md): libpq通常使用PQfinish函数来关闭与数据库的连接。如果应用程序建立了多个连接,则需要确保每个连接都被正确关闭。示例如下(完整示例请参考数据库建连、执行SQL并返回结果):注意事项:无论连接成功、失败还是发生异常,都必须确保PQfinish被调用,否则会导致连接句柄泄漏,长期运行可能耗尽系统文件描述符或数据库连接数;先释放所有PG - [数据库建连、执行SQL并返回结果](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0180.md): gcc编译libpq源程序,需要通过-Idirectory选项,提供头文件的安装位置(有些时候编译器会查找缺省的目录,因此可以忽略这些选项)。如:gcc -I (头文件所在目录) -L (libpq库所在目录) -o testlibpq testlibpq.c -lpq执行命令为:如果要使用制作文件(makefile),向CPPFLAG - [执行预备语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0181.md): 以下示例创建一个给定参数的预备语句,用于PQexecPrepared执行预备语句:非透明多写特性的示例如下:上述2个示例运行结果如下: - [绑定参数并返回二进制结果](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0182.md): 以下示例执行一个绑定参数的命令,并以二进制格式请求查询结果。用以上命令填充数据库后,运行如下示例:非透明多写特性的示例如下:上述2个示例运行结果如下: - [PQconnectdbParams](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0185.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数用从两个NULL结束的数组中的参数打开一个新的数据库连接。与PQsetdbLogin不同,该函数可以不必更换函数签名(名字)就可以扩展参数集,所以建议应用程序中使用该函数(或者类似的非阻塞变种PQconnectStartParams和PQc - [PQconnectdb](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0186.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数用conninfo传入的参数打开一个新的连接。传入的参数可以为空,表明使用所有缺省的参数,或者可以包含一个或更多个用空白间隔的参数设置,或者还可以包含一个URL。请参见典型应用开发示例章节。 - [PQconninfoParse](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0187.md): 根据连接,返回已解析的连接选项。PQconninfoOption类型指针。 - [PQconnectStart](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0188.md): 与数据库服务器建立一次非阻塞的连接。PGconn类型指针。 - [PQerrorMessage](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0189.md): 返回连接上的错误信息。char类型指针。 - [PQsetdbLogin](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0190.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数为PQconnectdb前身,参数个数固定,未定义参数被调用时使用缺省值,若需要给固定参数设置缺省值,则可赋值NULL或者空字符串。若dbName中包含“=”或连接URL的有效前缀,则该dbName被看做一个conninfo字符串并传递至P - [PQfinish](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0191.md): 关闭与服务器的连接,同时释放被PGconn对象使用的存储器。若PQstatus判断服务器连接尝试失败,应用程序调用PQfinish释放被PGconn对象使用的存储器,PQfinish调用后PGconn指针不可再次使用。请参见典型应用开发示例章节。 - [PQreset](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0192.md): 重置与服务器的通讯端口。此函数将关闭与服务器的连接并且试图与同一个服务器重建新的连接,并使用所有前面使用过的参数。该函数在连接异常后进行故障恢复时很有用。 - [PQstatus](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0193.md): 返回连接的状态。ConnStatusType:连接状态的枚举,包括:状态可以是多个值之一。但是,在异步连接过程之外只能看到其中两个:CONNECTION_OK和CONNECTION_BAD。与数据库的良好连接状态为CONNECTION_OK,与数据库连接失败状态为CONNECTION_BAD。通常,“正常”状态将一直保持到PQfinish - [PQexec](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0195.md): 向服务器提交一条命令并等待结果。PGresult:包含查询结果的对象指针。应该调用PQresultStatus函数来检查任何错误的返回值(包括空指针的值,在这种情况下它将返回PGRES_FATAL_ERROR)。使用PQerrorMessage获取有关错误的更多信息。命令字符串可以包括多个SQL命令(用分号分隔)。在一个PQexec调用中 - [PQprepare](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0196.md): 用给定的参数提交请求,创建一个预备语句,然后等待结束。PGresult:包含查询结果的对象指针。该函数创建一个为PQexecPrepared执行用的预备语句,支持命令的重复执行,不需要每次都进行解析和规划。PQprepare仅在协议3.0及以后的连接中支持,使用协议2.0时,PQprepare将失败。该函数从查询字符串创建一个名为stmt - [PQclear](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0197.md): 释放与PGresult相关联的存储空间,任何不再需要的查询结果都应该用PQclear释放。PGresult不会自动释放,当提交新的查询时它并不消失,甚至断开连接后也不会。要删除它,必须调用PQclear,否则会有内存泄漏。请参见典型应用开发示例章节。 - [PQfnumberEx](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0198.md): 返回与给定列名相关联的列号。列号从0开始。int型整数。 - [PQexecParams](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0199.md): 执行一个绑定参数的命令。PGresult类型指针。 - [PQexecParamsBatch](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0200.md): 执行一个批量绑定参数的命令。PGresult类型指针。 - [PQexecPrepared](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0201.md): 发送一个请求来用给定参数执行一个预备语句,并且等待结果。当绑定的字符类型数据中含'\0'字符且libpq的0字符参数supportZeroCharacter设置为1时,用户需要保证输入的字符串长度(paramLengths)等于含'\0'字符的字符串的实际长度。当输入的字符串长度大于含'\0'字符的字符串实际长度时,此场景下若发生内存越界 - [PQexecPreparedBatch](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0202.md): 发送一个请求来用给定的批量参数执行一个预备语句,并且等待结果。PGresult类型指针。 - [PQsendQuery](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0205.md): 向服务器提交一个命令而不等待结果。如果查询成功发送则返回1,否则返回0。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。在成功调用PQsendQuery后,调用PQgetResult一次或者多次获取结果。PQgetResult返回空指针表示命令已执行完成,否则不能再次调用PQsendQuery - [PQsendQueryParams](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0206.md): 给服务器提交一个命令和分隔的参数,而不等待结果。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数等效于PQsendQuery,只是查询参数可以和查询字符串分开声明。函数的参数处理和PQexecParams类似,它不能在2.0版本的协议连接上工作,并且它只允许在查询字符串里出现一条命令。 - [PQsendPrepare](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0207.md): 发送一个请求,创建一个给定参数的预备语句,而不等待结束。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数为PQprepare的异步版本:如果能够分派请求,则返回1,否则返回0。调用成功后,调用PQgetResult判断服务端是否成功创建了preparedStatement。函数的参数与P - [PQsendQueryPrepared](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0208.md): 发送一个请求执行带有给出参数的预备语句,不等待结果。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数类似于PQsendQueryParams,但是要执行的命令是通过命名一个预先准备的语句来指定的,而不是提供一个查询字符串。该函数的参数与PQexecPrepared一样处理。和PQexec - [PQflush](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0209.md): 尝试将任何排队的输出数据刷新到服务器。int:如果成功(或者如果发送队列为空),则返回0;如果由于某种原因失败,则返回-1;如果发送队列中的所有数据都发送失败,则返回1。(此情况只有在连接为非阻塞时才能发生),失败原因存到conn->errorMessage中。在非阻塞连接上发送任何命令或数据之后,调用PQflush。如果返回1,则等待套 - [PQgetCancel](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0211.md): 创建一个数据结构,其中包含取消通过特定数据库连接发出的命令所需的信息。PGcancel:指向包含cancel信息对象的指针。PQgetCancel创建一个给定PGconn连接对象的PGcancel对象。如果给定的conn是NULL或无效连接,它将返回NULL。PGcancel对象是一个不透明的结构,应用程序不能直接访问它,它只能传递给PQ - [PQfreeCancel](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0212.md): 释放PQgetCancel创建的数据结构。PQfreeCancel释放一个由前面的PQgetCancel创建的数据对象。 - [PQcancel](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0213.md): 要求服务器放弃处理当前命令。int:执行结果为1表示成功,0表示失败,失败原因存到errbuf中。成功发送并不保证请求将产生任何效果。如果取消有效,当前命令将提前终止并返回错误结果。如果取消失败(例如,因为服务器已经处理完命令),无返回结果。如果errbuf是信号处理程序中的局部变量,则可以安全地从信号处理程序中调用PQcancel。就P - [PQgetvalue](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0215.md): 返回一个PGresult的一行的单一阈值。行和列号从 0 开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。对于文本格式的数据,PQgetvalue返回的值是该阈值的一种空值结束的字符串表示。对于二进制格式的数据,该值是由该数据类型的typsend和typreceive函数决定的二进制表示 - [PQnfields](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0216.md): 返回查询结果中每一行的列(域)数。int类型数字。 - [PQntuples](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0217.md): 返回查询结果中的行(元组)数。PQntuples返回一个整数结果,在 32 位操作系统上大型的结果集可能使返回值溢出。int类型数字。请参见典型应用开发示例章节。 - [PQfname](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0218.md): 返回与给定列号相关联的列名。列号从 0 开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。char类型指针。 - [PQresultStatus](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0219.md): 返回命令的结果状态。PQresultStatus:命令执行结果的枚举,包括:请注意,恰好检索到零行的SELECT命令仍然显示PGRES_TUPLES_OK。PGRES_COMMAND_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES_EMPTY_QUERY响应可能表明客户端软件存在bug。状态为PGRES_NONFA - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0224.md): Psycopg2开发应用程序的流程可分为环境准备、连接数据库、执行SQL语句、处理结果集、关闭连接等几个部分。开发流程如图1所示。 - [环境准备](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0226.md): 下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussDB-driver*.tar.gz);echo - [连接参数参考](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0228.md): 常用的连接参数,如表1所示。Psycopg2连接能力基于底层libpq库实现。在负载均衡能力方面存在以下差异:非透明多写特性下:由于libpq不支持负载均衡机制,因此Psycopg2也不支持负载均衡。非透明多写特性下:由于libpq不支持负载均衡机制,因此Psycopg2也不支持负载均衡。 - [以非加密方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0229.md): 调用psycopg2.connect(dsn)创建数据库连接,步骤如下:非透明多写特性下,用户需要指定数据库名称、服务器地址以及端口号。conn = psycopg2.connect(f"dbname=database user={userName} password={passWord} host={host} port={port}" - [以SSL方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0230.md): 通过psycopg2连接GaussDB数据库时,可以通过开启SSL加密客户端和服务端之间的通讯,为敏感数据传输提供一种安全保障手段。登录GaussDB管理控制台,在“实例管理”页面,单击实例名称进入“基本信息”页面,单击“SSL”处的,下载根证书或捆绑包,将根证书ca.pem放置在客户端。非透明多写特性下,调用psycopg2.conne - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0232.md): 在Psycopg2中,当数据库创建游标对象时默认开启事务,该游标下执行的SQL命令都在该事务中。该事务提交和回滚由connection对象处理。应用程序通过执行SQL语句来操作数据库,可以执行各种类型的SQL语句,例如创建表、插入数据、更新数据、删除数据、查询等。execute()方法用于执行单行SQL语句,executemany()方法 - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0233.md): 执行SELECT查询语句后,需要从结果集中获取数据,可以使用fetchone()方法获取单行数据,使用fetchmany(size)方法获取size行数据,或者使用fetchall()方法获取查询结果的所有行。示例如下(完整示例请参考数据库建连、执行SQL并返回结果):调用execute()方法查询结果集后,使用fetchall()方法获 - [关闭数据库连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0234.md): 数据库操作完成后,需要调用cur.close()方法关闭游标,调用conn.close()方法关闭数据库连接。假设连接对象为conn,游标对象为cur。示例如下(完整示例请参考数据库建连、执行SQL并返回结果):此方法关闭数据库连接,并不会自动调用commit()方法提交当前事务。如果要将当前事务操作(如INSERT、UPDATE、DEL - [数据库建连、执行SQL并返回结果](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0236.md): 本示例演示在Python驱动下连接数据库、建表、插入数据并返回结果的常规操作。示例运行结果如下: - [使用日志场景](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0237.md): 本示例演示在Python驱动下使用日志的场景。示例运行结果如下:LoggingConnection默认记录所有SQL信息,且不会对敏感信息进行脱敏,可通过filter函数自行定义输出的SQL内容。日志功能是psycopg2为了方便开发者显性调试全量SQL而提供的额外功能,默认情况下不需要使用。该功能会在pyscopg2执行SQL语句前打印 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0238.md): libpq接口参考提供给用户一套数据库C语言客户端开发所需的核心API函数。这些函数按功能分类组织,涵盖了从连接建立、SQL执行、异步处理到结果集处理的完整开发流程。开发者可根据实际需求查阅对应分类,快速定位所需函数。当前不支持通过libpq调用PQfn接口;本节将对部分常用接口做具体描述,若涉及其他接口可参考链接。libpq接口参考共分 - [psycopg2.connect()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0240.md): 创建数据库连接,并返回connection对象。connection对象(连接数据库实例的对象)。请参见数据库建连、执行SQL并返回结果。 - [connection.cursor()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0241.md): 创建一个数据库游标对象,用于在数据库中执行SQL命令、管理查询结果和控制事务。cursor对象。请参见数据库建连、执行SQL并返回结果。 - [cursor.execute(query,vars_list)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0242.md): 执行被参数化的SQL语句。psycopg2模块支持用%s标志的占位符。无请参见数据库建连、执行SQL并返回结果。 - [cursor.executemany(query,vars_list)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0243.md): 执行多次相同SQL语句,特别适用于需要批量插入数据的情况。无请参见数据库建连、执行SQL并返回结果。 - [connection.commit()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0244.md): 提交当前事务,将所有未保存的数据库操作(如INSERT、UPDATE、DELETE)永久保存到数据库中,并结束当前事务。以下是详细说明:持久化更改:自上次提交或回滚后,所有通过该连接执行的数据修改操作会被永久写入数据库。结束事务:提交后,当前事务终止。后续操作将属于新事务,新事务需再次提交才能生效。持久化更改:自上次提交或回滚后,所有通过 - [connection.rollback()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0245.md): 回滚当前事务,撤销所有未提交的更改,确保数据的一致性。无无请参见数据库建连、执行SQL并返回结果。 - [cursor.fetchone()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0246.md): 获取单行数据:执行SQL查询后,调用fetchone()会返回结果集的下一行数据(以元组形式),未读取数据时首次调用返回第一行。无数据时返回None:当所有行均被读取后,再次调用会返回None,表示结果集已耗尽。游标控制:每次调用fetchone()会使游标向前移动一行,按顺序遍历结果。无单个元组,为结果集的第一条结果。如果结果集中没有数 - [cursor.fetchall()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0247.md): 获取查询结果的所有(剩余)行,并将它们作为元组列表返回,适用于结果集较小的情况。场景1:假设有一个查询返回了5条记录,调用cursor.fetchall()会得到一个包含这5个元组的列表。每个元组对应一行数据,字段按查询顺序排列。场景2:假设有一个查询返回了5条记录,先调用fetchone()会返回结果集的第一行数据,游标向前移动一行。然 - [cursor.close()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0248.md): 关闭当前连接的游标。无无请参见数据库建连、执行SQL并返回结果。 - [connection.close()](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0249.md): 关闭数据库连接。此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。无无请参见数据库建连、执行SQL并返回结果。 - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0250.md): Go驱动应用开发流程依赖于Go原生的database/sql包和GaussDB开发的driver驱动,database/sql包提供用户使用的标准接口,GaussDB实现需要被database/sql包调用的接口。Go开发应用程序的流程可分为环境准备、连接数据库、执行SQL语句、处理结果集、关闭连接,开发流程如图1所示。 - [环境准备](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0252.md): 下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussDB-driver*.tar.gz);echo - [连接参数参考](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0254.md): Go驱动的常用连接参数,如表1所示。Go驱动可以通过以下方式获取连接参数配置值,分别为:DSN/URL连接串(显式指定)环境变量[PGXX](部分参数可通过环境变量来指定,详见表1)默认值连接参数配置值的生效优先级:DSN/URL连接串 > 环境变量[PGXX] > 默认值。以配置连接参数中的端口号为例:创建数据库连接对象时,端口号优先从 - [以非加密方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0255.md): 使用Go驱动开发时,配置连接参数并生成连接串,再调用Golang中database/sql的sql.Open()接口创建一个新的SQL数据库连接对象,sql.Open()并不会立即建立数据库连接,实际建立连接是在第一次进行数据库操作(如查询或db.Ping())时才建立。可以通过调用Go sql的标准接口db.Ping()检查数据库连接是 - [以SSL方式连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0256.md): 应用程序通过Go驱动连接GaussDB数据库时,可以开启SSL加密客户端和服务端之间的通讯。当开启SSL加密模式时,Go驱动默认执行TLS 1.3标准协议,支持SSL加密模式最低为TLS 1.2标准协议。本小节主要介绍如何采用SSL方式对客户端进行配置。已经获取服务端所需要的证书和私钥文件,并完成服务端配置;同时已经获取客户端所需要的cl - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0257.md): type DB的Exec类方法用于执行不返回结果集的SQL语句,比如CREATE TABLE、INSERT、UPDATE、DELETE等DDL和DML语句。Query类方法用于执行SELECT查询语句。以下给出Exec方法使用的一个示例(完整示例请参考示例一)。前提条件:已经连接数据库,连接对象为db。调用Exec方法向testExec表 - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0258.md): 执行SELECT语句查询数据后,可以使用type Rows接口和type Row接口对数据结果集进行处理。type Row接口用于处理单行结果,提供(r *Row)Scan(dest ...interface{})方法将数据扫描到指定的变量。type Rows接口用于处理多行结果,提供遍历方法(rs *Rows)Next()和数据扫描方法 - [关闭数据库连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0259.md): 操作完成后,可以使用(db *DB)Close()方法关闭数据库连接。假设连接句柄为db,则关闭数据库连接的操作如下: - [典型应用开发示例](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0260.md): 本章节的示例演示连接数据库、建表、插入数据并返回结果的常规操作。示例一以单ip:port为例,示例二以多ip:port为例。示例运行结果如下:示例运行结果如下: - [type DB](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0262.md): type DB接口是database/sql包中的核心接口之一,它定义了一系列的方法,用于执行SQL查询、事务管理等操作,如表1所示。Query类方法Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()类方法执行,若非查询语句通 - [type Stmt](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0263.md): type Stmt接口主要用于预编译SQL语句,常用方法如表1所示。Query类方法Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()类方法执行,若非查询语句通过Query类方法执行,则执行结果可能与预期不符,因此不建议使用Q - [type Tx](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0264.md): type Tx接口定义了一系列方法,用于管理数据库事务,常用方法如表1所示。Query类方法Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()类方法执行,若非查询语句通过Query类方法执行,则执行结果可能与预期不符,因此不建 - [type Rows](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0265.md): type Rows接口用于处理多行结果,提供遍历和数据扫描等方法,如表1所示。 - [type Row](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0266.md): type Row接口用于处理单行结果,提供数据扫描等方法,如表1所示。 - [type ColumnType](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0267.md): type ColumnType接口主要用于描述数据库表中的列类型信息,常用方法如表1所示。 - [type Result](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0268.md): type Result接口主要用于表示执行SQL语句后的结果,常用方法如表1所示。 - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0269.md): ecpg整体开发流程图如图1所示。包括准备ecpg开发相关组件、嵌入式SQL-C程序开发、预处理嵌入式SQL-C程序、编译C程序、执行C程序。其中嵌入式SQL-C程序开发流程图如图2所示。包括预处理配置、声明宿主变量、管理数据库连接、执行SQL语句、处理结果集、关闭连接。 - [准备ecpg开发相关组件](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0270.md): 进行ecpg应用程序开发前,需确保开发环境已正确配置GaussDB客户端组件及编译工具链。ecpg的开发依赖于特定的预处理器、动态链接库及头文件。核心组件的使用路径及编译引用规则如下表所示:编译预处理工具准备:ecpg开发需要GCC(GNU Compiler Collection)编译器进行编译,建议使用7.3.0版本。ecpg客户端工具 - [核心概念简介](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0272.md): 嵌入式SQL-C程序开发,是指利用ecpg预编译器,在标准的C语言代码中直接插入SQL语句的编程方法。通过这种方式,开发者可以在单一源文件中,结合C语言的过程控制能力与SQL的数据处理能力,高效构建数据库应用程序。在开始编写具体的嵌入式代码之前,了解以下基础概念将有助于您更好地组织程序:在嵌入式开发中,您的源码(.pgc)实际上要经历两道 - [声明宿主变量](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0273.md): 宿主变量是C程序与SQL交互的桥梁,必须在特定代码块中声明。语法如下:声明区域以下面的代码开始:EXEC SQL BEGIN DECLARE SECTION;以下面的代码结束:EXEC SQL END DECLARE SECTION;在此之间,必须有常规的C语言变量声明,比如:int x = 4; char foo[16], bar - [管理数据库连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0274.md): 使用如下语句连接数据库:target可以通过如下方法声明,斜体部分为变量,请根据实际情况进行修改:dbname[@hostname][:port]tcp:gaussdb://hostname[:port][/dbname][?options]unix:gaussdb://hostname[:port][/dbname][?options] - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0275.md): 嵌入式SQL-C程序支持直接执行静态SQL语句(如SELECT、INSERT),也支持执行动态SQL语句。动态SQL语句详情请参考执行动态SQL语句。本节主要介绍执行静态SQL语句。静态SQL语句执行步骤如下:通过INTO关键字将查询结果直接映射到绑定的宿主变量中。完整使用示例如下:前提条件:需要提前创建testdb数据库。运行结果如下( - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0276.md): 返回单行结果的SELECT语句可以直接使用EXEC SQL执行,请参见执行SQL语句章节。示例:/* 首先建立一个表并插入数据 */ EXEC SQL CREATE TABLE test_table (number1 integer, number2 integer); EXEC SQL INSERT INTO test_table (n - [关闭连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0277.md): 业务逻辑处理完毕后,必须显式关闭数据库连接以释放底层资源,防止服务端连接泄露。使用如下语句关闭连接:EXEC SQL DISCONNECT [connection];根据不同的并发或多实例管理需求,[connection]参数可采用以下四种方式进行声明:connection-name(指定连接名):精确关闭已命名的特定数据库连接。defa - [ALLOCATE DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0279.md): 分配一个新命名的SQL描述符区域。nameSQL描述符名称。大小写敏感,是一个SQL标识或者一个宿主变量。DEALLOCATE DESCRIPTOR,GET DESCRIPTOR,SET DESCRIPTOR - [CONNECT](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0280.md): 在客户端和SQL服务器之间建立连接。connection_target以下形式指定连接的目标服务器:[ database_name ] [ @host ] [ :port ]:通过TCP/IP连接。unix:gaussdb://host [ :port ] / [ database_name ] [ ?connection_option - [DEALLOCATE DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0281.md): 释放SQL描述符区域。nameSQL描述符名称。大小写敏感,是一个SQL标识符或一个宿主变量。ALLOCATE DESCRIPTOR,GET DESCRIPTOR,SET DESCRIPTOR - [DECLARE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0282.md): 声明一个游标用于迭代预备语句的结果集。该命令与内核SQL命令的DECLARE在语义上略有不同,后者执行查询并准备结果集以便检索,而嵌入式SQL命令只是将一个名称声明为“循环变量”并用于在查询的结果集上迭代,实际在使用OPEN命令打开游标时执行。cursor_name游标名称,大小写敏感。可以是一个SQL标识符或者一个宿主变量。游标名称,大 - [DESCRIBE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0283.md): 检索预准备语句中包含的结果列的元数据信息。prepared_name预备语句名称。可以是一个SQL标识符或者宿主变量。预备语句名称。可以是一个SQL标识符或者宿主变量。descriptor_name描述符名称。大小写敏感,可以是一个SQL标识符或者一个宿主变量。描述符名称。大小写敏感,可以是一个SQL标识符或者一个宿主变量。sqlda_n - [DISCONNECT](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0284.md): 关闭一个或所有的数据库连接。connection_name由CONNECT命令建立的数据库连接名称。由CONNECT命令建立的数据库连接名称。CURRENT关闭当前连接,它可以是最近打开的连接或者是由SET CONNECTION命令设置的连接。如果没有参数被传入给DISCONNECT命令,当前链接则会作为默认值被关闭。关闭当前连接,它可以 - [EXECUTE IMMEDIATE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0285.md): 预备并且执行动态指定的SQL语句,不检索结果行。string包含要被执行的SQL语句的C字符串或者宿主变量。使用EXECUTE IMMEDIATE和名为command的宿主变量执行INSERT语句:sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: - [GET DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0286.md): 检索查询结果集的信息,并且将它存储到宿主变量中。在使用该命令将信息传递给宿主语言变量之前通常使用FETCH或者SELECT填充标识符区域。该命令有两种形式:检索描述符的头部项,适用于全面查看结果集。列号作为附加参数,检索特定列的信息。检索描述符的头部项,适用于全面查看结果集。列号作为附加参数,检索特定列的信息。descriptor_nam - [OPEN](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0287.md): 打开一个游标,并将实际值选择性地绑定到游标声明中的占位符。该游标必须事先使用DECLARE命令声明过。执行OPEN命令会在服务器上执行查询。cursor_name被打开的游标的名称。可以是一个SQL标识符或者一个宿主变量。被打开的游标的名称。可以是一个SQL标识符或者一个宿主变量。value被绑定到游标中一个占位符的值。可以是一个SQL常 - [PREPARE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0288.md): 准备用于执行的语句。name预备查询标识符。预备查询标识符。string动态构造的SQL语句,可以是C字符串或宿主变量。动态构造的SQL语句,可以是C字符串或宿主变量。ecpg提供的PREPARE语句不直接等同于内核提供的PREPARE语法,举例如下:GaussDB语法:嵌入式SQL语句:EXEC SQL PREPARE I(int, i - [SET AUTOCOMMIT](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0289.md): 设置当前数据库会话的自动提交行为。默认情况下,嵌入式SQL程序不自动提交,因此需要显式地发出COMMIT。该命令可以把会话改成自动提交模式,使每一个单独的语句都会被隐式提交。 - [SET CONNECTION](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0290.md): 设置一个数据库连接。connection_name由CONNECT命令建立的数据库连接名称。CONNECT,DISCONNECT - [SET DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0291.md): 在SQL描述符区域中设置信息,描述符区域通常用于绑定预备查询执行中的参数。该命令有两种功能:用于描述符头部,它独立于特定的数据。为由数字标识的特定数据赋值。用于描述符头部,它独立于特定的数据。为由数字标识的特定数据赋值。descriptor_name描述符名称。描述符名称。descriptor_header_item标记识别设置的头部信息 - [TYPE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0292.md): 定义一个新的数据类型。当运行带有-c选项的ecpg时,仅标识该命令。type_name数据类型名称。数据类型名称。ctypeC语言数据类型。C语言数据类型。使用EXEC SQL TYPE的示例前提条件:示例在ecpg预处理阶段需要添加-c参数,并且需要提前创建testdb数据库。#include #include < - [VAR](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0293.md): 将新的C语言数据类型分配给宿主变量。宿主变量必须预先在声明段声明。对于VAR的用法需要谨慎。使用VAR语句后数据类型的变化可能会导致内存地址无效,从而导致数据变量无效,出现无法成功赋值的场景。若在宿主变量声明段中确定好数据类型,则无须使用VAR语句。varnameC语言变量名称。C语言变量名称。ctypeC语言类型说明。C语言类型说明。 - [WHENEVER](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0294.md): 定义一个行为,它会在SQL执行异常时(行未找到、SQL告警或错误)被调用。SQLERROR当SQL语句执行期间发生错误时,调用指定操作。当SQL语句执行期间发生错误时,调用指定操作。SQLWARNING当SQL语句执行期间发生告警时,调用指定操作。当SQL语句执行期间发生告警时,调用指定操作。NOT FOUND当SQL语句检索或者影响为零 - [ecpg预处理、编译、执行](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0295.md): 已准备嵌入式SQL-C源程序,以.pgc为后缀名,ecpg负责将其转换成可被编译器编译的C语言程序。生成的C语言程序使用gcc命令编译为可执行文件,运行该可执行文件实现客户端程序访问数据库。嵌入式SQL-C程序开发中,一般需要包含以下几个头文件:其中,sqlca是SQL通信区(SQL Communication Area),用于存储SQL - [创建表、插入数据并查询](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0297.md): 前提条件:需要提前创建testdb数据库。在数据库连接过程中,若连接语句中指定了ip-port,则必须指定username/password,该规则由GaussDB内核通信认证所决定。若不指定ip-port,则通过本地$PGPORT(UDS协议)进行通信。以下介绍几种常用连接数据库的方式(详情请参考管理数据库连接,CONNECT):此示例 - [日期、时间戳与区间解析](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0298.md): 此示例使用库函数对时间和日期类型进行不同操作。具体使用方式请参见使用库函数章节。运行结果如下: - [解析、运算数值类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0299.md): 此示例使用pgtypes库函数对numeric类型进行不同操作。#include #include #include #include #include char* nums[] = { "2E3 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0301.md): ecpg接口参考主要介绍pgtypes库提供的用户在嵌入式SQL-C源码程序中可使用的数据类型相关接口。pgtypes库将SQL数据类型映射到C语言数据类型,并提供一些接口实现其基本功能和运算。 - [区间类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0302.md): 表1列出了ecpg提供的区间类型(interval)数据的常用接口:请参见典型应用开发示例章节。 - [数值类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0303.md): 表1列出了ecpg提供的数值类型(numeric/decimal)数据的常用接口:请参见典型应用开发示例章节。 - [日期类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0304.md): 表1列出了ecpg提供的日期类型(date)数据的常用接口:请参见典型应用开发示例章节。 - [时间戳类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0305.md): 表1列出了ecpg提供的时间戳(timestamp)数据的常用接口:请参见典型应用开发示例章节。 - [兼容性参考](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0306.md): 数据库的Go驱动当前不适配业界成熟ORM框架(比如xorm)。在创建数据库连接时传入的驱动名称兼容“opengauss”、“postgres”、“postgresql”。设置环境变量GOENV_REGIST_ALL为false后,支持GaussDB的Go驱动与PG的Go驱动并存;若环境变量GOENV_REGIST_ALL缺省或设置为tru - [数据类型映射关系](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0309.md): 数据类型、JAVA变量类型以及JDBC类型索引关系如表1所示。ORA:Oracle,MYSQL:MySQL。非透明多写特性下,兼容Oracle/MySQL。 - [数据类型转换规则](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0310.md): 数据类型、JAVA变量类型以及JDBC类型索引关系如表1所示。非透明多写特性下,兼容ORA/MYSQL。发送到服务端的类型非最终存储到数据库表中的类型,下表中发送到数据库的类型对应到数据库表中的类型请参见《参考》中“SQL参考 > 类型转换 > 值存储”章节,其中的类型转换规则同样适用于MYSQL兼容模式。JDBC连接参数详情请参见连接参 - [日志管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0311.md): GaussDB JDBC驱动程序支持使用日志记录来帮助解决在应用程序中使用GaussDB JDBC驱动程序时遇到的问题。GaussDB JDBC支持如下两种日志管理方式:对接应用程序使用的SLF4J日志框架。对接应用程序使用的JdkLogger日志框架。SLF4J和JdkLogger是业界Java应用程序日志管理的主流框架,描述应用程序如 - [batchMode设置错误](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0313.md): 设置参数batchMode=on且reWriteBatchedInserts=true,使用JDBC批量插入数据后,提示绑定参数数量与语句需要的参数数量不一致:示例:// conn是已经创建的Connection对象,创建该connection的url连接串包含batchMode=on&reWriteBatchedInserts=true - [Hibernate框架插入数据开启校验时报错](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0314.md): 客户从ORA模式数据库迁移到GaussDB数据库,表结构使用DRS工具进行迁移,迁移后客户原业务代码不可用,Hibernate框架校验表结构报错。示例:原ORA模式数据库中Student表结构为如下格式:id number(15,0) sid number(15,0) age number(10,0)使用DRS工具迁移到GaussDB数据 - [使用SSL方式建连报错或阻塞](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0315.md): JDBC使用SSL方式建立连接时,会在客户端获取强随机数,建立连接过程中可能出现以下现象:场景1:如果连接串中配置了loginTimeout,可能会报Connection attempt timed out。场景2:如果连接串中不配置loginTimeout,可能会建连阻塞,通过JDK命令jstack 查询到的阻塞栈如下图所示。 - [配置参数说明](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0317.md): 本章节对odbc.ini文件配置参数进行详细说明,参见表1:用户通过ODBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。 - [连接参数说明](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0319.md): libpq的所有连接参数统一以字符串形式构造和传递,无论参数类型是主机名、端口、密码还是布尔选项。具体参数及其描述如下表所示:配置以上连接参数时,建议配置合法值,如果配置非法值,可能导致建立连接失败或者实际生效值为默认值。驱动与数据库建立连接过程中,Socket(套接字)建立之后,由驱动以key value形式向数据库发送的第一个报文为首 - [预备语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0321.md): 当SQL语句的条件参数在编译期未知,或该语句在业务逻辑中需要被高频重复执行时,建议使用预备语句机制。此机制可显著提升执行效率并防止SQL注入。使用命令PREPARE准备语句。对于对于运行期才确定的动态值使用占位符“?”:EXEC SQL PREPARE stmt1 FROM "SELECT oid, datname FROM pg_dat - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0323.md): 本节旨在详细介绍如何在C语言程序与嵌入式SQL语句之间,利用宿主变量实现高效、安全的数据传递。在嵌入式SQL-C程序中,C语言被视为宿主语言。凡是定义在C代码中并在EXEC SQL语句里被引用的变量,统称为宿主变量。它们是打通C语言内存空间与数据库内核数据之间的核心媒介。数据交互的本质是C语言原生数据类型与GaussDB数据类型之间的匹配 - [声明段](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0324.md): 要在嵌入式SQL-C程序与数据库之间实现数据的双向传递(例如将C程序的参数传递给SQL语句,或将查询结果回传给C程序),必须在特定的声明段中定义相关的C语言变量。这一段代码的核心作用是告知ecpg预处理器哪些变量将被用于SQL交互,以便预处理器能够准确识别这些变量的内存地址与数据类型。声明段必须由EXEC SQL BEGIN DECLAR - [检索查询](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0325.md): 对于常用的检索查询,嵌入式SQL提供了常规命令SELECT和FETCH的特殊变体。这些命令使用特殊的INTO子句,用以指定检索出来的数值存储在哪些宿主变量里。SELECT用于返回单行的查询,FETCH用于使用游标返回多行的查询。使用SELECT/* * 假设已存在表test: * CREATE TABLE test (a in - [数据类型映射](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0326.md): 当ecpg应用程序在GaussDB服务器和C语言程序之间交换值时(例如:从服务器检索查询结果或者执行带有输入参数的SQL语句),在GaussDB数据类型和宿主语言变量类型(具体的C语言数据类型)之间需要进行值的转换。有两种数据类型可以使用:简单的GaussDB数据类型,如integer和text,可以直接被应用程序读取和写入。其他Gaus - [处理字符串](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0327.md): 处理SQL字符串数据类型(例如:varchar、text),有两种方式来声明宿主变量:使用char[](一个char字符串),该方式是C语言程序中处理字符数据最常见的方式。EXEC SQL BEGIN DECLARE SECTION; char str[50]; EXEC SQL END DECLARE SECTION;注意字符串 - [使用非初级类型的宿主变量](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0328.md): 非初级类型的宿主变量包括数组、typedef、结构体和指针类型的宿主变量。有两种将数组作为宿主变量的情况。在char[]或者VARCHAR[]中存储文本字符串。在检索多行查询结果时不使用游标。如果不使用数组,则处理多行查询结果时必须使用游标以及FETCH命令。但是如果使用数组类型作为宿主变量,则一次可以检索多行。数组长度需能容纳查询结果的 - [访问特殊数据类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0329.md): ecpg支持numeric、decimal、date、timestamp和interval数据类型。由于这些数据类型的内部结构较为复杂,无法被映射到初级数据类型的宿主变量,因此应用程序通过声明特殊类型的宿主变量,以及使用pgtypes库中的函数来处理这些特殊类型。pgtypes库中的接口函数请参见ecpg接口参考章节。timestamp、 - [处理非初级SQL数据类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0330.md): 本节介绍如何处理ecpg应用中的非标量以及用户定义的SQL级别的数据类型。注意此处和使用非初级类型的宿主变量章节中介绍的对于非初级类型的宿主变量的处理不同。数组ecpg不直接支持多维SQL级别数组。一维SQL数组可以被映射到C语言数组类型的宿主变量。但是在创建语句时,如果ecpg无法识别列的类型,则将无法检查C语言数组是否是SQL数组的输 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0332.md): 在大多数情况下,应用程序执行的SQL语句在编写应用程序时必须是已知的。但是在某些情况下,SQL语句是在运行时进行构造或由外部提供的。这种情况下不能将SQL语句直接嵌入到C语言源代码中,但是动态SQL语句支持通过一个字符串变量调用所提供的SQL语句。 - [执行没有结果集的语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0333.md): 执行EXECUTE IMMEDIATE命令示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "CREATE TABLE test1 (...);"; EXEC SQL END DECLARE SECTION; EXEC SQL EXECUTE IMMED - [执行具有输入参数的语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0334.md): 准备一个包含问号“?”作为参数占位符的SQL语句。使用EXECUTE语句和USING子句来执行该语句并传递参数。示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "INSERT INTO test1 VALUES(?, ?);"; EXEC SQL END DE - [执行带有结果集的语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0335.md): 执行具有单独结果集的SQL语句,可以使用EXECUTE。若要保存结果,则需要额外使用INTO子句。示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "SELECT a, b, c FROM test1 WHERE a > ?"; int v1, v2; - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0337.md): 有两种非互斥的方法可以处理嵌入式SQL程序的异常情况和告警:使用WHENEVER命令设置回调,处理告警和错误。参见设置回调。通过sqlca获取错误或者告警的详细信息,进行相应处理。参见sqlca。使用WHENEVER命令设置回调,处理告警和错误。参见设置回调。通过sqlca获取错误或者告警的详细信息,进行相应处理。参见sqlca。 - [设置回调](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0338.md): 当告警或者错误发生时,直接执行具体操作进行处理,设置回调命令如下:EXEC SQL WHENEVER condition action;condition取值范围:SQLERROR:当在SQL语句执行期间发生错误时,调用指定操作。SQLWARNING:当在SQL语句执行期间发生告警时,调用指定操作。NOT FOUND:当SQL语句检索或者 - [sqlca](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0339.md): 嵌入式SQL接口提供了sqlca(SQL通信区)的全局变量。sqlca包含告警和错误信息。如果在语句执行期间发生多个告警和错误,那么sqlca只保存最后一个信息。在一个多线程的程序中,每一个线程会自动得到它的sqlca副本。数据结构如下:struct { char sqlcaid[8]; long sqlabc; - [SQLSTATE与SQLCODE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0340.md): SQLSTATE是一个由五个字符组成的数组。这五个字符包含数字或大写字母,它表示多种错误或告警情况的代码。SQLSTATE具有一种层次模式:前两个字符表示情况的总体分类,后三个字符表示总体情况的子类。例如:代码00000表示成功状态SQLCODE以整数的形式反映SQL语句的执行状态。具体而言:零值标志着操作的成功执行;正值通常指示成功但伴 - [使用库函数](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0341.md): 若函数第一个参数为非0,则开启调试日志,第二个参数表示要打印日志的标准输出流。调试日志在标准输出流上执行,日志包含所有输入的SQL语句以及来自GaussDB服务器的结果。示例:运行结果如下([23893]为线程ID,随机生成):返回由给定名称标识的数据库连接句柄。如果connection_name设置为NULL,则返回当前连接句柄。如果没 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0343.md): SQL描述符区域是一种处理SELECT、FETCH或者DESCRIBE语句结果的高级方法。SQL描述符区域把一行数据里的数据和元数据项组合到一个数据结构中。ecpg提供了两种使用描述符区域的方法:命名SQL描述符区域和SQLDA。 - [命名SQL描述符区域](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0344.md): 一个命名SQL描述符区域由一个头部以及一个或多个条目描述符区域构成。头部包含与整个描述区域相关的信息,而条目描述符区域则描述结果行中的某一列。在使用SQL描述符区域之前,需要分配一个SQL描述符区域:EXEC SQL ALLOCATE DESCRIPTOR identifier;当不再需要这个描述符区域时,应及时释放:EXEC SQL D - [SQLDA](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0345.md): SQLDA(SQL Descriptor Area)是一个C语言结构体,用于动态处理SQL查询的结果集或输入参数。它允许程序在运行时处理未知数量和类型的列或参数。EXEC SQL include sqlda.h; sqlda_t *mysqlda; EXEC SQL FETCH 3 FROM mycursor INT - [ecpg与Pro*C兼容性对比](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0346.md): ecpg是GaussDB提供的一种用于C语言程序的嵌入式SQL预处理器,与ORA数据库Pro*C预处理器在编译执行命令、语法、嵌入式语句等行为和语义上存在差异。ecpg与Pro*C的相关使用差异对比:目前ecpg不支持EXEC SQL CONTEXT ALLOCATE、EXEC SQL CONTEXT USE、EXEC SQL CONTE - [日志输出相关参数介绍](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0347.md): 用户可以根据自己的需要,通过修改实例数据目录下的gaussdb.conf文件中特定的配置参数来控制日志的输出,从而更好地了解数据库的运行状态。可调整的配置参数请参见表1。上表有关参数级别的说明请参见表2。 - [PL/SQL语言函数](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0349.md): PL/SQL是一种可载入的过程语言。用PL/SQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可用于创建复杂条件的计算函数、定义操作符以及索引表达式。SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。这意味着客户端应用对于每一个查询都要执行以下过程:发送查询到数据库服务器 - [规格约束](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0360.md): 非透明多写场景下,自治事务执行时,将会在后台启动自治事务session,可以通过max_concurrent_autonomous_transactions设置自治事务执行的最大并行数量,取值范围:0~10000,当max_concurrent_autonomous_transactions参数设置为0时,自治事务将无法执行。在非透明多写 - [存储过程支持自治事务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0361.md): 自治事务可以在存储过程中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建存储过程语法相同,非透明多写场景请参见《参考》中“SQL参考 > SQL语法 > C > CREATE PROCEDURE”章节,示例如下。上述例子,最后在回滚的事务块中执行包含自治事务的存储过程,直接说明了自治事务的特性,即主 - [匿名块支持自治事务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0362.md): 自治事务可以在匿名块中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建匿名块语法相同,非透明多写场景请参见《参考》中“存储过程 > 声明语法 > 匿名块”章节,示例如下。上述例子,最后在回滚的事务块前执行包含自治事务的匿名块,直接说明了自治事务的特性,即主事务的回滚不会影响自治事务已经提交的内容。 - [函数支持自治事务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0363.md): 自治事务可以在函数中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与函数语法相同,非透明多写场景请参见《参考》中“SQL参考 > SQL语法 > C > CREATE FUNCTION”章节,示例如下。上述例子,最后在回滚的事务块中执行包含自治事务的函数,也能直接说明了自治事务的特性,即主事务的回滚不会 - [PACKAGE支持自治事务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0364.md): 自治事务可以在package中的存储过程或者函数中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建package中存储过程或函数语法相同,非透明多写场景请参见《参考》中“SQL参考 > SQL语法 > C > CREATE PACKAGE”章节,示例如下。gaussdb=# create datab - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0367.md): 全量物化视图仅支持对创建好的物化视图做全量刷新,而不支持做增量刷新。创建全量物化视图语法和CREATE TABLE AS语法一致(详情请参见《参考》中“SQL参考 > SQL语法 > CREATE TABLE AS”章节),不支持对全量物化视图指定NodeGroup创建。全量物化视图的创建继承GTM-Free的相关约束。 - [支持和约束](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0368.md): 通常全量物化视图所支持的查询范围与CREATE TABLE AS语句一致。创建全量物化视图可以指定分布列。可以在全量物化视图上创建索引。支持analyze、explain。全量物化视图不支持NodeGroup。不可对物化视图做增删改操作,只支持查询语句。Ustore引擎不支持全量物化视图的创建和使用。创建全量物化视图所使用的基表必须在所有 - [使用](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0369.md): 创建全量物化视图CREATE MATERIALIZED VIEW view_name AS query;刷新全量物化视图REFRESH MATERIALIZED VIEW view_name;删除物化视图DROP MATERIALIZED VIEW view_name;查询物化视图SELECT * FROM view_name;view_ - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0371.md): 增量物化视图可以对物化视图增量刷新,需要用户手动执行语句,刷新物化视图在一段时间内的增量数据。与全量创建物化视图的不同在于目前增量物化视图所支持场景较小。目前物化视图创建语句仅支持基表扫描语句或者UNION ALL语句。 - [支持和约束](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0372.md): 单表查询语句。多个单表查询的UNION ALL。在物化视图上创建索引。对物化视图进行ANALYZE操作。增量物化视图会继承基表NodeGroup创建(检查各个基表是否在同一个NodeGroup,并基于这个NodeGroup进行创建)。物化视图中不支持带Stream计划、多表join连接计划以及subquery计划。不支持WITH子句、GR - [使用](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0373.md): 创建增量物化视图CREATE INCREMENTAL MATERIALIZED VIEW view_name AS query;全量刷新物化视图REFRESH MATERIALIZED VIEW view_name;增量刷新物化视图REFRESH INCREMENTAL MATERIALIZED VIEW view_name;删除物化视图 - [密态等值查询概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0375.md): 随着企业数据上云,数据的安全隐私保护面临越来越严重的挑战。密态数据库将解决数据整个生命周期中的隐私保护问题,涵盖网络传输、数据存储以及数据运行状态;更进一步,密态数据库可以实现云化场景下的数据隐私权限分离,即实现数据拥有者和实际数据管理者的数据读取能力分离。密态等值查询将优先解决密文数据的等值类查询问题。全密态数据库使用多级加密模型,加密 - [使用gsql操作密态数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0376.md): 执行本节的SQL语句前,请确保已提前生成主密钥,并确认访问主密钥的参数。本节以完整的执行流程为例,介绍如何使用密态数据库语法,包括三个阶段:使用DDL阶段、使用DML阶段、清理阶段。注意:从keyType字符串开始,不要添加换行,不要添加空格,否则gsql工具无法识别完整参数。基于三未信安SJJ1994加密机密钥管理:使用三未信安SJJ1 - [使用JDBC操作密态数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0377.md): 获取JDBC驱动包,JDBC驱动获取及使用可参考获取驱动jar包并配置JDK环境章节。密态数据库支持的JDBC驱动包为gscejdbc.jar、gaussdbjdbc.jar、opengaussjdbc-ce.jar、gsjdbc4.jar、opengaussjdbc.jar。gscejdbc.jar(目前仅支持EulerOS操作系统): - [前向兼容与安全增强](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0378.md): 在上文中,支持通过key_info设置访问外部密钥管理的参数:使用gsql时,通过元命令\key_info xxx设置。使用JDBC时,通过连接参数conn.setProperty(“key_info”, “xxx”)设置。为保持前向兼容,还支持通过环境变量等方式设置访问主密钥的参数。第一次配置使用密态数据库时,可忽略下述方法。如果以前使 - [密态支持函数/存储过程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0379.md): 密态支持函数/存储过程,当前版本只支持sql和plpgsql两种语言。由于密态支持存储过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。函数/存储过程语法参考用户自定义函数章节和《参考》中“存储过程”章节。密态等值查询支持函数存储过程新增系统表gs_encrypted_proc,用于存储参数返回的原始数据类型。系统表 - [同城双中心计划内倒换switchover流程异常](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0381.md): 现象一:主降备出现流程失败,查看日志primary_demote超时失败。主降备出现流程失败,查看日志primary_demote超时失败。现象二:备升主出现等待集群状态恢复为normal状态超时,集群状态Unavailable,存在分片无主DN。备升主出现等待集群状态恢复为normal状态超时,集群状态Unavailable,存在分片无 - [java.sql.Array](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0382.md): java.sql.Array接口是JDBC对SQL集合类型的映射,提供了将SQL数据以数组或ResultSet对象的形式传输到客户端的方法。getArray和getArray(long index, int count)接口获取的数组类型可参考数据类型映射关系的JAVA变量类型列。例如:元素类型为varchar,getArray接口获取的 - [java.sql.Struct](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0383.md): java.sql.Struct接口是JDBC对SQL结构化类型的映射,Struct对象包含其所代表的SQL结构化类型的每个属性值,提供了将SQL数据以数组的形式传输到客户端的方法。getAttribute接口获取的对象类型为Object[],返回的数组中每个元素的类型可参考数据类型映射关系的JAVA变量类型列。例如:对于record(c1 - [存储引擎](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0386.md): 数据库存储引擎负责数据的存储、检索和管理。从整个数据库服务的组成架构来看,存储引擎向上对接SQL引擎,为SQL引擎提供或接收标准化的数据格式(元组或向量数组),向下对接存储介质,按照特定的数据组织方式,以页面、压缩单元(Compress Unit)或其他形式为单位,通过存储介质提供的特定接口完成读写操作。GaussDB通过静态编译使数据库 - [闪回恢复](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0387.md): 闪回恢复功能是数据库恢复技术的一环,可以有选择性地撤销一个已提交的事务,将数据从人为不正确的操作中进行恢复。按照恢复对象与底层机制的不同,GaussDB闪回恢复主要分为:闪回查询、闪回表、闪回DROP/TRUNCATE和闪回库。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪 - [透明数据加密](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0388.md): 透明加密提供表级数据加密存储功能。当用户使用本特性提供的语法创建加密表后,数据库向磁盘写入加密表数据前,会自动将其加密;同时,数据库从磁盘读取加密表数据后,会自动将其解密。向加密表中进行数据插入、更新、查询和删除等操作的语法与非加密表一致。使用透明加密前需先开启透明加密功能。开启操作请参见《用户指南》中“账号和网络安全 > GaussDB - [账本数据库概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0390.md): 账本数据库融合了区块链思想,将用户操作记录至两种历史表:用户历史表和全局区块表中。当用户创建防篡改用户表时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息,同时在blockchain模式下会创建一张用户历史表来记录对应用户表中每条数据的变更行为;而用户对防篡改用户表的每一次修改行为将被记录到全局区块表中。由于历史表具有 - [查看账本历史操作记录](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0391.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。数据库各个CN节点全局区块表记录单独记录,全局区块表只能记录连接到当前CN执行的SQL操作。只有拥有AUDITADMIN属性的用户才可以查看账本历史操作记录。有关数据库用户及创建用户的 - [校验账本数据一致性](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0392.md): 数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。账本数据库校验功能目前提供两种校验接口,分别为:ledger_hist_check(text, text)和ledger_gchain_check(text, text)。普通用户调用校验接口,仅能校验自己有权限访问的表。校验防篡改用户 - [归档账本数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0393.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。数据库已经正确配置审计文件的存储路径audit_directory。账本数据库归档功能目前提供两种归档接口,分别为:ledger_hist_archive(text, text)和le - [修复账本数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0394.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。当前的账本数据库机制为:全局区块表存储在CN端,各个CN数据独立。用户历史表存储在DN端,历史表记录的数据为所在DN防篡改表的数据变化。因此,在触发数据重分布时,可能导致防篡改表和用户 - [定义安全标签](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0396.md): 数据库正常运行,执行操作的用户需要具有SYSADMIN权限或者继承了内置角色gs_role_seclabel的权限。提供系统表gs_security_label来查看系统中已创建好的安全标签:SELECT * FROM gs_security_label;以某个实际业务应用举例说明,比如某公司的信息等级为公开、秘密和绝密,那么就可分别对应 - [应用安全标签](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0397.md): 数据库正常运行,执行操作的用户需要具有SYSADMIN权限或者继承了内置角色gs_role_seclabel的权限。提供系统表pg_seclabel来查看表或表列上的安全标签:SELECT * FROM pg_seclabel;提供系统表pg_shseclabel来查看用户/角色上的安全标签:SELECT * FROM pg_shsecl - [基于标签的强制访问控制检查](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0398.md): 数据库正常运行,强制访问控制检查开关(enable_mac_check=on)打开。执行操作的用户已具有所需要访问表的ACL权限。基于安全标签的强制访问控制策略规则由系统内置设定,用户不能更改:插入(INSERT)策略:只有主体安全标记等级小于等于客体安全标记等级且主体安全标记范围是客体安全标记范围的子集时才允许插入数据。查询(SELEC - [逻辑解码概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0401.md): 逻辑解码为逻辑复制提供事务解码的基础能力,GaussDB可以使用SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。由于逻辑日志是以事务为单位的,在事务提交后才能输出,且逻辑解码是由用户驱动的。因此,为了防止事务开始时的Xlog被系统回收,或所需的事务信息被VACUUM回收,GaussDB - [逻辑解码选项](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0402.md): 逻辑解码选项可以用来为本次逻辑解码提供限制或额外功能,如“解码结果是否包含事务号”、“解码时是否忽略空事务”等。对于具体配置方法,SQL函数解码请参见《参考》中“SQL参考 > 函数和操作符 > 系统管理函数 > 逻辑复制函数”章节中函数pg_logical_slot_peek_changes的可选入参'options_name'和'op - [使用SQL函数接口进行逻辑解码](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0403.md): GaussDB可以通过调用SQL函数,进行创建、删除、推进逻辑复制槽,获取解码后的事务日志。其中,user1为用户名,password为密码,gaussdb为需要连接的数据库名称,40000为数据库DN端口号,用户可根据实际情况替换。复制槽是建立在DN上的,因此需要通过DN端口连接数据库。逻辑解码选项请参见逻辑解码选项。 - [使用流式解码实现数据逻辑复制](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0404.md): 第三方复制工具通过流式逻辑解码从GaussDB抽取逻辑日志后到对端数据库回放。对于使用JDBC连接数据库的复制工具,具体代码请参考逻辑复制(非透明多写)章节。 - [逻辑解码支持DDL](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0405.md): GaussDB数据库上正常执行DDL语句,通过逻辑解码工具可以获取到DDL语句。数据库在执行DML操作的时候,存储引擎会生成对应的DML日志,用于进行恢复,对这些DML日志进行解码,即可还原对应的DML语句,生成逻辑日志。而对于DDL语句,数据库并不记录DDL原语句的日志,而是记录DDL语句涉及的系统表的DML日志。DDL种类多样、语法复 - [逻辑解码数据找回功能](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0406.md): 逻辑解码对外提供单节点DML数据找回能力,从WAL日志是否归档的角度分为在线日志找回和归档日志找回:在线数据找回:使用pg_logical_get_area_changes函数,可以在线找回相关DML数据,具体使用参考pg_logical_get_area_changes函数的使用方法。归档数据找回:OM_Agent通过pg_logica - [大容量数据库背景介绍](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0409.md): 随着处理数据量的日益增长和使用场景的多样化,数据库越来越多地面对容量大、数据多样化的场景。在过去20多年时间数据库业界的发展历程中,数据量从最初的MB、GB逐渐发展到现在的TB级数据量,在如此大规模、多样化的数据背景下,数据库管理系统(DBMS)在数据查询、数据管理方面提出了更高的要求,客观上要求数据库能够支持多种优化查找策略和运维管理方 - [表分区技术](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0410.md): 表分区技术(Table-Partitioning)通过将非常大的表或者索引从逻辑上切分为更小、更易管理的逻辑单元(分区),能够让用户对表查询、变更等语句操作具备更小的影响范围,能够让用户通过分区键(Partition Key)快速定位到数据所在的分区,从而避免在数据库中对大表的全量扫描,能够在不同的分区上并发进行DDL、DML操作。从用户 - [数据分区查找优化](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0411.md): 分区表在数据查找方面的优势主要体现在对分区键进行谓词查询的场景。例如,考虑一张以月份(Month)作为分区键的表,如图1所示。如果使用普通表设计,查询时需要进行全表扫描(Full Table Scan)。而如果以月份为分区键重新设计该表,全表扫描会被优化为分区扫描。当表内数据量很大且历史周期较长时,通过减少扫描的数据量,性能提升将非常显著 - [数据分区运维管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0412.md): 数据生命周期管理(Data Life Cycle Management,DLM) 是一套贯穿数据全生命周期的管理流程与策略体系,其核心任务之一在于为不同阶段的数据匹配最适宜且经济高效的存储介质:高频访问的新数据存放于读写速度快、可用性高的存储层,而低频访问的旧数据则迁移至成本较低、性能稍弱的存储层。鉴于旧数据更新频率低,将其压缩并转为只读 - [分区表(分区母表)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0415.md): 分区表作为用户实际操作的表对象,支持常规DML(数据操作语言)的增、删、查、改操作。通常通过在建表DDL(数据定义语言)语句中显式使用PARTITION BY子句进行定义。创建成功以后在pg_class表中新增一条记录,其parttype字段值为'p'(标识一级分区)或's'(标识二级分区),以此标记该记录对应的表为分区母表。需要注意的是 - [分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0416.md): 分区是分区表中实际保存数据的表,对应的记录通常保存在pg_partition中,各分区通过parentid字段作为外键,与pg_class表中分区母表对应的OID(对象标识符)列建立关联关系。示例:t1_hash为一个分区表: - [分区键](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0417.md): 分区键由一个或多个列组成,分区键值结合对应分区策略能够唯一确定某一元组所在的分区,通常在建表时通过PARTITION BY语句指定:范围分区表和列表分区表支持最多16列分区键,其他分区表只支持1列分区键。 - [范围分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0419.md): 范围分区(Range Partition)依据所设定的每个分区的分区键值范围,来实现数据到各个分区的映射。在实际的生产系统里,范围分区是很常用的一种分区类型,通常在以时间维度(Date、Time Stamp)描述数据场景中使用。范围分区有两种语法格式,示例如下:VALUES LESS THAN的语法格式对于从句是VALUE LESS TH - [哈希分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0420.md): 哈希分区(Hash Partition)是依据GaussDB内置的哈希算法,对分区键进行运算,从而实现数据到各分区的映射。在分区键取值范围不倾斜(no data skew)的场景下,哈希算法能够让数据行在各个分区之间均匀分布,进而使得各分区的大小大致保持一致,是实现分区间数据均匀分布的理想方法。哈希分区也是范围分区的一种易于使用的替代方法 - [列表分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0421.md): 列表分区(List Partition)允许用户在每个分区的描述里,为分区键指定离散值列表,从而控制数据行如何被映射到各个分区。这种分区方式的优势在于,它能以枚举分区值的形式对数据进行分区操作,尤其适合对无序且不相关的数据集进行分组与组织。在处理分区键值时,若某些值未被定义在列表之中,用户可以借助默认分区(DEFAULT)来存储这些数据。 - [二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0422.md): 二级分区(Subpartition,也叫组合分区)是基本数据分区类型的组合,将表通过一种分区策略进行分区,然后使用第二种分区策略将每个分区进一步细分为二级分区。给定分区的所有二级分区表示数据的逻辑子集。常见的二级分区组合如下所示:Range-RangeRange-ListRange-HashList-RangeList-ListList- - [分区表对导入操作的性能影响](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0423.md): 在GaussDB中,相较于非分区表,分区表在数据插入处理流程中额外增加了分区路由环节的开销。所以从整体来看,分区表场景下的数据插入开销主要由两部分构成,如图1所示:(1)heap-insert基表插入:此部分负责解决元组(tuple)存入对应堆表(heap表)的问题,并且这一操作在普通表和分区表中是通用的;(2)partition-rou - [创建分区表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0426.md): 单个表的最大分区数为1048575(包括一级分区和二级分区)。较多的分区会导致系统中文件数增加、占用更多的系统缓存和锁资源,进而影响系统的性能。在默认配置下,建议单个表的分区数不超过400。如果实际使用的热点分区数超过400,考虑到分区表的使用性能,建议调整FASTPATH_PART的值(调整方法参见GUC参数num_internal_l - [使用和管理分区表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0427.md): 分区表支持大部分非分区表的相关功能,具体请参见《参考》中常规表的各类操作语法相关资料。除此之外,分区表还支持大量的分区级操作命令,包括分区级DQL/DML(如SELECT、INSERT、UPDATE、DELETE、UPSERT、MERGE INTO)、分区级DDL(如ADD、DROP、TRUNCATE、EXCHANGE、SPLIT、MER - [分区表DQL/DML](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0428.md): 由于分区的实现完全体现在数据库内核中,用户对分区表的DQL/DML与非分区表相比,在语法上没有任何区别。出于分区表的易用性考虑,GaussDB支持指定分区的DQL/DML操作,指定分区可以通过PARTITION (partname)或者PARTITION FOR (partvalue)来进行。对于二级分区,可以通过SUBPARTITION - [分区表静态剪枝](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0431.md): 对于检索条件中分区键上带有常量的分区表查询语句,在优化器阶段将对indexscan、bitmap indexscan、indexonlyscan等算子中包含的检索条件作为剪枝条件,完成分区的筛选。算子包含的检索条件中需要至少包含一个分区键字段,对于含有多个分区键的分区表,包含任意分区键子集即可。静态剪枝只支持常量。部分非常量条件会在计划生 - [PBE动态剪枝](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0433.md): 对于检索条件中分区键上带有参数的分区表查询语句,在优化器阶段只能判定“具备分区剪枝条件”,在执行启动完成绑参后,再进行动态剪枝。动态剪枝的触发行为与静态剪枝一致,只是触发阶段不同。对于部分stable函数,如to_timestamp等类型转换函数,其剪枝结果可能会因GUC参数的变动而受到影响。为了保持性能优化效果,可以通过对表执行anal - [参数化路径动态剪枝](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0434.md): 当分区表的分区键所在列生成参数化路径(分区键所在列和其他表的列进行关联,且分区表作为内表生成NestLoop索引扫描)时,会触发参数化路径动态剪枝。参数化路径动态剪枝会在每次外表扫描完成后,驱动内表扫描时进行一次。参数化路径动态剪枝在多数情况下不支持子查询表达式(剪枝算子选择参数化路径且分区键上包含了一个InitPlan子查询条件除外), - [Partition Iterator算子消除](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0436.md): 在当前分区表架构中,执行器通过Partition Iterator算子去迭代访问每一个分区。当分区剪枝结果只有一个分区时,Partition Iterator算子就失去了迭代器的作用,在此情况下消除Partition Iterator算子,可以避免执行时产生一些不必要的开销。由于执行器的PIPELINE架构,Partition Itera - [Merge Append](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0437.md): 当对分区表进行全局排序时,通常SQL引擎的实现方式是先通过Partition Iterator + PartitionScan对分区表做全量扫描,然后进行Sort排序操作,这样难以利用分区局部有序性加速排序过程。针对这类问题,目前分区表支持分区归并排序执行策略,利用Merge Append的执行机制改进分区表的排序机制。非透明多写特性下, - [Max/Min](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0438.md): 当对分区表使用Max/Min函数时,通常SQL引擎的实现方式是先通过Partition Iterator + PartitionScan对分区表做全量扫描,然后进行Sort + Limit操作。如果扫描分区时使用索引扫描,可以先对每个分区进行Limit操作,计算Max/Min值,最后在分区表上做Sort + Limit操作。此时在分区表上 - [动态剪枝性能优化](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0439.md): 当分区键带有等值查询条件时,扫描的分区数量可以裁剪到单分区中,数据库引擎可直接通过分区路由映射到目标分区获取分区信息,实现精确分区定位,提升动态剪枝的性能,从而降低扫描算子初始化的底噪。动态剪枝性能优化不会在计划上体现。仅支持分区键带等值条件,且裁剪到单分区的场景。仅支持gplan使用动态剪枝,cplan不支持动态剪枝。仅支持单列分区键, - [分区索引](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0440.md): 分区表上的索引共有三种类型:Global Non-Partitioned Index,如图1所示。Global Partitioned Index,如图2所示。Local Partitioned Index,如图3所示。Global Non-Partitioned Index,如图1所示。Global Partitioned Index, - [级联收集统计信息](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0442.md): 在对分区表执行ANALYZE | ANALYSE语法时,系统会根据用户指定或默认的PARTITION_MODE,自动收集分区表中所有符合语义的分区级统计信息,PARTITION_MODE的相关信息请参见《参考》中“SQL参考 > SQL语法 > A > ANALYZE | ANALYSE”中的PARTITION_MODE参数。非透明多写特 - [分区级统计信息](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0443.md): 当前分区表支持指定单分区统计信息收集,已收集统计信息的分区会在再次收集时自动更新维护。该功能适用于列表分区、哈希分区和范围分区。优化器在处理分区表时,会优先采用指定分区的统计信息来进行查询优化。但是如果指定分区尚未收集统计信息,此时优化器会通过改写分区子句的方式开展剪枝优化工作,详情参见通过改写分区子句剪枝优化。当缺少分区级统计信息时,优 - [非SMP场景下的Partition-wise Join](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0445.md): 在非SMP场景下,Partition-wise Join的路径是基于规则生成的,即只要符合条件,即可生成Partition-wise Join路径,而无需对比路径代价。其开关为GUC参数enable_partitionwise。非SMP场景下的Partition-wise Join的使用规格:只支持一级RANGE分区。支持Hash Joi - [SMP场景下的Full Partition-wise Join](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0446.md): SMP场景下的Partition-wise Join计划是基于代价选择的,在路径生成的过程中,会对比Partition-wise Join和非Partition-wise Join路径的估算代价,选择代价较低的路径。其开关参数为GUC参数enable_smp_partitionwise。SMP场景下的Partition-wise Join - [SMP场景下的Partial Partition-wise Join](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0447.md): Partial Partition-wise Join是指相互Join的两张表中有一张表是分区表,另一张表可以为任意类型,在任意类型的这张表的上层需要增加一个Stream Redistribute算子,将数据分发后与分区表一侧进行匹配。Partial Partition-wise Join路径生成的条件是分区表的分区键是一个Join ke - [范围分区表新增分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0459.md): 使用ALTER TABLE ADD PARTITION可以将分区添加到现有分区表的最后面,新增分区的上界值必须大于当前最后一个分区的上界值。例如,对范围分区表range_sales新增一个分区。ALTER TABLE range_sales ADD PARTITION date_202005 VALUES LESS THAN ('2020 - [列表分区表新增分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0460.md): 使用ALTER TABLE ADD PARTITION可以在列表分区表中新增分区,新增分区的枚举值不能与已有的任一个分区的枚举值重复。例如,对列表分区表list_sales新增一个分区。ALTER TABLE list_sales ADD PARTITION channel5 VALUES ('X') TABLESPACE tb1;当列表 - [二级分区表新增一级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0462.md): 使用ALTER TABLE ADD PARTITION可以在二级分区表中新增一个一级分区,这个操作可以作用在一级分区策略为RANGE或者LIST的情况。如果这个新增一级分区下声明了二级分区定义,则数据库会根据定义创建对应的二级分区;如果这个新增一级分区下没有声明二级分区定义,则数据库会自动创建一个默认的二级分区。例如,对二级分区表rang - [二级分区表新增二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0463.md): 使用ALTER TABLE MODIFY PARTITION ADD SUBPARTITION可以在二级分区表中新增一个二级分区,这个行为可以作用在二级分区策略为RANGE或者LIST的情况。例如,对二级分区表range_list_sales的date_202004新增一个二级分区。ALTER TABLE range_list_sales - [对一级分区表删除分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0465.md): 使用ALTER TABLE DROP PARTITION可以删除指定一级分区表的任何一个分区,这个操作可以作用在范围分区表、列表分区表上。例如,通过指定分区名删除范围分区表range_sales的分区date_202005,并更新Global索引。ALTER TABLE range_sales DROP PARTITION date_20 - [对二级分区表删除一级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0466.md): 使用ALTER TABLE DROP PARTITION可以删除二级分区表的一个一级分区,这个操作可以作用在一级分区策略为RANGE或者LIST的情况。数据库会将这个一级分区,以及一级分区下的所有二级分区都删除。例如,通过指定分区名删除二级分区表range_list_sales的一级分区date_202005,并更新Global索引。AL - [对二级分区表删除二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0467.md): 使用ALTER TABLE DROP SUBPARTITION可以删除二级分区表的一个二级分区,这个操作可以作用在二级分区策略为RANGE或者LIST的情况。例如,通过指定分区名删除二级分区表range_list_sales的二级分区date_202005_channel1,并更新Global索引。ALTER TABLE range_li - [对一级分区表交换分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0469.md): 使用ALTER TABLE EXCHANGE PARTITION可以对一级分区表交换分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001和普通表exchange_sales进行交换,不进行分区校验,并更新Global索引。ALTER TABLE range_sales EXCHANGE PARTITIO - [对二级分区表交换二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0470.md): 使用ALTER TABLE EXCHANGE SUBPARTITION可以对二级分区表交换二级分区。例如,通过指定分区名将二级分区表range_list_sales的二级分区date_202001_channel1和普通表exchange_sales进行交换,不进行分区校验,并更新Global索引。ALTER TABLE range_li - [对一级分区表清空分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0472.md): 使用ALTER TABLE TRUNCATE PARTITION可以清空指定一级分区表的任何一个分区。例如,通过指定分区名清空范围分区表range_sales的分区date_202005,并更新Global索引。ALTER TABLE range_sales TRUNCATE PARTITION date_202005 UPDATE GL - [对二级分区表清空一级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0473.md): 使用ALTER TABLE TRUNCATE PARTITION可以清空二级分区表的一个一级分区,数据库会将这个一级分区下的所有二级分区都进行清空。例如,通过指定分区名清空二级分区表range_list_sales的一级分区date_202005,并更新Global索引。ALTER TABLE range_list_sales TRUNC - [对二级分区表清空二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0474.md): 使用ALTER TABLE TRUNCATE SUBPARTITION可以清空二级分区表的一个二级分区。例如,通过指定分区名清空二级分区表range_list_sales的二级分区date_202005_channel1,并更新Global索引。ALTER TABLE range_list_sales TRUNCATE SUBPARTIT - [对范围分区表分割分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0476.md): 使用ALTER TABLE SPLIT PARTITION可以对范围分区表分割分区。例如,假设范围分区表range_sales的分区date_202001定义范围为['2020-01-01', '2020-02-01')。可以指定分割点'2020-01-16'将分区date_202001分割为两个分区,并更新Global索引。ALTER - [对列表分区表分割分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0477.md): 使用ALTER TABLE SPLIT PARTITION可以对列表分区表分割分区。例如,假设列表分区表list_sales的分区channel2定义范围为('6', '7', '8', '9')。可以指定分割点('6', '7')将分区channel2分割为两个分区,并更新Global索引。ALTER TABLE list_sales - [对*-RANGE二级分区表分割二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0479.md): 使用ALTER TABLE SPLIT SUBPARTITION可以对*-RANGE二级分区表分割二级分区。例如,假设*-RANGE二级分区表list_range_sales的二级分区channel1_customer4的定义范围为[1000, MAXVALUE)。可以指定分割点1200将二级分区channel1_customer4分割为 - [对*-LIST二级分区表分割二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0480.md): 使用ALTER TABLE SPLIT SUBPARTITION可以对*-LIST二级分区表分割二级分区。例如,假设*-LIST二级分区表hash_list_sales的二级分区product2_channel2的定义范围为DEFAULT。可以指定分割点将其分割为两个分区,并更新Global索引。ALTER TABLE hash_list - [对一级分区表合并分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0482.md): 使用ALTER TABLE MERGE PARTITIONS可以将多个分区合并为一个分区。例如,将范围分区表range_sales的分区date_202001和date_202002合并为一个新的分区,并更新Global索引。ALTER TABLE range_sales MERGE PARTITIONS date_202001, dat - [对二级分区表合并二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0483.md): 使用ALTER TABLE MERGE SUBPARTITIONS可以将多个二级分区合并为一个分区。例如,将二级分区表hash_list_sales的二级分区product1_channel1、product1_channel2、product1_channel3合并为一个新的分区,并更新Global索引。ALTER TABLE hash - [对一级分区表移动分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0491.md): 使用ALTER TABLE MOVE PARTITION可以对一级分区表设置移动分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001移动到表空间tb1中。ALTER TABLE range_sales MOVE PARTITION date_202001 TABLESPACE tb1;或者,通过指定分区 - [对二级分区表移动二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0492.md): 使用ALTER TABLE MOVE SUBPARTITION可以对二级分区表设置移动二级分区。例如,通过指定分区名将二级分区表range_list_sales的二级分区date_202001_channel1移动到表空间tb1中。ALTER TABLE range_list_sales MOVE SUBPARTITION date_20 - [对一级分区表重命名分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0494.md): 使用ALTER TABLE RENAME PARTITION可以对一级分区表重命名分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001重命名。ALTER TABLE range_sales RENAME PARTITION date_202001 TO date_202001_new;或者,通过指定分区 - [对二级分区表重命名一级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0495.md): 使用ALTER TABLE RENAME PARTITION可以对二级分区表重命名一级分区。具体方法与一级分区表相同。 - [对二级分区表重命名二级分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0496.md): 使用ALTER TABLE RENAME SUBPARTITION可以对二级分区表重命名二级分区。例如,通过指定分区名将二级分区表range_list_sales的二级分区date_202001_channel1重命名。ALTER TABLE range_list_sales RENAME SUBPARTITION date_202001 - [对Local索引重命名索引分区](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0497.md): 使用ALTER INDEX RENAME PARTITION可以对Local索引重命名索引分区。具体方法与一级分区表重命名分区相同。 - [分区表行迁移](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0498.md): 用户可以使用ALTER TABLE ENABLE/DISABLE ROW MOVEMENT来开启/关闭分区表行迁移。开启行迁移时,允许通过更新操作将一个分区中的数据迁移到另一个分区中;关闭行迁移时,如果出现这种更新行为,则业务报错。如果业务明确不允许对分区键所在列进行更新操作,建议关闭分区表行迁移。例如,创建列表分区表,并开启分区表行迁移 - [索引重建/不可用](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0500.md): 使用ALTER INDEX可以设置索引是否可用。例如,假设分区表range_sales上存在索引range_sales_idx,可以通过如下命令设置其不可用。ALTER INDEX range_sales_idx UNUSABLE;可以通过如下命令重建索引range_sales_idx。ALTER INDEX range_sales_id - [Local索引分区重建/不可用](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0501.md): 使用ALTER INDEX PARTITION可以设置Local索引分区是否可用。使用ALTER TABLE MODIFY PARTITION可以设置分区表上指定分区的所有索引分区是否可用。这个语法如果作用于二级分区表的一级分区,数据库会同时对这个一级分区下的所有二级分区进行设置。使用ALTER TABLE MODIFY SUBPARTI - [常规锁设计](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0503.md): 分区表通过表锁+分区锁两重设计,在表和分区上分别施加不同级别的常规锁,保证DQL、DML以及DDL并发过程中的合理行为控制。不同级别锁的相容行为如表1所示,表中标记为“√”的两种常规锁互不阻塞,可以并行。分区表的不同业务最终都是作用于目标分区上,数据库会给分区表和目标分区施加不同级别的表锁+分区锁,来控制并发行为。表2给出了不同业务的锁粒 - [DQL/DML-DQL/DML并发](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0504.md): DQL/DML操作会给表和分区施加1~3级别的常规锁,DQL/DML操作自身互不阻塞。分区表支持DQL/DML-DQL/DML并发。 - [DQL/DML-DDL并发](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0505.md): 表级DDL、以及SPLIT/MERGE这两种分区DDL会给分区表施加8级锁,阻塞该分区表全部的DQL/DML操作。ADD、DROP、EXCHANGE、TRUNCATE、MOVE、RENAME这六种分区级DDL会给分区表施加4级锁,并给目标分区施加8级锁。当DQL/DML与DDL作用不同分区时,支持二者执行层面的并发;当DQL/DML与DD - [分区表相关系统视图](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0507.md): 非透明多写特性下,分区表系统视图根据权限分为3类,具体字段信息请参考《参考》中“系统表和系统视图 > 系统视图”章节。所有分区视图:ADM_PART_TABLES:所有分区表信息。ADM_TAB_PARTITIONS:所有分区信息。ADM_PART_INDEXES:所有Local索引信息。ADM_IND_PARTITIONS:所有索引分区 - [分区表相关内置工具函数](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0508.md): 前置建表:CREATE TABLE test_range_pt (a INT, b INT, c INT) PARTITION BY RANGE (a) ( PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN (3000), par - [静态编译架构](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0512.md): 从整个数据库服务的组成构架来看,存储引擎向上对接SQL引擎,为SQL引擎提供或接收标准化的数据格式(元组或向量数组);存储引擎向下对接存储介质,按照特定的数据组织方式,以页面、压缩单元(Compress Unit)或其他形式为单位,通过存储介质提供的特定接口,对存储介质中的数据完成读写操作。GaussDB通过静态编译使数据库专业人员可以为 - [通用数据库服务层](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0513.md): 从技术角度来看,存储引擎需要一些基础架构组件,主要包括:并发:不同存储引擎选择正确的锁可以减少开销,从而提高整体性能。此外提供多版本并发控制或“快照”读取等功能。事务:均需满足ACID的要求,提供事务状态查询等功能。内存缓存:不同存储引擎在访问索引和数据时一般会对其进行缓存。缓存池允许直接从内存中处理经常使用的数据,从而加快了处理速度。检 - [设置存储引擎](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0514.md): 存储引擎会对数据库整体效率和性能具有巨大影响,请根据实际需求选择适当的存储引擎。用户可使用WITH ( [ORIENTATION | STORAGE_TYPE] [= value] [, ... ] )为表或索引指定一个可选的存储参数。参数的详细描述如表1所示:如果ORIENTATION指定为ROW,且STORAGE_TYPE为空的情况下 - [GaussDB内核505版本](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0516.md): - Ustore支持柔性字段高效存储。- Ustore支持Toast规模商用。- Ustore增加页面恢复与逃生技术。- Ustore支持SMP技术。 - [GaussDB内核503版本](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0517.md): - Ustore适配分布式/并行查询/Global Temp Table/Vacuum full/列约束DEFERRABLE以及INITIALLY DEFERRED。- Ustore增加在线重建索引。- Ustore增加增强版本B-tree空页面估算,提升优化器代价估算准确度。- Ustore增加存储引擎可靠性验证框架,Diagnose - [GaussDB内核R2版本](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0518.md): - Ustore增加新的基于原位更新的行存储引擎Ustore,首次实现新旧版本的记录的分离存储。- Ustore增加回滚段模块。- Ustore增加回滚过程,支持同步/异步/页内模式。- Ustore增加支持事务的增强版本B-tree。- Astore增加闪回功能,支持闪回表/闪回查询/闪回Drop/闪回Truncate。- Ustore - [Astore简介](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0520.md): Astore与Ustore的多版本实现最大的区别在于最新版本和历史版本是否分离存储。Astore不进行分离存储,而Ustore当前也只是分离了数据,索引本身没有分开。Astore没有回滚段,而Ustore有回滚段。对于Ustore来说,回滚段是非常重要的,回滚段损坏会导致数据丢失甚至数据库无法启动的严重问题,且Ustore恢复时同步需要R - [特性约束](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0524.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [存储规格](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0525.md): 数据表最大列数不能超过1600列。init_td(TD(Transaction Directory,事务目录)是Ustore表独有的用于存储页面事务信息的结构,TD的数量决定该页面支持的最大并发数。在创建表或索引时可以指定初始的TD大小init_td)取值范围[2, 128],默认值4。单页面支持的最大并发不超过128个。Ustore表( - [使用Ustore进行测试](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0526.md): 创建Ustore表使用CREATE TABLE语句创建Ustore表。删除Ustore表为Ustore表创建索引Ustore当前仅支持BTree类型的多版本索引。在一些场景中,为了区别于Astore的BTree索引,也会将Ustore表的多版本BTree索引称为UBTree(Ustore BTree,UBTree介绍详见UBTree章节) - [怎么配置init_td大小](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0528.md): TD(Transaction Directory,事务目录)是Ustore表独有的用于存储页面事务信息的结构,TD的数量决定该页面支持的最大并发数。在创建表或索引时可以指定初始的TD大小init_td,默认值为4,即同时支持4个并发事务修改该页面,最大值为128。用户需要结合业务并发度分析是否需要手动配置init_td。另外也可以结合业务 - [怎么配置fillfactor大小](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0529.md): fillfactor是用于描述页面填充率的参数,该参数与页面能存放的元组数量、大小以及表的物理空间直接相关。Ustore表的默认页面填充率为92%,预留的8%空间用于更新的扩展,也可以用于TD列表的扩展空间。fillfactor的配置和详细描述参见《参考》中“SQL参考 > SQL语法 > C > CREATE TABLE”章节。用户需要 - [在线校验功能](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0530.md): 在线校验是Ustore特有的,在运行过程中可以有效预防页面因编码逻辑错误导致的逻辑损坏,ustore_attr参数默认开启UPAGE:UBTREE:UNDO三个模块校验。业务现网请保持开启,性能场景除外。ustore_attr参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 开发人员选项”章节。 - [怎么配置回滚段大小](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0531.md): 一般情况下回滚段大小的参数使用默认值即可。为了达到最佳性能,部分场景下可调整回滚段大小的相关参数。具体场景与设置方法如下:保留给定时间内的历史版本数据。当使用闪回或者支撑问题定位时,通常希望保留更多历史版本数据,此时需要修改undo_retention_time。undo_retention_time默认值是0,取值范围为 0~3天,输入 - [RCR Uheap多版本管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0534.md): Ustore对其使用的heap做了如下重要的增强,简称Uheap。Ustore RCR(Row Consistency Read)的多版本管理是基于数据行的行级多版本管理。不过Ustore将XID记录在了页面的TD(Transaction Directory)区域区别于常见的将XID存储在数据行上,节省了页面空间。事务修改记录时,会将历史 - [RCR Uheap可见性机制](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0535.md): Ustore可见性判断是通过构建数据行的一致性版本获得的,老快照可通过Undo记录获取历史版本。举例如下:图中描述了三种使用MVCC快照查询的场景,其中Reader为查询线程,持有csn = 300的快照,需要查询某行数据的可见版本:该行数据指向的td槽位记录事务xid已经提交,并且td csn < 快照csn,说明td xid对快照可见 - [RCR Uheap空闲空间管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0536.md): Ustore使用Free Space Map(FSM)文件记录了每个数据页的潜在空闲空间,并且以树的结构组织起来。每当用户想要对某个表执行插入操作或者是非原位更新操作时,就会从该表对应的FSM中进行快速查找,查看当前FSM上记录的最大空闲空间是否可以满足插入所需的空间要求;如果满足则返回对应的blocknum用于执行插入操作,否则执行拓展 - [RCR UBTree](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0538.md): RCR(Row Consistency Read) btree 的多版本管理是基于数据行的行级多版本管理。将XID记录在了数据行上,会增加Key的大小,索引会有5-20%左右的膨胀。最新版本和历史版本均在btree上,索引没有记录Undo信息。插入或者删除key时按照key + TID的顺序排列,索引列相同的元组按照对应元组的TID作为第 - [PCR UBTree](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0539.md): 相比于RCR版本的UBTree,PCR版本的UBTree有以下特点。索引元组的事务信息统一由TD槽进行管理。增加了Undo操作,插入和删除前需要先写入Undo,事务abort时需要进行回滚操作。支持闪回。索引元组的事务信息统一由TD槽进行管理。增加了Undo操作,插入和删除前需要先写入Undo,事务abort时需要进行回滚操作。支持闪回。 - [回滚段管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0541.md): 回滚段管理如图1所示:回滚段管理每个undo zone除了管理部分transaction page(用于存储事务回滚的元数据)外,还管理undo page。Undo页面中存储undo row,对数据的修改会将历史版本记录到Undo中。Undo记录也是数据,因此对Undo页面的修改同样会记录Redo。 - [文件组织结构](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0542.md): 如需查询当前回滚段使用的存储方式是页式或段页式,可以查询系统表。当前仅支持页式。示例:当回滚段使用的存储方式为页式:txn page所在文件组织结构:$node_dir/undo/{permanent|unlogged|temp}/$undo_zone_id.meta.$segnoundo row所在文件组织结构:$node_dir/un - [空间管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0543.md): Undo子系统依赖后台回收线程进行空闲空间回收。负责主机上Undo模块的空间回收,备机通过回放Xlog进行回收。回收线程遍历使用中的undo zone,对该zone中的txn page扫描,依据xid从小到大的顺序进行遍历。回收已提交或者已回滚完成的事务,且该事务的提交时间应早于$(current_time-undo_retention_ - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0545.md): Enhanced Toast是一种用于处理超大字段的技术。首先,减少了Toast Pointer中的冗余信息,存储支持单表超长字段列数超过500列。其次,优化了主表与线外存储表之间的映射关系,无需通过pg_toast_index来存储主表数据与线外存储表数据的关系,降低了用户存储空间。最后,Enhanced Toast技术通过让分割数据自 - [Enhanced Toast存储结构](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0546.md): Enhanced Toast技术使用自链接的方式来处理元组间的依赖关系。线外存储表把超长数据按照2K分割成链表块,主表的Toast Pointer指向线外存储表的对应数据链表头,如图1所示。这样极大简化了主表与线外存储表间的映射关系,有效地提升了数据写入与查询的性能。 - [Enhanced Toast使用](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0547.md): 新增的GUC参数enable_enhance_toast_table用于控制线外存储结构。enable_enhance_toast_table参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > Enhanced Toast”章节。“enable_enhance_toast_table=on”表示使用Enhanced - [Enhanced Toast增删改查](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0548.md): Insert操作:触发Enhanced Toast的写入条件保持与原有Toast一致,除了数据写入时增加了数据间的链接信息之外,插入基本逻辑保持不变。Delete操作:Enhanced Toast的数据删除流程不再依赖Toast数据索引,仅依靠数据间的链接信息将对应的数据进行遍历删除。Update操作:Enhanced Toast的更新流 - [Enhanced Toast相关DDL操作](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0549.md): Enhanced Toast表的创建建表时指定Toast表的存储类型为Enhanced Toast或者Toast:建表时不指定线外存储表的类型,则创建线外存储表类型依赖于GUC参数enable_enhance_toast_table:线外存储表结构的升级当GUC参数“enable_enhance_toast_table=on”时,线外存储 - [Enhanced Toast运维管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0550.md): 通过gs_parse_page_bypath解析主表中的ToastPointer信息。解析文件1663_13113_17603_0.page中存储了ToastPointer的相关信息,具体如下:Enhanced Toast数据查询,通过直接查询到的Enhanced Toast表数据可以判断其链式结构的完整性。 - [事务提交](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0552.md): 针对隐式事务和显式事务,其提交策略如下所示:隐式事务。单条DML/DDL语句自动触发隐式事务,这种事务没有显式的事务块控制语句(START TRANSACTION/BEGIN/COMMIT/END),DML语句结束后自动提交。显式事务。显式事务由显式的START TRANSACTION/BEGIN语句控制事务的开始,由COMMIT/END - [事务回滚](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0553.md): 回滚是在事务运行的过程中发生了故障等异常情形下,事务不能继续执行,系统需要将事务中已完成的修改操作进行撤销。Astore、Ubtree没有回滚段,自然没有这个专门的回滚动作。Ustore为了性能考虑,它的回滚流程结合了同步、异步和页面级回滚等3种形式。同步回滚有三种情况会触发事务的同步回滚:事务块中的ROLLBACK关键字会触发同步回滚。 - [闪回查询](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0555.md): 闪回查询可以查询过去某个时间点表的某个snapshot数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于MVCC多版本机制,通过检索查询旧版本,获取指定老版本数据。整体方案分为三部分:旧版本保留、快照的维护和旧版本检索。旧版本保留:新增undo_retention_time配置参数,用来设置旧版本保留的时间,超过该时 - [闪回表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0556.md): 闪回表可以将表恢复至特定时间点,当逻辑损坏仅限于一个或一组表,而不是整个数据库时,此特性可以快速恢复表的数据。闪回表基于MVCC多版本机制,通过删除指定时间点和该时间点之后的增量数据,并找回指定时间点和当前时间点删除的数据,实现表级数据还原。整体方案分为三部分:旧版本保留、快照的维护和旧版本检索。旧版本保留:新增undo_retentio - [闪回DROP/TRUNCATE](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0557.md): 闪回DROP:可以恢复意外删除的表,从回收站(recyclebin)中恢复被删除的表及其附属结构如索引、表约束等。闪回drop是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已drop表的恢复。闪回TRUNCATE:可以恢复误操作或意外被进行truncate的表,从回收站中恢复被truncate的表及索引的物理数据。闪回trun - [常用视图工具](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0558.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [长事务阻塞Undo空间回收](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0561.md): gs_log中打印如下错误:snapshot too old! the undo record has been forcibly discardedxid xxx, the undo size xxx of the transaction exceeds the threshold xxx. trans_undo_threshold_s - [大量回滚事务拖慢Undo空间回收](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0562.md): 使用gs_async_rollback_xact_status视图查看有大量的待回滚事务,且待回滚的事务数量维持不变或者持续增高。调大异步回滚线程数量,即调大max_undo_workers参数值。max_undo_workers参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 回滚相关参数”章节。 - [storage test error](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0563.md): 业务执行过程中,数据页、索引或者Undo页面发生变更后,该页面放锁之前会主动进行逻辑损坏检测,发现页面损坏问题后会输出包含“storage test error”关键字的日志信息到数据库运行日志(gs_log文件),执行事务回滚,页面会恢复到修改前的状态。gs_log中打印“storage test error”关键字。请联系华为技术支持 - [备机读业务报错:"Index scan conflicts with replay. Try again later. The original maxoff is , but now it is ."](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0564.md): 业务在使用备机读时,出现报错(错误码43244),错误信息中包含“Index scan conflicts with replay. Try again later.”关键字。在开启并行回放或串行回放的情况下(查询GUC参数recovery_parse_workers和recovery_max_workers均是1为串行回放;recove - [长查询执行期间大量并发更新偶现写入性能下降](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0565.md): 执行全表扫描类型的长查询,扫描期间页面发生大量并发更新,部分DML写入性能较没有长查询时出现性能下降。对于全表扫描场景下的长查询(例如持续两小时以上),在扫描到某个页面前,该页面发生大量集中并发更新(例如十万次以上更新),后续扫描到该页面时,需要访问大量历史版本获取可见元组(MVCC机制),由于单页扫描期间持有页面读锁,若此时刚好需要写入 - [特性简介](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0567.md): OLTP表压缩是GaussDB高级压缩中的一个特性。该特性基于全新的压缩算法、细粒度的自动冷热判定和支持块内压缩等技术创新,可以在提供合理压缩率的同时大幅度降低对业务的影响、增加后台调度、增加查询Job执行状态以及节约空间,能够在支持关键在线业务的容量控制中发挥重要价值,当前版本支持堆表压缩、跨页透明压缩、索引压缩和copy批量导入压缩。 - [特性约束](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0568.md): 对于高级压缩(ADVANCED):不支持系统表、内存表、全局临时表、本地临时表和序列表,不支持Ustore段页式表,不支持unlogged表,不支持压缩toast数据。支持用户为普通表、分区、二级分区设置ILM策略。支持普通表、分区、二级分区的Astore/Ustore用户表和透明加密表。特性仅在ORA兼容模式、PG兼容模式以及MYSQL - [特性规格](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0569.md): 对于高级压缩(ADVANCED):TPCC只开启策略、不开调度对原有业务无影响。TPCC不开启压缩策略对原有业务无影响。TPCC.bmsql_order_line设置ILM策略(只识别完成派送的订单为冷行)不调度,TPmC劣化不高于2%(56核CPU370GB内存+3TB SSD硬盘,350GB SharedBuffer)。TPCC.bm - [使用说明](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0570.md): 使用高级压缩的功能,用户必须申请License才能使用。具体情况请联系华为工程师。执行“ALTER DATABASE SET ilm = on”语句需要拥有public权限。检查当前数据库的public schema中是否存在gsilmpolicy_seq和gsilmtask_seq。或者:生成异常会报warning:新建带策略的表:ga - [维护窗口参数配置](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0571.md): RETENTION_TIME:评估与压缩记录的保留时长,单位天,默认值30。用户可根据自己存储容量自行调节。EXECUTION_INTERVAL:评估任务的执行频率,单位分钟,默认值15。用户可根据自己维护窗口期间业务与资源情况调节。该参数与ABS_JOBLIMIT相互影响。单日单线程最大可产生的I/O为WIND_DURATION/EXE - [运维TIPS](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0572.md): 高级压缩特性使用前必须先联系工作人员申请License,否则执行相关命令会报错。手动触发一次压缩(示例中一次压缩102400MB)。给表加上冷热分离策略:gaussdb=# DROP TABLE IF EXISTS ILM_TABLE; gaussdb=# CREATE TABLE ILM_TABLE(a int); gaussdb=#A - [内存管理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0573.md): 物理内存物理可见的硬件,即内存条。物理可见的硬件,即内存条。虚拟内存进程运行时所有内存空间的总和,以32位系统为例,每个进程有4GB的内存空间,各进程的内存空间具有类似的结构,如图1所示:Linux内存机制一个新进程建立的时候,将会建立起自己的内存空间,并将此进程的数据、代码等在需要被读写时从磁盘复制到自己的内存空间。进程中每一条数据的地 - [多线程架构](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0574.md): GaussDB采用单进程多线程架构,这是其高性能和高并发处理能力的关键因素。通过有效的线程调度和管理,GaussDB能够在单个进程中实现高效且稳定的数据处理。线程的种类和功能丰富多样,包括用户线程、系统线程、I/O 线程、日志线程等,线程之间协同工作,共同完成数据库的各项任务。在多线程架构下,更容易实现多个线程资源的共享,例如并行查询和线 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0696.md): 智能基数估计通过利用库内贝叶斯网络模型,对多列数据样本的联合分布进行建模。这一过程使得它能够为多列等值查询提供更为精准的基数估算结果。在此基础上,又能显著提高优化器对于计划和算子选择的准确性。最终,优化器准确性的提升会带来数据库整体吞吐量的提高。在大型企业核心系统和云数据库等高负载业务环境中,复杂查询(尤其是涉及多列组合条件)常因优化器代 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0697.md): 模型创建本功能由用户提交ANALYZE命令或者auto-analyze触发,通过CN样本采集器获取内存中数据样本结构并且包装成数据源结构体。如下图1所示,数据源结构体包含两部分信息,一部分是可能存在的高频值统计信息,另一部分是全量数据样本信息。高频值信息包含频度大于1的值(如果等于1,则不认为是高频值),而全量样本信息则是压平为序列一条一 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0698.md): 软件版本:内核版本≥GaussDB Kernel 503.1.0.B038。数据库运行正常。GUC参数enable_ai_stats设置为on。multi_stats_type设置为'BAYESNET'或者'ALL'。GUC参数enable_fast_query_shipping设置为off其他使用的方法详见《参考》中“SQL参考 > S - [最佳实践](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0699.md): 以下表及数据来源TPC-H 50X。生成如下数据表:插入10,000,000行数据:在数据表上创建四种不同的多列索引:针对数据表生成一批包含多列等值条件的查询,如下:分别测试不创建多列统计信息和创建ABO统计信息场景下的执行计划:通过上述操作可以看出,在该场景下,ABO基数估计使查询速度得到了有效提升。受环境、版本及部署形态差异影响,示例 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0700.md): 问题:训练报错。Model training failed, error XXX.处理方法:根据具体的error信息检查训练对象,并重试训练。处理方法:根据具体的error信息检查训练对象,并重试训练。问题:gs_ai_stats_explain报错。Cannot find table XXX.处理方法:检查传参是否为正确的表名。处理方法 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0702.md): 自适应代价估计是505.1版本引入的智能优化器增强特性,包含反馈基数估计与自适应代价参数调整两个模块。该特性持续收集历史查询的实际执行结果(查询计划中算子级别的实际行数基数及执行时间),并基于这些数据自动训练和更新反馈基数估计模型,同时根据实际运行结果动态校准代价模型参数。反馈基数估计模型可以建立查询条件与真实基数之间的映射关系,训练完成 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0703.md): 反馈基数估计反馈基数估计首先需要为每个待预测算子动态匹配对应的预测模型,其匹配逻辑基于算子特征的唯一哈希编码,该编码综合了算子所涉及的表、属性及查询条件等信息。同时,另一个机制为利用算子级别的历史数据,训练并应用UMM (Unified Mixture Model) 和 KNN (K-Nearest Neighbors) 模型,建模查询条 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0704.md): 数据库运行正常。反馈基数功能开启。数据库查询解析正常进入计划优化阶段。打开参数enable_adaptive_cost,其他参数使用默认设置即可开启本功能。反馈基数功能需要先收集基数才能修正统计偏差,只有通过explain (analyze)执行或执行时间超过adaptive_cost_min_time的SQL才会收集基数信息。当设置ad - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0705.md): 使用本特性进行计划生成,对于同一种查询前几次的计划不同,属于正常现象,收敛之后会获得更优计划。使用缓存计划不会触发本特性属于正常现象,无参数优化不会查找任何反馈模型。对于未通过explain (analyze)执行的sql语句,若生成计划的时间大于执行时间,则不会使用反馈基数。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0707.md): 优化器是SQL引擎的重要组成部分。在SQL引擎中,原始SQL语句通常会先经过解析器解析生成一棵查询树(QueryTree),然后由优化器对查询树进行逻辑优化和物理优化,最终生成执行器可以实际执行的查询计划(Plan)。其中,逻辑优化主要发生在优化器的规则模型中,因此也称为Rule-Based Optimizer(简称RBO),其主要功能是 - [单列统计信息](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0710.md): 行数和页面数描述整表的统计信息,reltuples表示该表包含多少行元组,relpages表示该表包含多少个页面。普通表从pg_class中查询,分区表的分区从pg_partition中查询。行数和页面数用于估算查询结果的大小,通常会结合其他统计信息(如NDV、MCV、直方图等)一起使用,以便更全面地了解数据的分布和存储情况。行数和页面数 - [多列统计信息](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0711.md): 多列统计信息是把一张表中的多个列看作一个整体,计算并获取其在整张表中的数据分布信息,统计信息种类主要包括NDV(distinct值数目)、MCV(most common value)、空值比例(nullfrac)、空值高频值(NULL_MCV)等。如果一条sql引用了多个列的约束条件,这些列之间相互独立,用单列统计信息计算时,会把这些约束 - [扫描路径生成](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0713.md): 扫描路径主要包括:顺序扫描路径(SeqScanPath)、索引扫描路径(IndexScanPath)、位图扫描路径(BitmapScanPath)等几种类型,本节主要针对这几类扫描路径进行说明。顺序扫描(SeqScan)顺序扫描即全表扫描,是GaussDB中最基础的一种扫描方式。这种扫描方式直接从磁盘中按顺序读取基表相关页面,将表中的所有 - [连接路径生成](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0714.md): 前面章节介绍了几类常用的基表扫描路径,包括:顺序扫描路径、索引扫描路径和位图扫描路径,但在实际的SQL查询场景中并非只涉及基表查询,而是经常需要对多个表做各种连接操作来生成最终查询结果,SQL查询中常用的连接操作包括:INNER JOIN、LEFT JOIN、SEMI JOIN等,因此针对这些连接运算GaussDB会在CBO优化器阶段生成 - [代价估算](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0716.md): 对于优化器来说,为了能够选出最优的执行计划,需要有可以衡量执行计划的标准。一个直观的比较不同查询计划优劣的标准即执行时间,一般而言,执行时间越短的查询计划越优,反之越差。然而同一个查询计划的执行时间会随着环境变量的不同而变化,如:机器配置(CPU 的频率、内存的大小和磁盘的介质等)会对实际执行性能产生影响,那么就需要一个无量纲的值来代替时 - [计划选择](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0717.md): 前面的章节介绍了数据库中几类常用的路径生成方式以及优化器的代价估算模型原理,在此基础上CBO优化器可以选择生成最终的执行计划。在路径生成阶段,优化器利用动态规划、遗传算法等尝试不同的连接路径,并且为这些路径标记了代价信息,优化器只需要根据代价进行比较把更小代价的路径选择出来,这样就得到了一棵最优路径树。路径选择过程中,主要关注如下几个因素 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0718.md): 本节将结合示例展示优化器基本的计划选择过程,使用如下建表语句:下面示例通过对同一个SQL的过滤条件取不同的常量值来展示代价模型对CBO优化器进行计划选择时的影响。首先,执行如下SQL语句并查看其选择的计划(过滤条件取值:t2.b <= 100):当过滤条件取值变为 t2.b <= 3000时,优化器选择生成计划如下所示:上述SQL中,t1 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0719.md): 场景一:为什么不能生成索引扫描路径?gaussdb=# CREATE TABLE t1(a INT, b INT, c INT, d INT); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by def - [AutoHint:智能HINT推荐](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0720.md): AutoHint(智能HINT推荐)将自动识别慢SQL执行计划树中耗时较长的算子,生成候选HINT进行替换,并通过贪心策略进行探索,最终生成能够提升当前慢SQL执行性能的HINT组合推荐给用户。在提升慢SQL性能的同时可以为用户节约人工调优所带来的人力与时间成本。容灾集群下不支持智能HINT推荐。数据库运行正常。确保当前用户拥有super - [DSL规则引擎整体流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0722.md): DSL规则引擎使用DSL语言对SQL的查询改写规则进行描述,通过统一的原子化接口,形成特定语法,利用这些语法的灵活编排组合,符号化的描述能力,使得查询改写规则可以插件化集成,动态加载,从而增强查询改写的易开发、易部署、灵活可扩展性。DSL规则引擎处于SQL引擎中,且主要在运行态利用加载的DSL规则对SQL进行等价改写,从而帮助数据库在优化 - [DSL规则语法组件介绍](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0724.md): DSL规则引擎定义了一套语言语法规范,DSL语法可以描述为:"原模板 "=>"目标模板"的形式,用于将QueryTree与原模板匹配的节点 ,改写成根据目标模板构建的节点。其中模板由:语法关键词 、符号、变量 、函数和约束组成,其组成方式如图1所示。表达式计算函数函数名函数原型参数说明功能描述EXPR_COMPUTENode expr_c - [DSL规则示例与说明](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0725.md): 本章节内容为DSL规则匹配的示例与说明,执行结果不为实际执行结果。简要描述:两个包含Count聚集函数的表达式子链接进行等值比较时,如果其中一个子链接可以表示为另一个子链接的子结构,且过滤条件仅相差一个EXISTS子链接条件时,可以对其进行优化。因为在此场景下,实际是想找到EXISTS条件返回FALSE的情况,在这种情况下两个count值 - [DSL规则引擎最佳实践](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0726.md): 基于DSL的规则引擎的使用受GUC参数控制,所以需要打开相关的参数才可以生效(enable_dsl_ruleengine = ON)。下面给出最佳实践样例。最佳实践中系统函数的调用权限请查看以下章节的相关说明:非透明多写特性:请参见《参考》中“SQL参考 > 函数和操作符 > DSL规则管理函数”章节。场景一:拥有权限的合法用户可以通过调 - [常见问题处理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0727.md): 场景一:关键字使用错误示例。gaussdb=#SELECT dsl_add_rule( 'compute_const', 'JOIN<> {ARGS: $expr: *} => FILTER<> {ARGS: (expr_compute $expr) }', 3, true); ERROR: syntax error at 'JOIN' - [file_fdw](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0729.md): file_fdw模块提供了外部数据封装器file_fdw, 可以用来在服务器的文件系统中访问数据文件。数据文件必须是COPY FROM可读的格式,具体请参见《参考》中“SQL参考 > SQL语法 > C > COPY”章节。使用file_fdw访问的数据文件是当前可读的,不支持对该数据文件的写入操作。当前GaussDB会默认编译file_ - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0731.md): GTM全称为全局事务管理器(Global Transaction Manager),主要分发事务XID和快照Snapshot以及序列号Sequence,保证全局事务的一致性。GTM采用主备方式,是系统中常驻的服务进程,使用多线程架构实现。其主要功能有三个:生成事务XID,生成快照Snapshot,管理序列号Sequence。GTM为被动接 - [GTM模式简介](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0734.md): GTM模式采用全局事务id的策略,全局所有节点都需要通过GTM获取统一递增的事务号CSN,同时事务提交需要通过GTM获取递增的事务号CSN以保证分布式事务的一致性。当前版本已不再支持GTM模式,在用户需要保证全局事务一致性的情况下,GTM-Lite模式为更优选择。从503.0版本开始不支持GTM模式,配置GTM模式仍生效为GTM-Lite - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0735.md): 在GTM模式下,GTM负责维护全局事务管理、全局CSN和Sequence的递增。执行CN在开启事务时需向GTM申请全局递增的事务号以保证分布式事务的一致性,并在提交时通过GTM获取全局CSN作为事务提交CSN。 - [GTM-Lite模式简介](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0737.md): 分布式事务强一致性要求下,GTM-Lite模式是性能最优的部署模式,其通过将全局事务id转换为本地事务id,同时维护全局csn,既保证了全局事务强一致性又消减了单点性能瓶颈。在GTM模式下,由于采用全局事务id的策略,所以每个活跃事务要在GTM注册槽位,GTM负责管理和分发全局事务id,这导致业务并发量大的时候,GTM容易成为单点瓶颈。与 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0738.md): GTM-Lite的主要目标就是在消除GTM瓶颈影响的同时,尽可能通过更少的信息交互,并且协调事务的并发,从而保证事务一致性的同时提升性能。因此,GTM-Lite的主要技术原理包含以下4点:本地事务id:不再从GTM获取事务id,每个CN/DN各自维护自己的事务id;全局csn:GTM只维护全局csn,不再维护事务槽位信息;单节点事务优化: - [GTM-Free模式简介](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0740.md): GTM-Free模式下,中心事务管理节点不再参与事务处理,从而消除了GTM的单点瓶颈,提升了事务处理性能。然而,在一致性方面,该模式仅支持所有事务完成后保证读取的外部一致性,不支持分布式事务的强一致性读取,也不支持以下这种依赖查询结果的事务一致性。GTM-Free模式适用于业务对分布式事务没有强一致性要求,且用户表使用合理分布键的场景。G - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0741.md): GTM-Free模式采用各节点使用本地事务id和本地快照csn的方式,消除了各节点事务对于GTM的依赖。因此GTM-Free模式对于分布式事务的一致性没有强保证。 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0742.md): 相关的GUC参数包括enable_gtm_free和gtm_option(具体参见《参考》中“数据库运行参数说明 > GUC参数说明 > GTM相关参数”章节),可通过gsql执行show语句查询当前GTM模式:具体模式判断方法如下:GTM模式:enable_gtm_free=off 且 gtm_option=0。(当前版本已不支持)GT - [分布式最佳实践](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0743.md): GTM部署与业务需求、集群规模强相关。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0744.md): 现象分析:SQL语句执行需要通过GTM获取快照来进行事务可见性判断,日志中存在以下告警,该现象为连接GTM失败。处理方法:可通过以下命令查询GTM状态:若GTM不存在Primary角色,为GTM正处于倒换状态,则等待倒换完成即可。若GTM存在Primary角色,且状态正常,则可能为节点网络通信故障,通过执行ping命令,诊断CN节点与GT - [敏感数据发现](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0745.md): 敏感数据发现功能提供函数gs_sensitive_data_discovery()和gs_sensitive_data_discovery_detail(),通过调用的不同函数,指定扫描对象和敏感数据分类器,得到对应扫描对象不同明细级别的敏感数据信息。调用gs_sensitive_data_discovery()函数,扫描目标数据,返回统 - [动态数据脱敏](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0746.md): 数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0748.md): HTAP(Hybrid Transactional/Analytical Processing,混合事务/分析处理)在传统交易型数据库以磁盘行存与火山模型执行器高效支持交易型查询负载基础上,通过引入列式存储、向量化执行引擎、混合负载透明路由,在单个交易数据库内同时实现高效的交易型和分析型查询负载处理能力。HTAP在原有行存数据引擎与执行引 - [参数设置](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0750.md): HTAP混合负载功能。HTAP混合负载功能由参数enable_htap控制,开启为on,关闭为off。enable_htap为实例级别参数,详情请参见《参考》中“数据库运行参数说明 > GUC参数说明 > HTAP混合负载”章节。HTAP混合负载功能由参数enable_htap控制,开启为on,关闭为off。enable_htap为实例级 - [内存管控](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0751.md): HTAP的数据全部存放于GaussDB的内存上,配备对应的内存管控功能,避免内存占用过多影响行存查询或导致数据库内存溢出。HTAP的内存同时包含动态共享内存和非动态共享内存两部分。非动态共享内存部分为加载/重建/扫描等临时内存上下文等。动态共享内存为三层结构:第一层挂载在顶级动态内存上下文上,用于存放IMCV元信息以及HTAP必要的辅助数 - [创建和卸载IMCV](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0753.md): 语法HTAP可以通过ALTER方式对普通表创建IMCV,如表1所示。详情请参见《参考》中“SQL参考 > SQL语法 > A > ALTER TABLE”章节。ALTER方式创建IMCV语法和相关影响语法加载列ALTER TABLE ... COLVIEW全部列。ALTER TABLE ... NOCOLVIEW无,IMCV信息被删除。A - [其他DDL](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0754.md): TRUNCATE表时会清除行存数据,同时级联处理加载的IMCV列存数据,不删除IMCV元信息。TRUNCATE分区时会清除行存表分区数据,同时级联处理该分区的IMCV列存数据,不删除IMCV元信息。示例:htapdb=# CREATE TABLE htap_test( id int, dept_id - [DML](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0756.md): HTAP通过实时事务单元TMU记录DML操作带来的增量数据变更,并维护IMCV列查询的数据新鲜度,保障列存与行存实时数据的一致性。示例: - [DQL](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0757.md): 在正确设置参数以及对目标表创建IMCV后便可进行DQL查询。在htap_router_mode为auto时,HTAP透明路由会根据数据和SQL特征选择最优执行计划,因此即使对目标表加载了IMCV,透明路由仍有可能会根据代价计算选择行存计划,具体执行计划可通过EXPLAIN查看。如果希望SQL执行时一定走IMCV列存计划,可以设置htap_ - [列回行混合扫描](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0758.md): 列回行混合扫描,是一种特殊的列存扫描方式。当查询所访问的列并非全部创建了列存,而且查询谓词涉及的所有列均创建IMCV,基于代价可生成列回行混合扫描计划。该特性可在内存有限、仅部分列创建IMCV的情况下,利用创建IMCV的列加速查询。示例: - [混合负载透明路由](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0759.md): 混合查询负载支持多种路由模式:自动路由、强制列存、强制行存,通过设置htap_router_mode='auto'、'column'、'row'来选择。创建一个包含几行数据的小表(test_small)以及包含3千行数据的大表(test_large)并插入数据。小表执行行存扫描更快,大表执行列存扫描更快。示例:通过设置htap_route - [列存数据维护](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0760.md): 列存数据加载是指首次根据行存数据生成该表对应的列存数据。在启用异步加载模式后,通过DDL命令为表创建IMCV时,系统仅会建立列存的元数据结构,并不会立刻生成实际的列存数据。系统提供两种列存数据的加载方式:后台HTAP Worker自动加载系统会在后台调度HTAP Worker,对目标表自动完成列存数据的构建。该方式无需人工干预,但其执行时 - [备机能力](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0761.md): 分布式下HTAP不支持备机。设置htap_deploy_mode参数后,实际生效值为'primary',即仅支持主机开启HTAP功能。 - [列存数据磁盘扩展](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0762.md): HTAP提供列存数据磁盘扩展功能,即当实际列存数据空间占用大于HTAP内存上限时,超出部分通过磁盘空间管理。该功能可通过设置参数htap_memctl_policy='swap'开启。该功能同时配套冷热数据管理来尽可能减少访问数据的磁盘I/O开销。列存元数据始终存储在内存中,当HTAP可用内存不足时,后台将访问频次较低的列存数据持久化到磁 - [列存数据压缩](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0763.md): HTAP提供数据压缩能力,提升内存资源使用率。该功能可通过htap_compression_methods参数开启。由于列存扫描需要对压缩数据进行解压,因此开启压缩功能后,相较于未开启压缩时,对列存扫描性能有一定影响。针对不同的数据类型,支持自适应选择更高效的压缩算法,当前支持的算法类型有Dict、Delta+RLE、LZ4。示例: - [在线DDL](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0764.md): 在线DDL支持对正常业务影响较小的情况下进行DDL,减少对业务的影响,提高业务运行的连续性和数据库的可用性。部分在线DDL只需要修改元数据,不涉及重建数据,操作时长较快,对业务影响较小。传统DDL操作若涉及重建数据,例如修改列类型、移动表空间、VACUUM FULL等操作,会对操作的表加长时间的排他锁,阻塞对该表的并发读写操作,影响用户业 - [创建hashbucket表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0767.md): 在一个数据库中创建第一张hashbucket表前,需要先将当前database绑定到集群默认的node group上。语法详情请参见《参考》中“SQL参考 > SQL语法 > A > ALTER DATABASE”章节中相关描述。查询NODE GROUP。gaussdb=#select group_name from pgxc_group - [bucket索引推荐使用场景](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0769.md): CBI索引以普通段页式方式存储,可以理解为所有bucket索引元组全部创建到统一的一个索引中;LBI索引以hashbucket段页式方式存储,可以理解为每个bucket各自创建一个子索引,由LBI索引统一管理。LBI为hashbucket存储提供bucket内的索引能力;CBI为hashbucket存储提供跨bucket的索引能力,在创建 - [hashbucket表特性规格约束](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0770.md): hashbucket表只支持分布式Astore/Ustore行存储、hash分布键,不支持RANGE、LIST、MURMURhash分布,支持分区表,不支持二级分区表,不支持临时表、unlogged表,不支持外表、不支持复制表。hashbucket表不支持GIN/GiST索引。hashbucket表绑定段页式存储,即hashbucket= - [hashbucket剪枝](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0771.md): 在使用hashbucket表的时候,当select语句中谓词列和hashbucket表分布列相同时,会对hashbucket表进行剪枝操作,大幅缩减访问的bucket的数量。示例如下:--准备环境。 gaussdb=#SET enable_fast_query_shipping=off; gaussdb=#CREATE TABLE t1 - [设置segment_buffers](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0773.md): segment_buffers是用来设置段页式元数据页的内存大小的参数,为了提高性能需要设置足够大的buffer,保证活跃表的元数据页面都能缓存在buffer中,不被频繁置换。hashbucket表基于段页式存储格式,由1024个bucket桶组成,每一个bucket桶由一组bucket段页式文件管理。其中DN上元数据页面主要包括buck - [bucket分布表的空间预占用](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0774.md): GUC参数enable_segment_datafile_preallocate控制是否打开段页式文件扩展立即分配磁盘空间模式。该参数为off时,以空洞的方式扩展文件,实际使用的时候才占用磁盘空间;该参数为on时,以预占用的方式扩展文件,文件扩展出来就占用磁盘空间。默认值为on。磁盘空间较小时建议关闭enable_segment_data - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0776.md): 失效重编译是指在数据库中,当视图对象失效后,进行的重新编译操作。它的目的是恢复失效对象的功能,确保这些对象能够正确执行。失效可能由多种原因引起,尤其在数据库架构或依赖的对象发生变化后,比如表结构的修改、依赖对象的删除或更新等。失效重编译主要涉及以下几个功能模块:一次性入库:创建视图,不满足编译检查要求,例如依赖的外部对象尚未创建,也能将视 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0777.md): 依赖关系记录记录数据库对象间的依赖关系,用于数据库对象间的级联失效。记录数据库对象间的依赖关系,用于数据库对象间的级联失效。级联失效当依赖对象发生变更时,基于对象的依赖关系,沿依赖链路级联失效。当依赖对象发生变更时,基于对象的依赖关系,沿依赖链路级联失效。重编译通过自动重编译、手动重编译将数据库对象刷为有效。通过自动重编译、手动重编译将数 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0778.md): 控制视图的级联失效:设置GUC参数enable_view_invalidation为on。控制视图一次性入库:设置GUC参数enable_force_create_obj为on。支持通过如下语法对视图重新编译:功能使用前,请先检查是否存在失效对象,失效对象被调用,可能会出现一些异常情况。建议避免构造对象依赖成环的场景,访问和编译会出现异常 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0779.md): Q:怎么检查失效重编译特性是否可用?A:参考执行如下命令,enable_view_invalidation值为on表示支持视图的级联失效,enable_force_create_obj值为on表示支持视图一次性入库。Q:怎么查询对象有效性?A:查看指定对象有效性可以参考如下示例,从相关系统表查找对象oid,根据oid查询pg_object - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0783.md): pg_stat_activity系统视图的query字段显示该会话当前正在执行的SQL语句,在R2C10版本后,扩展支持查看存储过程内正在执行的SQL语句。会话执行存储过程阻塞时间较长,存储过程仍在执行未结束,需要确认当前会话执行到了存储过程的所处阶段,执行的语句,可以通过pg_stat_activity直观地看到相关的信息。必须开启GU - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0784.md): pg_stat_activity系统视图支持显示当前正在执行的语句,在语句解析期间会调用接口,将语句信息写到query字段。为了记录存储过程内正在执行的语句,当前的实现机制是在存储过程内语句解析期间,按照"query string: 最顶层的执行语句, current level: 当前语句的直接调用语句, lineno: 当前语句在执行 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0785.md): 需要开启track_activities和track_procedure_sql参数,参数值都设置为on。不涉及。pg_stat_activity系统视图中query字段显示长度受GUC参数track_activity_query_size控制,默认1024字节,语句过长会被截断显示不完整。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0787.md): 在505.2以后的版本中支持了trace存储过程正在执行的SQL语句能力,开启功能后,数据库会在存储过程执行期间将执行的每条语句记录下来,方便实时查看存储过程内正在执行的语句。存储过程执行期间,通过pg_stat_activity可以查看该存储过程的执行状态,通过开启trace功能,可以对存储过程执行实时监测,结合语句的执行计划,进一步分 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0788.md): trace存储过程中正在执行的语句的实现依赖于存储过程期间设置的回调函数,完成语句和统计信息的记录与收集。在存储过程执行前,执行dbe_perf.pl_trace_func_start接口,数据库会设置trace参数以及回调函数,启用trace功能;存储过程执行期间,语句前后的回调函数会把相应语句的记录和信息存放到链表中;存储过程执行完成 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0789.md): 需要在线程池模式(enable_thread_pool = on)下执行。不涉及。PL_TRACE_FUNC_CLEAN不可清理正在执行TRACE的session上的数据。TRACE功能不支持DBE_PERF模式下的存储过程。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0792.md): 503.1.SPC1800版本以后,支持存储过程慢SQL相关特性,可以通过DBE_PERF.STATEMENT_HISTORY、DBE_PERF.STATEMENT分析存储过程内执行慢的语句。当出现执行慢的存储过程语句时,如果不确定该语句是被哪个存储过程调用,可以借助慢SQL相关特性查找最外层调用语句、单次执行产生的指标、单条语句累计执行 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0793.md): 当前支持语句执行前生成unique_query_id,并在DBE_PERF.STATEMENT插入一条记录,供后续归一、上报刷新使用;语句执行期间,在DBE_PERF.STATEMENT中刷新相应语句的产生的指标;语句执行完,执行记录会判断是否是慢SQL,结合track_stat_stmt_level的值,决定是否需要记录到DBE_PER - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0794.md): 需要设置instr_unique_sql_track_type值为all。不涉及。DBE_PERF.STATEMENT表记录上限受instr_unique_sql_count控制,instr_unique_sql_track_type默认值为all,默认记录存储过程内语句,会使该表记录的语句条数更容易达到阈值,达到阈值后不会产生新的记录, - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0796.md): Q: 当遇到执行慢的存储过程,需要怎么分析?A: 遇到慢存储过程,可以参考下面的流程,分析执行慢的原因:如果该存储过程正在执行,可以通过pg_stat_activity查询存储过程的执行状态;通过pg_stat_activity获取session_id后,还调用trace接口,实时监测执行信息,语句执行计划,进一步分析执行慢的原因;如果该 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0799.md): JDBC(Java Database Connectivity,Java数据库连接)为多种关系型数据库提供统一访问接口,使Java应用程序能够与各种不同的数据库进行交互,从而实现数据的持久化和管理。JDBC允许Java应用程序通过SQL语句来执行数据库操作,包括查询、插入、更新和删除数据等。GaussDB库提供了对JDBC 4.2特性的支 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0800.md): JDBC架构主要包括三个组件:JDBC API(Interface Layer)JDBC驱动管理程序(Driver Manager)JDBC驱动程序(Driver Layer)Java应用程序发起数据库操作请求(如查询、更新),通过JDBC API接口与JDBC驱动管理程序通信,而JDBC驱动管理程序负责加载和管理JDBC驱动程序。JDB - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0802.md): 采用JDBC开发应用程序的流程,请参见图1。具体包含获取驱动jar包并配置JDK环境、连接数据库、执行SQL语句、处理结果集、关闭连接等几个部分。 - [获取驱动jar包并配置JDK环境](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0803.md): 环境准备包括获取驱动jar包、配置JDK环境。解压发布包,并从中获取对应的驱动jar包:Jdk8发布包提供支持JDK1.8环境的驱动包;Jdk17发布包提供支持JDK17环境的驱动包;Jdk21发布包提供支持JDK21环境的驱动包。Jdk8发布包目录结构(以X86为例)如下:GaussDB-Kernel_数据库版本号_Jdbc_X86_J - [连接数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0804.md): 加载驱动后,才能调用DriverManager.getConnection方法创建数据库连接。本章节介绍了DriverManager.getConnection(String url, String user, String password)方法和DriverManager.getConnection(String url, Prope - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0805.md): 应用程序通过执行SQL语句来操作数据库。本章节通过示例介绍CREATE TABLE、INSERT、UPDATE、SELECT等操作。执行普通SQL语句:创建表。执行批量插入处理语句:批量插入数据。执行预处理更新语句:更新数据。执行查询语句:返回ResultSet。前置条件:已连接数据库,连接对象为conn。执行普通SQL语句,创建cust - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0806.md): 执行查询语句后,需要对返回的结果集进行处理。 - [关闭数据库连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0807.md): 使用数据库连接完成相应的数据操作后,需要调用close()方法关闭数据库连接。Connection、Statement和ResultSet接口都有close()方法,在使用完对象后应把它们关闭。 - [最佳实践](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0808.md): GaussDB为用户提供JDBC的最佳实践。具体请参见《最佳实践》中“JDBC最佳实践”章节。 - [batchMode设置错误](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0810.md): 设置url参数batchMode=on且reWriteBatchedInserts=true,使用JDBC批量插入数据后,提示绑定参数数量与语句需要的参数数量不一致:示例:// conn是已经创建的Connection对象,创建该Connection的url参数包含batchMode=on&reWriteBatchedInserts=tr - [Hibernate框架插入数据开启校验时报错](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0811.md): 客户从ORA兼容模式数据库迁移到GaussDB数据库,表结构使用DRS工具进行迁移,迁移后客户原业务代码不可用,Hibernate框架校验表结构报错。示例:原ORA兼容模式数据库中Student表结构为如下格式:id number(15,0) sid number(15,0) age number(10,0)使用DRS工具迁移到Gauss - [使用SSL方式建连报错或阻塞](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0812.md): JDBC使用SSL方式建立连接时,会在客户端获取强随机数,建立连接过程中可能出现以下场景的报错。场景1:出现如下图所示报错。场景2:建连阻塞。如果url连接串中配置了loginTimeout后,会报Connection attempt timed out,如果不配置该参数,会一直阻塞。客户端环境随机数产生的速度太慢,无法满足产品要求,熵源 - [概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0814.md): ODBC(Open Database Connectivity,开放数据库互连)是由Microsoft公司基于X/OPEN CLI提出的数据库访问应用程序编程接口,采用C/C++语言实现。该技术通过提供标准化的数据访问接口,使应用程序能够以统一的方式访问异构数据库管理系统(DBMS),有效实现了数据库访问与具体DBMS类型及操作系统平台之 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0815.md): ODBC的架构包括三个主要组件:应用程序、ODBC驱动管理程序和ODBC驱动程序。应用程序使用ODBC API与ODBC驱动管理程序通信,而ODBC驱动管理程序负责加载和管理ODBC驱动程序。ODBC驱动程序则负责与特定的数据库通信,执行SQL查询并返回结果。操作系统分为UNIX/Linux和Windows两种,所以ODBC的架构也主要分 - [开发流程](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0817.md): ODBC开发流程如图1所示。具体包含获取源码包、ODBC包以及依赖库、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [获取源码包、ODBC包以及依赖库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0818.md): 基于ODBC开发用户需要获取unixODBC源码包、ODBC包以及依赖库。unixODBC源码包获取参考地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz。MD5文件下载地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz.md5。下载后需使用M - [连接数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0819.md): ODBC连接数据库之前需要准备好所需资源。连接数据库是通过配置ODBC数据源,使用ODBC API或者相应的驱动程序,实现应用程序与数据库之间的通信和交互。本章节介绍如何在Linux/Windows系统下配置数据源并连接到数据库。以unixODBC-2.3.7版本为例,在客户端执行如下命令安装unixODBC。tar zxvf unixO - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0820.md): ODBC为应用程序与数据库的中心层,负责把应用程序发出的SQL指令传到数据库当中,自身并不解析SQL语法。故在应用程序中写入带有保密信息的SQL语句时(如明文密码),保密信息会被暴露在驱动日志中。数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。执行SQL - [处理结果集](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0821.md): ODBC处理结果集是从数据库中获取数据并将其提供给应用程序进行处理,作用包括但不限于:检索数据、数据展示、数据处理、数据传输和业务逻辑实现等。操作示例如下(完整示例请参见获取和处理数据库中的数据章节)。 - [关闭连接](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0822.md): 关闭数据库连接操作示例如下(完整示例请参见获取和处理数据库中的数据章节)。 - [最佳实践](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0823.md): GaussDB为用户提供ODBC的最佳实践。具体请参见《最佳实践》中“ODBC最佳实践”章节。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0824.md): 可能的原因及确认方法:odbcinst.ini文件中配置的路径不正确。确认的方法:执行ls命令查询错误信息中的路径,以确保该gsqlodbcw.so文件存在,同时具有执行权限。确认的方法:执行ls命令查询错误信息中的路径,以确保该gsqlodbcw.so文件存在,同时具有执行权限。gsqlodbcw.so的依赖库不存在,或者不在系统环境变 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0826.md): 随着集群部署时间及业务的增长,数据库在运行性能及存储上逐渐会达到瓶颈,需要通过增加主机来提升集群的性能及存储能力,实现业务的平稳运行。GaussDB提供了gs_expand工具进行主机扩容和数据重分布的操作。当集群性能及存储能力随业务增长达到瓶颈时,需新增主机以提升集群性能与存储容量,确保业务持续稳定运行。离线扩容会阻塞业务流程,因此需通 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0827.md): 由于gs_expand工具集成了物理扩容和逻辑扩容功能,因此图示中包含逻辑扩容相关内容。建议用户在物理扩容操作时避免数据库内出现bucket表与非bucket表混用情况。集群数据节点读带宽500MB/s、写带宽800MB/s,配置万兆网络。当每个DN独占磁盘、业务负载低峰且不做资源管控(资源管控级别为f,表内并发度8,扫描并发度4)时,单 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0828.md): 集群状态必须为Normal或Degraded状态,集群Degraded状态仅支持实例异常引发的集群状态异常,不支持VM异常(指非软件类异常,例如:磁盘故障、通信故障)导致的集群状态异常。请确保实例状态异常节点的网络连接正常。实例状态:CN全部正常,GTM、CMS至少有主节点存活,ETCD实例状态满足多数正常。DN实例状态有以下三种情况:两 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0829.md): Q:当在线扩容中遇到报错:“visibility_heap_tuple_satisfies_mvcc snapshot csn less or equal to bucketcsn from old DN.”。A:扩容前长事务快照在读取新节点迁移后上线数据时,可能触发该报错。此现象为预期内的正常机制,不 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0831.md): 开启备机读功能后,备机将支持只读事务并满足数据一致性要求,有效缓解主机负载压力。系统需处理高并发访问请求,同时要求高可靠性与可用性,通常部署多个副本。通过设置数据库备机为可读模式,可以将部分查询请求分散到备机上执行,降低主数据库负载,充分利用备机硬件资源,减少硬件投入成本。配置备机读功能需启用参数:hot_standby=on;GTM_L - [三种回放模式及备机读](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0833.md): Redo Log(本章节统一称Xlog)是用于恢复已确认但未写入数据库的数据,记录数据修改后的值。GaussDB备机通过同步Xlog并进行回放实现主备机数据同步。流式同步原理如图1所示。主机会话线程在数据更新时优先确保Xlog写入磁盘。walsender线程持续将已落盘的本地Xlog传输至备机的walreceiver进程。备机walwri - [分布式GTM-FREE备机读](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0834.md): 分布式GTM-FREE模式通过备机提供弱一致性读能力,有效降低主机负载。在分布式场景下,CN内置的收集线程持续向主节点(DN)及备节点(DN)采集CSN与提交时间(commit time),用于校验备机节点的CSN值与事务延迟是否满足预设阈值,从而筛选出符合条件的备DN将部分读请求下发执行。CN的收集线程定期汇总各备机的maxcsn值与c - [分布式GTM-LITE备机读](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0835.md): 提供强一致性读的能力。从三种回放模式及备机读可以了解到串并行模式下,GaussDB通过对比tuple和Snapshot中的xmin信息判断tuple的可见性。如果tuple来自CSN小于Snapshot中CSN的事务,则该tuple对当前查询可见。当查询语句在集群的CN节点获取快照后,会将一致性点下发给DN节点。相关的DN使用CN下发的快 - [分布式GTM-LITE容灾读](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0836.md): 分布式GTM-LITE容灾读的实现原理与分布式备机读机制基本一致。启用auto_csn_barrier参数后,系统进行barrier打点。在容灾读场景下,收集线程除持续向备DN节点收集barrier点的CSN外,还会对包括自身的每个CN节点发起请求,将每个CN视为独立分片参与校验。该机制要求至少存在一个CN节点能获取有效CSN值,最终计算 - [环境规格与回放类型选择](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0838.md): 当 recovery_parse_workers = 1、recovery_redo_workers = 1、recovery_max_workers = 1 时,回放模式为串行回放。当 recovery_parse_workers = 1、recovery_redo_workers = 1、recovery_max_workers > - [操作步骤](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0839.md): recovery_parse_workers、recovery_redo_workers以及recovery_max_workers,请参考环境规格与回放类型选择进行选择。日志回放级别需大于或等于hot_standby。备机读模块开关需设置为on。回放查询冲突时,备机在取消查询前会等待的时间;此参数会影响RTO。如果环境规格与回放类型选择 - [注意事项](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0840.md): 备机读设计思路是在保证回放RTO正常的前提下,通过提供只读功能分担主机压力并降低成本。其设计与实现过程中,始终优先保障备机回放功能不受影响。可通过配置优化或使用方法提升备机读成功率,但在实际业务场景中,难以保证备机上读操作100%成功,故对读要求极高的业务场景,仍建议部署在主机执行。备机读功能存在长查询保持时间与备机RTO延迟的矛盾。开启 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0841.md): 问题现象:当检测到查询与回放冲突时,回放线程将等待参数max_standby_streaming_delay设定的延迟时间,超时后向冲突线程发送取消指令,导致查询被终止并返回报错信息。报错详情如下:User was holding shared buffer pin for too long. 触发场景:备库在回放VACUUM相关类型日志 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0844.md): 在数据库系统运行过程中,时常会遇到突发的业务请求流量过高、或者某些SQL占用资源过高的情况。SQL限流功能可以限制此类SQL的执行,阻止其耗尽数据库资源从而影响正常业务SQL的执行。本特性可以实现多种规则的SQL限流能力,限制CN进程级别的某类SQL语句或全部SQL语句的最大并发数,包括:根据Unique SQL ID进行限流:在明确某条 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0845.md): GaussDB启动时,会将SQL限流规则从系统表加载到内存中。SQL限流的流程如下:用户执行任意SQL语句时,GaussDB会根据该SQL语句去内存中匹配满足条件的限流规则。如果匹配到限流规则,将内存中该规则的dop字段值加1。dop字段用于记录限流规则的实时并发度。如果匹配到的限流规则的dop字段值大于或等于该规则允许的最大并发度,则进 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0846.md): GaussDB版本 ≥ 505.0.0。需要具有sysadmin权限的用户执行以下操作。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0847.md): 问题:找不到gs_workload_rule系统表。解决:SQL限流特性是自505.0.0版本开始引入的,请确定您的数据库版本大于等于此版本。问题:设置了SQL限流规则,然后执行SQL语句,但没有触发SQL限流。解决:可以按下面步骤排查:查看GUC参数enable_workload_rule的取值是否为on?当该参数取值为off时,SQL - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0849.md): 数据库内存出现过载问题时,快速关闭会话并禁止新连接接入,待内存恢复正常状态后恢复对外服务能力。当数据库由于I层异常使得SQL执行时延显著上升,导致大量会话积压,进一步引发内存资源耗尽,最终使数据库无法对外提供服务时,能够快速实现逃生,短时间内恢复对外提供服务的能力。I层指的是IaaS(Infrastructure as a Service - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0850.md): GUC参数resilience_memory_reject_percent会设置两个阈值:"recover_memory_percent, overload_memory_percent",具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。wlm_monitor线程定时检查动态内存使用率是否大 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0851.md): GUC参数use_workload_manager及enable_memory_limit参数打开,这两个参数默认是打开的,resilience_memory_reject_percent需要手动设置。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0852.md): 问题:过载逃生不生效,导致数据库动态内存使用率高于逃生阈值。解决:查看use_workload_manager、enable_memory_limit是否打开,若关闭则无法生效。查看resilience_memory_reject_percent参数是否成功设置,如果设置时恢复阈值大于触发逃生的阈值,会导致参数设置失败,仍为默认值,通过系 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0854.md): 数据库线程池出现过载问题时,快速关闭会话并禁止新连接接入,待线程池恢复正常状态后恢复对外服务能力。当数据库由于I层异常使得SQL执行时延显著上升,导致大量会话积压,进一步引发线程池资源耗尽,最终使数据库无法对外提供服务时,能够快速实现逃生,短时间内恢复对外提供服务的能力。I层指的是IaaS(Infrastructure as a Serv - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0855.md): GUC参数resilience_threadpool_reject_cond会设置两个阈值:“recover_threadpool_percent, overload_threadpool_percent”,wlm_monitor线程定时检查线程池使用率是否大于overload_threadpool_percent %,条件满足时触发过载 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0856.md): GUC参数use_workload_manager及enable_thread_pool参数打开,这两个参数默认打开,resilience_threadpool_reject_cond需要手动设置。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0857.md): 问题:频繁触发过载逃生。解决:查看resilience_threadpool_reject_cond设置的过载阈值是否过小,将过载的阈值增大。问题:过载逃生不生效,线程池使用率高于逃生阈值。解决:查看use_workload_manager和enable_thread_pool参数是否打开,若关闭则过载逃生功能无法生效。如果均已打开,查询 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0859.md): 在数据库系统运行过程中,经常出现由于并发建连数量大,建连任务抢占线程池,导致业务缺少线程池资源,出现业务吞吐量大幅下降的情况。增加建连线程池可以减少连接的接入对已建连业务执行SQL性能的影响,防止业务执行缓慢或吞吐量大幅跌落。通过在已有线程池中拆分出一个独立线程池,专门用于数据库处理建连流程,将业务与建连进行解耦,不在同一个线程池中争抢资 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0860.md): 打开建连线程池功能后,建连流程会发生变化,GaussDB收到建连事件时,会将任务派发到建连线程池中,由该线程池中的worker线程绑定到此连接对应的session执行初始化,初始化完成后,继续执行建连阶段的sql语句,建连结束后,将session派发到业务线程池中执行后续业务,详细流程如下:客户端(gsql或jdbc等)触发建连操作。Ga - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0861.md): GUC参数enable_connect_thread_pool和enable_thread_pool取值都为on。 - [连接介绍](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0862.md): 通过psycopg2.connect函数建立数据库连接。函数的各参数说明,请参见psycopg2.connect()。使用psycopg2.connect函数连接数据库时,可以使用dsn参数传入一个字符串,也可以使用**kwargs传入多个关键字参数。方式1:psycopg2.connect(dsn)。该方式使用dsn参数传入一个字符串( - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0864.md): 将执行时间超过一定时间的SQL识别为慢SQL,限制慢SQL占用线程池总线程数的百分比及限制慢SQL的IOPS。慢SQL过多导致无空闲线程池线程供给正常SQL使用。功能约束:需要GUC参数enable_thread_pool取值为on。仅对非sysadmin、monitoradmin用户执行的SELECT类型的语句生效。限制IOPS功能需要 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0865.md): 设置GUC参数resilience_ctrlstmt_detect_timelimit或wlmrule Plan Hint,业务线程会在执行过程中设置对应时间的定时器,定时器到期后将当前业务线程标识为执行慢SQL的线程,对于执行慢SQL的线程将执行以下管控:当执行慢SQL的线程数量超过resilience_ctrlslot_availab - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0866.md): GUC参数enable_thread_pool取值为on,若需要对慢SQL限制IOPS则需设置GUC参数use_workload_manager取值为on。GUC参数全局生效,wlmrule Plan Hint仅对设置的SQL语句生效。GUC参数resilience_ctrlstmt_detect_timelimit、resilience - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0867.md): 问题:设置resilience_ctrlstmt_control_iopslimit后IO管控未明显生效?解答:检查GUC参数use_workload_manager取值是否为on,由于执行慢SQL的线程睡眠0~1秒内的随机值,无法将IOPS完全控制在resilience_ctrlstmt_control_iopslimit以下。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0869.md): GaussDB提供的应急链路,客户端可以通过接入该链路进行应急命令下发,本功能后简称“应急通道”。极端负载场景下,如CPU过载、内存过载、线程池满,连接池满,CM(集群管理组件)通过网络建连(libpq)连接数据库探活可能失败,进而触发主备倒换,通过应急通道可以避免此场景下的主备倒换。运维人员通过运维端口连接数据库也可能失败,导致一些关键 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0870.md): 进程间通信内核与CM交互链路不应受制于网络问题、高负载问题,采用进程间通信方式交互,具体使用了Unix domain socket(后简称UDS)实现。分析CM探活的场景,需考虑以下几点:指标时效:CM探活指标获取频率较高,部分指标采集周期为1次/s,采用共享内存具有滞后性,且需要额外考虑对指标时效性的判断;使用UDS的实时性较高,较符合 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0871.md): 应急通道需要打开GUC参数enable_emergency_access,另外生成mem_log的运维能力依赖于wlm_monitor线程及内存管理功能,需要打开GUC参数use_workload_manager和enable_memory_limit,参数均默认打开。GUC参数enable_emergency_access具体描述请参见 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0872.md): 问题现象:执行gsql -O "{port} mem_log"后没有生成mem_log文件。解决办法:生成mem_log的运维能力依赖于wlm_monitor线程,及内存管理功能,需要打开use_workload_manager及enable_memory_limit参数,查看use_workload_manager及enable_mem - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0874.md): CM模块分为CMServer和CMAgent两个模块。CMServer是整个集群的大脑,负责集群中各GTM、CN、DN实例状态的监控,以及每一对GTM,DN主备HA角色的仲裁,根据CMAgent上报的各实例节点状态信息来仲裁实例是否需要状态变更,以及需要哪种变更。正常场景下,集群需要有且只有一个CMServer主进行相关仲裁动作,CMSe - [DN仲裁](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0877.md): CM支持的DN仲裁模式主要分为Quorum模式和DCF模式,默认模式为Quorum模式。Quorum模式DN仲裁选主流程,如下图所示:DN主实例故障(心跳超时6s/进程Down/磁盘故障/端口故障/僵死)。CM检测到无主,即开始给正常节点发送lock1命令尝试锁住备DN。如果Redo回放完并且主备通信断开,则lock1成功,DN会处于pr - [CN仲裁](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0878.md): CN没有主备之分,同时CN的DDL操作为所有CN强一致性同步操作,CN故障后,DDL操作会受到影响。当CN故障超过25s一直没有恢复的话,CM认为此CN无法提供服务,进入CN的剔除流程。CN剔除流程如下图所示。CN剔除:CM检测到CN连续故障(进程Down/僵死/多次重启/磁盘故障/端口冲突/网卡故障/CN连不上所有主DN)时长超过25s - [GTM仲裁](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0879.md): GTM名为全局事务管理器,系统中只有一个,采用主备方式,主机故障后,备机可以接管服务。主GTM不与备GTM进行数据同步,备GTM仅尝试与主GTM进行连接状态校验,GTM主备中需要同步的数据,都是备份在ETCD上。GTM仲裁选主流程如下图所示。GTM仲裁选主:GTM主故障(进程Down/磁盘故障/端口冲突/网卡故障)。判断GTM备与主的连接 - [CMServer仲裁](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0880.md): CMServer负责整个集群中实例的仲裁及命令的下发,相当于集群的大脑。当实例出现故障时,CMServer会仲裁实例以试图使得集群恢复可用状态,但当CMServer自身面临故障时,并没有一个更上层的组件来进行仲裁处理,CMServer依靠的是自身的自仲裁机制保证集群的可用性。CMServer自仲裁选主:CMServer会持续往ETCD中写 - [ETCD仲裁](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0881.md): ETCD是一种开源分布式键值库,用于共享配置和服务发现,负责保存集群的拓扑信息。它提供存储以及获取数据的接口,并通过协议保证ETCD集群中的多个节点数据的强一致性。ETCD可用于存储元信息以及共享配置信息,同时提供监听机制,允许客户端监听特定key或某些key的变更,实现变更的实时监听与推送。此外,ETCD提供key的过期以及续约机制,客 - [磁盘检测](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0883.md): 规格:只检测DN、CN、GTM、CM(CMA、CMS)的数据盘、日志盘以及DN的表空间所在盘。只检测DN、CN、GTM、CM(CMA、CMS)的数据盘、日志盘以及DN的表空间所在盘。检测规则:检测通过读写临时文件实现,针对文件会有四个操作:open(打开文件),write(写文件),read(读文件),unlink(删除文件)。其中ope - [DN僵死检测](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0884.md): 当DN进程处于D、T、Z或者连接超时等僵死状态时,DN无法及时处理业务请求,导致业务中断,影响业务正常功能。CM支持根据配置值定时检测DN是否处于僵死状态,若DN连续处于僵死状态的次数达到设定值,将自动执行重启恢复操作。 - [急救室能力](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0885.md): 急救室是一个高度抽象的框架模型,由于故障存在假阳性和假阴性情况,因此需要框架更加的灵活,以应对不同场景和需求下的高可用。当前具备线程心跳自检、检测磁盘I/O hang(由于磁盘故障,导致无法进行数据写入和读取等)问题并自动隔离主DN的能力、系统资源监控能力、网络探测能力和支持异步日志功能。 - [硬件故障处理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0886.md): 硬件故障处理属于端到端全栈高可用能力。 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0887.md): 仲裁和故障检测均为自动进行。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0888.md): Q:CN剔除故障恢复后未加回。A:对应节点CMAgent日志搜索autorepair,查看不能加回原因。故障恢复后,CM如果30分钟内都没有加回CN,便不会再尝试加回。如需加回,可通过节点替换修复。Q:多数派故障后集群无主。A:请参见《最佳实践》中“多数派故障最佳实践”章节。Q:DN发生主备倒换。A:在原主节点CMAgent日志中搜索ki - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0891.md): 实现集群内主DN与备DN角色的计划内切换(switchover),保障业务连续性。在安装集群、升级、扩容等相关流程中,均包含集群内switchover流程。主DN无业务,备DN无日志积压的场景下(备DN RTO<10秒),switchover超时时间为120秒。在使用switchover前,应提前检查升主备DN的RTO值,如果RTO较大, - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0892.md): switchover执行流程分为以下核心阶段:使用cm_ctl下发switchover命令后,备DN会向主DN发送降备请求。主DN收到降备请求后,退出所有业务线程并进行销毁共享内存等相关操作。主DN更新节点状态为备DN,通知备DN主降备已完成。备DN收到主降备完成消息后,完成本地日志的回放并更新节点状态为主DN。完成switchover流 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0893.md): 在进行switchover操作之前,需要先确保数据库状态正常、所有业务结束,并使用pg_get_senders_catchup_time视图查询无主备追赶后,再进行switchover操作。switchover前主动执行一次CHECKPOINT,保证脏页刷盘完成,避免switchover执行超时。指定AZ的数据库主备倒换:cm_ctl s - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0894.md): 主降备超时导致switchover超时:主降备超时主要是因为后台线程或者关键线程的退出超时。需要查看日志定位($GAUSSLOG/gs_log/dn_xxxx/gaussdb-*.log)。主降备超时主要是因为后台线程或者关键线程的退出超时。需要查看日志定位($GAUSSLOG/gs_log/dn_xxxx/gaussdb-*.log)。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0896.md): 在确保数据零丢失的前提下,通过计划内切换主数据库实例和灾备数据库实例的角色(Switchover),实现在数据库维护升级与容灾演练等场景中对系统可用性的保证。倒换原理如下图所示。银行核心交易系统需定期验证容灾能力,通过主动switchover将主集群切换至同城或者异地的灾备集群,验证RPO=0(零数据丢失)且RTO(业务恢复时间)满足规格 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0897.md): 用户在管控平台下发集群倒换命令后,管控会对主备集群同时发送倒换请求。灾备集群收到切换命令后,暂停集群内仲裁,开启首备DN只读。灾备集群的首备DN通过主备集群数据传输链路向主集群的主DN发起倒换请求,并接收增量日志进行回放。完成回放后,灾备集群升为主集群。主集群在收到灾备集群的倒换请求后,会退掉所有业务线程并清理相关资源,再降为备集群。主备 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0901.md): 主备重建是GaussDB数据库服务高可用(HA)体系中的核心修复特性,它通过从主节点或完整备节点进行全量或增量同步数据的方式,解决因备节点数据延迟、磁盘损坏、日志断裂等原因导致其与主节点数据不一致的问题,从而实现备节点的快速纳管与集群可用性的恢复。该特性是实现集群高可用性、保证数据最终一致性的关键技术保障。通过基于WAL日志的物理复制与回 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0902.md): 一致性快照同步(Establish Snapshot)重建开始时,主节点上的WAL Sender线程首先会获取一个当前的一致性点(Checkpoint),并将该点的LSN(Log Sequence Number)和时间线(Timeline)信息发送给备节点。此快照点确保了重建数据的起点是一致的。重建开始时,主节点上的WAL Sender线 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0903.md): 软硬件要求:主备节点间网络互通,且防火墙已开放数据库端口和高可用通道端口。备节点磁盘空间充足,至少能容纳一份完整的数据副本。主备节点间网络互通,且防火墙已开放数据库端口和高可用通道端口。备节点磁盘空间充足,至少能容纳一份完整的数据副本。依赖项:主备节点GaussDB软件版本必须完全一致。主节点状态正常。主备节点GaussDB软件版本必须完 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0904.md): Q1:重建任务启动失败,报错“could not connect to server: Connection timed out”。问题现象:执行gs_ctl build命令后,长时间等待后返回连接超时错误。原因分析:主备节点之间的网络不通。主节点的监听地址(listen_addresses)未配置为备节点可访问的IP或*。防火墙或安全组 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0907.md): 就地升级是一种离线升级方式,需停止业务并中断服务,一次性完成集群所有节点的升级。根据升级过程中是否涉及系统对象修改,现有升级工具的应用场景可分为两类:小版本(二进制)升级:适用于补丁安装、漏洞修复等场景。大版本升级:适用于新特性、新功能和新模块发布等场景。通过停止集群运行、更新系统对象及切换二进制文件,实现数据库的离线就地升级。用户安装首 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0908.md): 支持两类升级模式:小版本升级:内核版本号保持不变,适用于补丁或漏洞修复。大版本升级:内核版本号变更,适用于新特性或功能发布。小版本升级:内核版本号保持不变,适用于补丁或漏洞修复。大版本升级:内核版本号变更,适用于新特性或功能发布。内核版本号在升级文件压缩包中的version.cfg的第二行查看。部署形态为3C1D。升级路径版本跨度不超过2 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0909.md): 环境要求:所有服务器操作系统运行状态正常。网络环境稳定无异常。所有服务器操作系统运行状态正常。网络环境稳定无异常。依赖项:已成功执行前置脚本gs_preinstall完成环境预配置。权限要求:需要使用执行gs_preinstall时指定的集群用户进行升级操作。显示帮助信息。gs_upgradectl -? | --help显示版本号信息。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0910.md): 问题现象:新集群与旧集群的Commit ID完全一致。新集群与旧集群的Commit ID完全一致。原因分析:升级包版本与基线包版本相同,不允许升级。未执行升级操作直接发起Commit请求,违反操作流程规范。升级包版本与基线包版本相同,不允许升级。未执行升级操作直接发起Commit请求,违反操作流程规范。处理方法:更换与基线包版本存在差异的 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0912.md): 灰度升级是一种支持优先升级部分节点的在线升级方式。通过先选择部分节点进行灰度升级,进入灰度观察期观察新版本稳定性,再升级剩余节点的方式,实现全部升级操作。其核心实现包含以下三个维度:系统表与函数兼容性针对大版本升级导致的系统表结构变更,将新/旧版本系统表结构及系统函数固化于二进制内。确保新旧版本二进制均能解析并使用新旧系统表元组。针对大版 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0913.md): 灰度升级通过分阶段实施可达成以下目的:备DN优先升级:优先升级部分备DN节点,升级失败不影响业务连续性。CN节点部分升级:先升级部分CN节点,用户将业务路由到未升级的其余CN节点,保证升级过程中业务不中断。按业务影响优先级升级组件:先升级业务影响小的组件节点(如ETCD、CMS),即使升级失败也可将对业务影响控制在最小范围。观察期验证机制 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0914.md): 环境要求:所有服务器操作系统运行状态正常。网络环境稳定无异常。所有服务器操作系统运行状态正常。网络环境稳定无异常。依赖项:已成功执行前置脚本gs_preinstall完成环境预配置。权限要求:需要使用执行gs_preinstall时指定的集群用户进行安装操作。显示帮助信息。gs_upgradectl -? | --help显示版本号信息。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0915.md): Q:从A版本升级至B版本未执行提交操作,继续升级至C版本时触发Commit ID校验拦截。A:请在A版本升级到B版本提交后,再从B升级到C。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0917.md): 滚动升级允许用户指定部分DN分片或AZ分片先升级,进入滚动观察期观察新版本是否运行正常,再升级剩余分片,实现全部升级操作。也可以一次升级所有分片。滚动升级支持全业务操作,具体实现方式根据部署模式区分:独立部署模式:采用滚动升级DN分片的方式对集群进行升级。混合部署模式:采用滚动升级AZ分片的方式对集群进行升级。要求输入的节点必须是一个AZ - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0918.md): 数据库升级体系向上对接数据库运维管理平台,通过标准化升级接口及专用工具gs_upgradectl对接DN和gsql,最终依托升级脚本完成数据库升级。指定auto_script参数升级脚本在切换二进制之后自动生成,小版本升级也会生成脚本并执行。该参数为内部升级方式过度使用参数,故未对数据库运维管理平台开放使用。为最小化二进制切换对节点业务的 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0919.md): 环境要求:所有服务器操作系统运行状态正常。网络环境稳定无异常。所有服务器操作系统运行状态正常。网络环境稳定无异常。依赖项:已成功执行前置脚本gs_preinstall完成环境预配置。权限要求:需要使用执行gs_preinstall时指定的集群用户进行安装操作。显示帮助信息。gs_upgradectl -? | --help显示版本号信息。 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0920.md): Q:从A版本升级至B版本未执行提交操作,继续升级至C版本时触发Commit ID校验拦截。A:请在A版本升级到B版本提交后,再从B升级到C。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0922.md): 随着企业数据规模持续扩大,节点数量急剧增长,硬件损坏概率相应攀升,物理节点替换修复已成为日常运维的常规操作。传统离线节点替换方案难以满足业务连续性需求,频繁的业务中断将给客户造成重大损失。当前主流数据库产品在节点替换过程中,普遍存在需中断业务或仅支持有限操作的局限性,无法适应海量数据场景下常态化物理节点替换需求。在线节点替换特性解决了上述 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0923.md): 节点修复与节点替换操作可在线完成,无需中断业务,主要依赖于数据库配置的动态加载生效及数据build后实例正常启动。具体流程步骤如下: - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0924.md): 节点修复该工具支持对故障的ETCD/DN/CN/CM/GTM进行节点修复。若参数enable_synclist_single_inst值为off,则在一主多备场景下,每组DN中至少保证多数派实例正常工作,仅允许少数派实例故障。此时通过gs_replace修复故障DN不影响业务。修复DN实例时,需确保DN环中存在CM可正常监控的主DN,以保 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0925.md): Q:混合部署的情况下,被替换的旧节点上存在某分片的主DN,导致替换失败,如何处理?A:被替换的节点上不能存在主DN,需使用"cm_ctl switchover -n nodeId -D datadir"将主DN切换至同分片其他节点上,再继续节点替换操作。Q:某实例故障,优先选择节点替换还是节点修复?A:实例故障建议优先选择节点修复,因为节 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0928.md): 用户可指定相同的SQL模板语句,重复执行该语句时可以跳过解析和计划生成操作,复用上次执行时生成的计划缓存,从而提升执行速度。用户可以在SQL语句上设置绑定参数,每次执行时绑定不同参数,复用计划模板。可分为以下步骤:预编译阶段:发送一个SQL语句(可绑定参数),并提供一个语句名作为键Key。执行阶段:指定语句名Key,并提供参数值以执行已编 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0929.md): SQL执行流程中,预编译计划缓存可复用从词法、语法分析到计划生成的完整流程,其中计划缓存复用效果受计划类型影响,复用成功后,每次执行仅需处理计划执行模块。预编译阶段,将对词法语法解析、语义分析及查询重写结果进行缓存,并启动查询优化与计划生成操作,生成计划时选择Generic Plan或Custom Plan。两种计划类型具有不同特性:Ge - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0930.md): JDBC示例调用Connection接口的prepareStatement方法创建预编译语句对象pstmt。PreparedStatement pstmt = conn.prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1" - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0931.md): 问题现象:为什么计划缓存没有复用?原因分析:preparethreshold等url参数设置不当会引发计划无法缓存复用。解决办法:请参见连接参数参考章节。预计在第prepareThreshold次发送SQL时才会指定语句Key,在会话上缓存计划并等待后续复用。在第prepareThreshold次前,发送的是不带语句Key的unnamed - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0933.md): 相同语句计划复用:是一项通过缓存执行计划优化查询性能的技术。其核心原理是缓存SQL语句及已生成的执行计划,当后续遇到相同SQL文本的SQL语句(包括所有字面值、大小写、空格等都需相同)时,直接复用缓存计划,从而跳过重复的解析、优化等耗时阶段。该功能支持GSQL发送的简单查询和PBE(包含batch)场景,SQL文本中可以包含用户指定的绑参 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0934.md): 相同语句计划复用相同语句计划复用流程原理图用户SQL语句经词法解析与语法解析后,对于相同的SQL语句计划实现复用。当用户第一次执行某SQL语句时,数据库对SQL语句进行语义解析及计划生成,同时将语义解析结果及计划根据SQL等关键信息作为键(Key)构建计划缓存哈希表,进行缓存。当后续遇到相同SQL文本的SQL语句(包括所有字面值、大小写、 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0935.md): cursor_sharing = exact,仅启用相同语句计划复用功能。建库、建表及设置参数。gaussdb=# CREATE DATABASE ora_db dbcompatibility = 'ORA'; CREATE DATABASE gaussdb=# \c ora_db Non-SSL connection (SSL conn - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0936.md): Q:自动参数化是否存在计划跳变问题?A:在自动参数化下,部分语句计划可能会发生变化。由于自动参数化将语句中的常量替换为参数,再进行绑参执行。在计划生成的过程中,部分场景下对常量及参数的处理有区别,因此导致设置cursor_sharing = force后,出现部分计划跳变的问题。如下示例中,SELECT * FROM cursor_sha - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0938.md): 全局共享计划缓存(Global Plan Cache, GPC)功能可共享不同会话间的执行计划。GPC在预编译计划缓存、自动参数化和相同语句计划复用的基础上生效,将缓存在会话内的计划存入GPC,使其在全局可见,其他会话可根据实际的SQL语句在全局计划缓存中获取所需的计划,并复用共享计划缓存进行执行操作。GPC可通过GUC参数enable_ - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0939.md): 以预编译PreparedStatement为例,计划缓存在当前会话上时,内存位置如图1所示,开启GPC全局共享计划后,内存位置如图2所示。用户指定预编译计划缓存,在会话上基于指定键Key(SQL语句和会话级GUC参数)生成预编译语句,通过Key在共享计划缓存中进行匹配并直接引用已匹配的缓存计划。自动参数化、相同语句计划复用、存储过程中计划 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0940.md): 开启PBE查询和存储过程中语句的执行计划进行缓存共享。将enable_global_plancache参数设置为on,具体设置请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 查询规划 > 其他优化器选项”章节。以上操作需要重启集群生效。允许后续执行计划存入全局计划缓存。SET disable_gpc_store = off; - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0941.md): 为什么计划无法存入共享缓存?如果计划没有选择Generic Plan,或SQL中包含临时表或全局临时表时,会导致计划无法共享。具体约束请参见规格约束。如果共享计划缓存达到内存上限,且无法淘汰,也会无法存入共享。具体请参见计划缓存内存上限管控。如果计划没有选择Generic Plan,或SQL中包含临时表或全局临时表时,会导致计划无法共享。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0943.md): 在数据库系统中,对于PBE场景以及启用cursor_sharing功能时,会话级和全局共享级计划缓存机制可能面临内存溢出风险。具体而言,若客户端频繁提交差异化SQL语句,会导致内核持续生成新的计划缓存条目。在缺乏有效清理机制的情况下,这些缓存条目会在内存中无限制累积,最终可能引发内存资源耗尽、系统不可用的严重故障。为解决此隐患,Gauss - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0944.md): 会话级计划缓存控制GaussDB接收到SQL语句后,首次执行该SQL时,对其进行词语法解析、查询重写等操作后生成执行计划,并在会话中对执行计划进行缓存并计算其占用的内存大小,并将生成执行计划必要的上下文信息进行保存,用于该执行计划触发淘汰机制后的重建操作。具体流程如图1所示。会话级计划缓存控制流程会话级的计划缓存管控通过一个LRU链表,根 - [会话级计划缓存管控](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0946.md): 启用逻辑内存管理模块,将enable_memory_limit参数设置为on,具体设置请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。设置成功后,重启数据库集群。打开会话级计划缓存管控。将GUC参数max_plancache_memory_ratio设置为大于0的取值。将GUC参数max_planc - [全局共享级计划缓存管控](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0947.md): 开启PBE查询和存储过程中语句的执行计划进行缓存共享,将enable_global_plancache参数设置为on,具体设置请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 查询规划 > 其他优化器选项”章节。启用逻辑内存管理模块,将enable_memory_limit参数设置为on,具体设置请参见《参考》中“数据库运行参 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0948.md): 问题现象:打开计划缓存管控功能后执行业务语句,仍出现内存不可用的问题。解决办法:请通过以下方式进行解决:确认内存管控参数max_plancache_memory_ratio和global_plancache_memory_ratio是否为0,0表示关闭功能。查看参数enable_memory_limit是否为off,该参数受max_pro - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0950.md): DBLink功能是一种跨数据库访问的功能,用户可以在本地数据库利用DATABASE LINK(数据库连接)与远程数据库建立连接,通过DATABASE LINK实现访问远程数据库的目标。用户需要访问远程数据库表,提供查询,修改等操作。详情请参见规格约束。数据库连接(DATABASE LINK)通过创建DATABASE LINK对象,允许以对 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0951.md): DATABASE LINK查询远程表基本流程的时序图如图1所示。语法解析阶段用户通过使用DATABASE LINK查询远程对象时,解析器会识别@dblink语法标识符,并生成对应的DBLink关系节点,标记远程对象属性。用户通过使用DATABASE LINK查询远程对象时,解析器会识别@dblink语法标识符,并生成对应的DBLink关系 - [操作指导](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0952.md): 连接GaussDB数据库时,需要在远程数据库节点机器上设置允许DATABASE LINK进行访问,并配置远程连接。某些情况集群白名单中也需要添加DN的IP。创建DATABASE LINK。创建DATABASE LINK对象,具体语法请参见《参考》中“SQL参考 > SQL语法 > C > CREATE DATABASE LINK”章节。创 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0953.md): Q1:DATABASE LINK查询远程数据时,一直在等锁释放,这是为什么?问题现象:DATABASE LINK查询远程数据时,一直在等锁。原因分析:业务中存在长事务首次使用DATABASE LINK操作远程对象,会持续持锁直到事务结束,其他首次使用DATABASE LINK的事务会被阻塞。处理方法:通过一条快速执行的语句,先对要使用的远 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0959.md): 单节点表是分布式数据库在企业级应用环境中针对数据量较小、难以进行有效分片的表所采用的优化方案。其核心特征包括:采用复制表分布类型设计。元数据定义全局分布(所有节点均可见),表结构信息全局同步至所有节点,保障跨节点SQL解析能力。数据实体仅存储于指定的单个数据节点(DN)。 - [技术原理](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0960.md): 基础绑定规则单节点表必须且只能创建在系统预置的单节点组Node Group上,具体要求如表1所示。单节点组Node Group核心属性属性类别规范说明类型标识固定为's'类型。命名规则前缀强制为sys_single_group,后缀为数字序号(如:sys_single_group1、sys_single_group2)。成员限制仅包含1个 - [单节点表DDL操作](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0962.md): 单节点表仅支持创建为复制表类型,不支持创建为分布表(指定分布列)。继承复制表约束:不支持创建全局二级索引(GSI),不支持定义为hash bucket表。仅支持在系统预置的单节点组Node Group上创建单节点表。M-Compatibility模式数据库下不支持使用单节点表。从不支持单节点表的版本升级到新版本,升级观察期间,不支持默认创 - [单节点表在线转换操作](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0963.md): 单节点表仅支持创建为复制表类型,不支持创建为分布表(指定分布列)。单节点表不支持创建全局二级索引(GSI)。含有GSI索引的分布表转化成单节点后,GSI索引会转换为普通唯一索引;单节点表转Hash分布表时,不包含分布键的唯一索引会转换为GSI索引。仅支持单节点表与分布表相互转换,不支持修改分布列。单节点表与分布表相互转换时,不支持逻辑复制 - [单节点表DML操作](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0964.md): 当前表是否为单节点表,可通过如下步骤确认是否正确创建单节点表。-- 创建的单节点表t_ng1。 gaussdb=# CREATE TABLE t_ng1(c1 int, c2 int) DISTRIBUTE BY REPLICATION TO GROUP sys_single_group1; gaussdb=# \d+ t_ng1 - [常见问题](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0965.md): 问题现象:执行关于单节点表DML语句中含有单节点读或写操作,发生报错。原因分析:由于单节点表只在对应的sys_single_group的DN上存储数据,当表的scan算子或者modifytable算子下推到非数据存储的DN执行时,会发生报错拦截处理方法:通过EXPLAIN查看执行计划是否合理,或者观察对应DN节点是否是单节点表的数据节点。 - [特性概述](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0974.md): ROWID表是指包含ROWID/ROWNO系统列的表,ROWID不是普通的数据库列,而是一个伪列,表示表中每一行的唯一标识符。ROWID提供了对表中行的物理位置的直接访问,不需要在表中定义,每行数据自动拥有,不同表的ROWID可能重复,不支持通过INSERT/UPDATE/DELETE操作修改。本特性支持的ROWID表相关功能包括:ROW - [DDL](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0976.md): ROWID表的创建和删除(ASTORE+非段页式+非分区表为例):非ROWID表转换为ROWID表(ASTORE+非段页式+非分区表为例):DDL语法的详细介绍请参见《参考》中“SQL参考 > SQL语法”章节 - [ROWID类型](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0977.md): ROWID包含定位表中某一行数据所需的关键信息,可用于快速定位指定数据行。ROWID类型由BASE64编码的字符串组成,包含如下信息:节点的分片编号,说明数据存储节点位置。hashbucket表的bucket编号。表的oid信息。行的编号,每一行数据的编号是唯一的。ROWID类型的详细介绍请参见《参考》中“SQL参考 > 数据类型 > R - [DML](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0978.md): ROWID系统列支持在DML语句中使用,包括INSERT/SELECT/UPDATE/DELETE语句,示例如下:在DML语句中使用ROWID系统列时,若打开GUC参数opt_behavior_knob的ROWID_OPT选项(详情请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 查询规划 > 其他优化器选项”章节内容),则支 - [数据库对象](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0980.md): 数据库对象是数据库逻辑结构的集合,常见的数据库对象有:表、视图、索引、序列、存储过程、包、用户等。数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。在GaussDB中,表空间是一个目录,实例中可以 - [模式(Schema)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0981.md): 模式(Schema)是数据库的对象之一,用于组织数据库中的表、视图、索引、函数和操作符等对象,其作用如下:逻辑隔离:将数据库对象组织成易于管理的逻辑组,不同的模式可以包含同名的对象而不冲突。权限控制:通过模式可以更细粒度地控制用户对数据库的访问权限。可以在模式级别授予或撤销权限,确保数据的安全性和隔离性。便于管理:模式使得数据库对象管理更 - [约束(Constraint)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0982.md): SQL约束用于规定表中的数据规则。如果一个用户试图在表中插入违反约束的数据,会抛出错误。约束分为以下几类:非空约束唯一约束主键约束检查约束含有非空约束的字段不能包含NULL值。只能创建字段级非空约束。在同一个表中可以定义多个非空约束。唯一约束的字段中不能包含重复值。在同一个表中可以定义多个唯一约束。在定义唯一约束后,数据库会自动为约束的字 - [序列(Sequence)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0983.md): 序列(Sequence)是一种数据库对象,用于生成数字队列。序列的值可以按照设定的增量递增或者递减。Sequence默认最大值为2^63-1,如果使用了Large标识则最大值可以支持到2^127-1。序列的创建和使用--创建序列。 gaussdb=#CREATE SEQUENCE seq_test START WITH 1 - [系统列](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0984.md): 系统列是指数据库表中由数据库系统自动创建和维护的列,这些列用于存储表相关的元数据信息。系统列包含以下几种:oid:对象标识符,是数据库中每个表的唯一标识。ctid:行标识符,用于标识表中的行,每行都有一个唯一的ctid。xmin:事务标识符,表示表中插入该行的最小事务ID。xmax:事务标识符,表示表中删除或者更新该行的最大事务ID。cm - [分区表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0985.md): 数据库表分区是一种数据库优化的技术,可以将大表物理上分割成多个较小的部分以提高查询性能。每个部分称为一个分区,这些分区可以存储在不同的存储设备上。优点:提高查询性能:通过减少扫描的数据量使查询性能有显著地提升。优化存储:通过把不同分区存放到不同的存储介质上,来平衡性能和成本。增加可维护性:分区表的维护操作(数据清理、重建索引)可以从分区的 - [索引](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0987.md): 索引是数据库中用于加速数据检索的一种数据结构,通过创建指向表中数据的指针,使得数据库可以快速定位和访问特定的行,而无需扫描整个表。索引类似于书籍的目录,帮助用户快速定位所需要的内容,从而显著提高查询性能。虽然索引可以提高数据访问速度,但同时也增加了插入、更新、和删除操作的处理时间。所以是否要为表创建索引、索引建立在哪些字段上,是创建索引前 - [物化视图](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0988.md): 物化视图是一种特殊的物理表,与视图的区别是物化视图存储了查询结果,而不是查询的定义。相比视图物化视图在查询时有更高的速度,但物化视图无法实时更新,对于需要实时响应的业务不够灵活。物化视图又分为增量物化视图和全量物化视图。全量物化视图:全量物化视图需要刷新时,会对视图进行全量更新,即重新执行查询并将结果替换到当前视图中。适用于数据更新频率较 - [事务](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0989.md): 事务(Transaction)是数据库管理系统执行过程中的最小逻辑单位,由一个有限的数据库操作序列构成(通常由事务开始与事务结束之间执行的全部数据库操作组成)。这些操作要么全部成功执行,要么全部不执行,是一个不可分割的执行单位。当事务提交时,数据库管理系统必须确保事务中的所有操作都成功完成。如果事务中的任何一部分操作未成功,系统会将数据库 - [锁](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0990.md): 数据库通过锁对公共资源进行并发控制,使用锁的一般流程操作可以简述为3步:加锁、临界区操作、释放锁。当对表进行DDL/DML操作时,数据库会对表进行加锁操作,在事务结束时释放。GaussDB提供了8个级别的锁分别用于不同语句的并发,各操作对应的锁如下表所示:当两个事务的锁产生冲突时,未获取到锁的线程会等待锁。如果等待时间超过了系统设置的参数 - [PL/SQL简介](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0992.md): PL/SQL 提供了一种服务器端的存储过程语言,它易于使用,具备安全性且可移植。通过该语言,可以创建对象以访问和操作数据库数据。PL/SQL子程序是一个命名的PL/SQL块,它允许调用方提供只输入、只输出或者输入和输出的参数。子程序主要包括四种类型:存储过程、函数、包和触发器。子程序创建子程序结构如下:声明部分(可选)声明部分包括类型、变 - [游标(Cursor)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0993.md): 游标(Cursor)用于处理SQL影响的结果集,允许逐行地访问和操作这些结果集。它是指向查询结果集的一个指针,可以对每一行数据进行单独的处理。游标主要分为显示游标和隐式游标。%FOUND:用于测试对游标进行FETCH的操作是否检索到行,如果FETCH检索到行,则返回TRUE。%NOTFOUND:与%FOUND相反,如果FETCH操作没有检 - [存储过程(Procedure)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0994.md): 存储过程是预编译并存储在数据库中的程序,由一组SQL语句组成,用于执行一系列数据库操作。存储过程可以被多个应用程序调用,从而提高代码的复用性和维护性。存储过程的特点:复杂数据操作简化:执行需要多步操作的复杂业务逻辑,如批量数据处理、数据转换等。性能优化:通过预编译和减少网络通信,提高数据库操作的执行效率。安全性增强:将业务逻辑封装在存储过 - [函数(Function)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0995.md): 函数是一种数据库对象,用来返回单个值或表对象。函数必须有一个返回值,并且定义了返回值的类型。适用于需要返回单个值的情况,如进行计算、数据转换或返回表数据。如下示例中创建了一个名为add_num()的函数,入参是两个整数参数,并返回它们的和。 - [触发器(Trigger)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0996.md): 触发器是一种特殊的函数,当某个数据变更事件(INSERT、UPDATE、DELETE 或者 TRUNCATE)或者数据库事件(DDL语句)发生时自动执行,而不是由用户或者应用程序进行调用。创建触发器--创建company表。 gaussdb=#CREATE TABLE company( ID INT PRIMARY KEY - [包(Package)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0997.md): 包(Package)是一组相关的子程序,包括包所使用的游标和变量,一起存储在数据库中,以便作为一个单元继续使用。打包的子程序可以由应用程序或用户显式调用。具有以下特点:促进模块化编程:通过将相关的函数和存储过程封装在一个Package中,可以更容易地实现模块化编程。模块化可以提高代码的可读性和可维护性。断开依赖链:对某个数据库对象的修改( - [TOAST表](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1000.md): TOAST(The Oversized-Attribute Storage Technique)是一种特殊的存储机制。只有一些具有变长表现形式的数据才会支持TOAST,比如text类型。TOAST机制的主要目的是为了解决数据库中单个字段过大,无法直接存储在标准数据页中的问题。由于在GaussDB存储方式中,一条数据所有的字段组合在一起称为 - [HTAP](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1001.md): HTAP(Hybrid Transactional/Analytical Processing,混合事务分析处理)数据库架构是一种突破传统的处理事务型工作负载(OLTP)与分析型工作负载(OLAP)系统分离模式的技术创新方案。该架构通过统一数据存储引擎和计算资源调度机制,实现OLTP与OLAP在同一个技术架构内的协同运作,有效消除传统架构 - [全密态数据库](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1002.md): 全密态数据库是指能够解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态,同时密钥掌握在授权用户手中的数据库管理系统。全密态数据库使用多级加密模型,加密模型中涉及3个对象:数据、列密钥和主密钥,其关系如图1所示:以下是对3个对象的介绍:数据:SQL语法中包含的数据,比如 - [cursor.fetchmany(size)](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1003.md): 执行SQL查询后,调用fetchmany(size)会从游标的未读取结果中返回指定数量的行。每次调用会从上一次结束的位置继续读取,直到结果集耗尽。返回“最多size行”,但可能更少。具体返回结果,如表2所示。无 - [DDL](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1004.md): 数据库的 DDL 功能用于数据库对象的变更。GaussDB支持如下DDL功能:索引操作主键操作列操作生成列操作外键操作表操作分区操作模式操作数据库实例操作表空间操作索引操作主键操作列操作生成列操作外键操作表操作分区操作模式操作数据库实例操作表空间操作按照是否涉及 DDL 目标对象数据的处理,DDL 语句可以划分为两种类型:逻辑 DDL 语 - [预写式日志](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1005.md): 预写式日志(Write Ahead Log,缩写为WAL,也称为Xlog)是一种用于保证数据可靠性和系统可恢复性的技术。其核心思想是:在对数据文件进行修改之前,必须先将这些修改的操作记录写入日志文件,并将日志文件刷新到持久化存储器中。在系统崩溃时,可以使用WAL日志对集群进行恢复操作。WAL日志记录的详细程度分为几个级别,由GUC参数wa - [极致RTO](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1006.md): 极致RTO(Recovery Time Objective,恢复时间目标)功能是通过充分利用服务器的多核CPU资源,建立多级日志回放流水线,使备机日志回放的并发度提高到页面级,实现回放加速的高可用功能。GaussDB数据库的主机通过发送WAL日志给备机回放,实现主备同步。当业务压力过大时,如果备机的回放速度跟不上主机的速度,在系统长时间的 - [DCF](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1007.md): 概念DCF(Distributed Consensus Framework)分布式一致性框架,是一款自研的高性能、高度成熟可靠、易扩展、易使用的独立基础库,其他系统通过API接口可方便地集成DCF组件。DCF基于Paxos协议实现,解决分布式一致性问题,提升集群高可靠高可用能力。作用和价值DCF常用于数据库高可用场景,保证数据库多副本日志 - [CM](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1008.md): CM(Cluster Manager)是一款数据库资源管理与监控组件,提供高可用、自动化的实例管理和故障恢复能力,保障集群的稳定运行。GaussDB提供了cm_ctl工具用来控制集群服务。核心组件CMS(cm_server)是用来进行集群管理和实例仲裁的组件。功能:接收各个节点上CMA发送的集群各实例状态。监控实例的状态变化并进行仲裁命令 - [调用堆栈](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1009.md): 调用堆栈(Call Stack)是程序运行时由操作系统和编译器协同管理的核心机制,基于栈帧(Stack Frame)结构与硬件级栈指针实现,用于动态追踪函数调用层次与执行状态。在数据库运维场景中,调用堆栈的全链路可视化能力(如GaussDB的gs_stack()函数)可实时捕获线程级函数调用链,精确定位死锁、事务阻塞等高复杂度问题,相较于 - [等待事件](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1010.md): 等待事件是指数据库中的进程或线程在执行过程中,由于某些资源不可用或需要等待某些条件满足而暂时无法继续执行的状态。当一个事务或查询需要获取某个锁、读写磁盘、等待远程节点响应或访问共享内存结构时,就会进入“等待”状态。这些等待虽然短暂,但如果频繁发生或单次耗时过长,就会显著拖慢整体吞吐量。传统的性能监控往往只能看到某条 SQL 执行较慢,却无 - [备份恢复](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1011.md): 备份是通过复制数据库文件到指定的备份位置的过程,主要为了防止因硬件故障、人为误删、勒索攻击等场景数据丢失,从而可以更好地保护数据安全。恢复是将备份数据还原到数据库系统的过程。备份方式分类:物理备份:是指复制数据库的物理文件到指定的备份位置,不涉及数据库内部逻辑结构,备份速度快,但备份文件不可读,适合大规模数据库。逻辑备份:是指将数据库中的 - [GaussDB单表支持的最大列数?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1013.md): 答:1600列,但具体数值会因字段类型不同而变化。建表时不校验字段类型,数据存入时进行校验。例如bigint类型字段每个占用8字节数据,1600列总占用12800字节,超过单页容量8KB时插入会报错。字段超长时可能存储到toast表,具体逻辑如下:元组总长度超过2KB时,优先尝试压缩最长列。压缩后仍超限且字段长度超过toast元信息开销( - [如何查询分区表分区信息和索引信息?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1014.md): 答:可以使用如下两种方式来确认:使用pg_get_tabledef()函数查看表的定义,返回信息包含建表SQL、注释、索引、约束等。例如:gaussdb=#SELECT pg_get_tabledef('table_name');分区信息可以查询视图pg_partition,索引信息可以查询视图pg_indexes。使用pg_get_ta - [什么是OID?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1015.md): 答:对象标识符(OID,Object identifiers),是数据库对象的唯一标识,这个对象可以是数据库、表、索引、视图等。 - [什么是UDF?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1016.md): 答:用户自定义函数(User Defined Function),用户可以根据自己的需求自定义一个函数嵌入到GaussDB中来实现特定的功能,以满足不同的业务场景。 - [GaussDB都有哪些通配符,如何使用?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1017.md): 答:GaussDB数据库支持以下三种通配符:%:表示任意数量的字符,包括0个,用于LIKE和NOT LIKE语句中。_:表示一个字符,用于LIKE和 NOT LIKE语句中。*:表示任意数量字符,包括0个,在部分元命令中使用。示例:--任意数量字符的通配符使用,查询tbl_test表中col1字段以ab开头任意多个字符结尾的数据。 gau - [数据库对象名称的长度是否有限制?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1018.md): 答:在创建数据库对象时,命名长度不可超过63个字节,超过数据库对象命名长度限制(63字节)时,数据库会将最后一个字节(而不是字符)截断,可能造成出现半个字符的情况。 - [如何查看某张表的创建时间?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1019.md): 答:在系统视图PG_TABLES里created字段的取值为表的真实创建时间。 - [如何并行创建索引?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1020.md): 答:参考如下方法: - [LIMIT 2、LIMIT 2,3、LIMIT 2 OFFSET 3的区别?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1022.md): 答:LIMIT和OFFSET是用于限制SELECT语句中查询数据返回结果数量的关键字。LIMIT 2:表示查询结果只返回前2行数据。LIMIT 2,3:表示查询结果从第3行开始返回,一共返回3行数据。LIMIT 2 OFFSET 3:表示查询结果从第4行开始返回,一共返回2行数据。 - [如何创建默认为当前时间的列?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1023.md): 答:建表时设置字段默认值为CURRENT_TIMESTAMP。 - [如何判断字段是否为NULL?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1024.md): 答:使用IS NULL和IS NOT NULL来判断字段是否为NULL,例如: - [SQL语言分为哪几类?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1027.md): 答:SQL语言分为3类,分别为:DDL(Data Definition Language,数据定义语言),用于定义或修改数据库中的对象,如:表、索引、视图等。DML(Data Manipulation Language,数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。DCL(Data Control Langu - [触发器的作用是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1028.md): 答:触发器是一种特殊的存储过程,主要是通过事件来触发而被执行的。可以强化约束,维护数据的完整性和一致性。可以跟踪数据库内的操作,不允许未经许可的更新和变化。可以联级运算。 - [数据库事务正确执行的四个特性是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1029.md): 答:数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)正确执行,必须具备的四个特性ACID,Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。Atomicity(原子性):又称为不可分割性。一个事务中的所有操作,要么全部完成, - [GaussDB的DROP、TRUNCATE、DELETE这三种删除数据的方式主要区别是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1030.md): 答:DROP、TRUNCATE、DELETE这三种删除方式的区别主要体现在删除的速度和删除的范围上,具体如下:DROP语句的删除速度最快,可以删除整个表,包括表结构、数据、索引和权限。TRUNCATE语句的删除速度中等,可以删除表中的所有数据,但不删除表结构。DELETE语句的删除速度最慢,可以根据条件删除表中的数据,但不包括表结构。 - [GaussDB数据库一个汉字占几个字节?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1031.md): 答:取决于数据库的字符集编码,GBK字符集一个汉字占2个字节,UTF8字符集一个汉字占3个字节。 - [唯一约束和唯一索引有什么区别?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1032.md): 答:唯一约束和唯一索引的主要区别如下:唯一约束和唯一索引概念不同。唯一约束确保一列或者一组列中包含的数据对于表中所有的行都是唯一的。 唯一索引用于限制索引字段值的唯一性,或者是多个字段组合值的唯一性。CREATE UNIQUE INDEX创建唯一索引。唯一约束确保一列或者一组列中包含的数据对于表中所有的行都是唯一的。 唯一索引用于限制索引 - [GaussDB如何创建弱口令?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1033.md): 答:在GaussDB数据库中,弱口令字典默认为空,用户可以手动向系统表gs_global_config中新增一条或多条弱口令。示例如下: - [什么是脏读、幻读、不可重复读?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1034.md): 答:脏读、幻读、不可重复读都是事务并发存在的问题。脏读:A事务读取到B事务修改过但是没有提交的数据,B事务回滚。幻读:在前后两个时间段内执行对同一个数据的读取,可能出现不一致的结果。不可重复读:在同一事务中两次查询数据的内容不同。 - [什么是MVCC?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1035.md): 答:MVCC,即Multi-Version Concurrency Control(多版本并发控制)。MVCC是数据库并发控制协议的一种,写事务不会立即修改元组内容,每次操作都会在旧的版本之上创建新的版本,并且会保留旧的版本。当某个事务要读取数据时,数据库系统会从所有版本中选取出符合该事务隔离级别要求的版本。MVCC的主要优点是:读数据的 - [日期/时间类型哪些带时区,哪些不带时区?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1036.md): 答:date、time、timestamp、smalldatetime、datea等类型不带时区,timetz、timestamptz等类型带时区。 - [count(*)和count(column)的区别是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1037.md): 答:count()函数用于计算行数的聚合函数,区别如下:count(*)统计包括了所有列的行数,在统计结果时不会忽略值为NULL的数据。count(column)只包括列名那一列,在统计结果时会忽略值为NULL的数据。 - [空字符串和NULL的关系?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1038.md): 答:GaussDB中对空字符串是否为NULL和数据库的兼容模式有关。ORA兼容模式中空字符串判断为NULL。gaussdb=#CREATE DATABASE db_test1 DBCOMPATIBILITY = 'ORA'; gaussdb=#\c db_test1 db_test1=# SELECT '' IS NULL; ?colu - [GaussDB中模式、用户和角色如何理解?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1040.md): 答:模式是对数据库做一个逻辑分割,所有的数据库对象都建立在模式下面。模式和用户是弱绑定的,弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。用户和角色是用来控制对数据库的访问。一个数据库可能有很多的用户需要访问,为了方便管理这些用户,将用户组成一个数据库角色。根据角色自身的设置不同,一 - [以pg_temp或pg_toast_temp开头的SCHEMA是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1042.md): 答:在查询SCHEMA的时候,发现查询结果中存在以pg_temp或pg_toast_temp开头的SCHEMA如下所示。gaussdb=#SELECT nspname FROM pg_namespace WHERE nspname LIKE 'pg_t%' AND nspname != 'pg_toast'; ns - [为什么REVOKE某个用户的CONNECT ON DATABASE权限后还可以登录数据库?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1044.md): 答:使用REVOKE CONNECT ON DATABASE dbname FROM u1命令撤销u1的权限后,因为数据库的CONNECT权限授予了public,需要指定public来实现。GaussDB提供了一个隐式定义的拥有所有角色组public,所有创建的用户和角色默认拥有public所拥有的权限。需要撤销或重新授予用户和角色pub - [使用LIKE进行模糊查找时如何忽略大小写?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1046.md): 答:可以将LIKE改为ILIKE,也可以使用upper或者lower函数。具体示例如下:--前置操作创建表和插入数据。 gaussdb=#CREATE TABLE tbl_test1(c1 varchar); gaussdb=#INSERT INTO tbl_test1 VALUES ('EEE'),('ABC'),('abc'),(' - [在使用了字符串处理函数后查询就不使用索引,该如何处理?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1047.md): 答:在索引列上使用函数处理后就不会走标准的索引,可以创建一个表达式索引,以lpad()函数为例。 - [为什么查询中无法识别表名或者列名?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1048.md): 答:无法识别名称最常见的原因是创建过程中表名或者列名使用了双引号引入了大小写。使用双引号时,表名和列名(称为标识符)在存储是区分大小写的,所以在查询时必须使用双引号且大小写需要与创建时匹配。因为某些接口或应用程序在创建时会自动引入双引号,所以建议创建时统一使用小写。示例: - [如果建表时没有指定分布列,数据会怎么存储?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1049.md): 答:建表时没有指定分布列,数据会以如下三种场景存储:若建表时包含主键/唯一约束,则选取HASH分布,分布列为主键/唯一约束对应的列。gaussdb=#CREATE TABLE tb_test1 ( W_WAREHOUSE_SK INTEGER PRIMARY KEY, W_WAR - [什么是数据倾斜,如何检查?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1050.md): 答:数据倾斜即多个DN内数据分布不均,对于hash分表策略,如果分布列选择不当,可能导致数据倾斜,查询时部分DN出现效率短板,从而影响整体查询性能。因此在采用Hash分表策略之后需对表的数据定期进行数据倾斜性检查或监控,以确保数据在各个DN上是均匀分布的。执行如下语句,查看各DN内元组数目。如果各DN内元组数目相差较大(如相差数倍、数十倍 - [存储过程嵌套调用的深度是多少?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1052.md): 答:存储过程调用存储过程的调用深度是没有限制的,但是不能超过最大栈深度,最大栈深度由GUC参数max_stack_depth控制,限制了会话中的存储过程嵌套调用的最大深度。 - [如何查看当前会话ID以及登录时间?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1053.md): 答:执行如下SQL可查看当前会话ID以及登录时间。 - [如何查看外表信息?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1054.md): 答:通过pg_get_tabledef()函数可以查看外表信息,具体如下示例: - [如何查看数据库用户的创建时间?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1055.md): 答:通过系统表PG_AUTH_HISTORY中的passwordtime字段查看用户密码的初始设置时间,即该用户的创建时间。 - [TOAST是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1056.md): 答:TOAST(The Oversized-Attribute Storage Technique)是GaussDB中的一个特殊表,主要用于存储超长数据字段。当一个元组的完整结构(包括字段)的长度超过了一个页面的大小限制时,GaussDB会启动TOAST机制,将这些字段压缩或切片成多个物理行存到另一张表(TOAST表)。 - [沙箱的作用是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1058.md): 答:沙箱是一种安全机制。主要作用是给不受信任的程序提供一个隔离和受限的运行环境,使得高风险程序只能访问它需要访问的资源,其它不需要访问的资源禁止其访问,降低高风险程序自身的漏洞危害系统、危害其它进程、访问系统机密数据、隐私数据等风险。 - [如何查询数据库最近一次重启时间?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1060.md): 答:查询数据库最近一次重启时间,可以使用如下SQL查询语句: - [如何查询会话数?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1061.md): 答:查询会话数,可以使用如下SQL查询语句:说明:state值为空表明是其它用户的会话。 - [如何查询数据库运行时间?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1062.md): 答:查询数据库运行时间,可以使用如下SQL查询语句: - [如何查看数据库参数值?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1064.md): 答:数据库参数可以通过SHOW命令查看,或者通过pg_settings视图查看。例如: - [什么是GIN索引?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1067.md): 答:GIN(Generalized Inverted Index)通用倒排索引。当处理索引项为组合值的情况,查询时需要通过索引搜索出出现在组合值中的特定元素值。例如,文档是由多个单词组成,需要查询出文档中包含的特定单词。GIN索引大大加速模糊查询。GIN索引使用满足以下条件:在同一个表的同一个列上建立了多个GIN索引。这些GIN索引使用了 - [GaussDB支持哪些硬件平台?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1069.md): 答:GaussDB支持运行在以下硬件平台上:支持基于x86_64/ARM的通用PC服务器。支持本地存储(SATA、SAS、SSD、弹性云EVS服务)。支持千兆、万兆Ethernet网络。数据库运行环境通常需要确保网络时延稳定,且建议集群低负载时(CPU小于 5%),时延50us~70us;集群高负载时(CPU大于 90%),时延不超过10 - [如何查询表中的随机几行?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1070.md): 答:可以使用如下方式查询表中随机几条数据: - [为什么SEQUENCE的编号存在间隙?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1071.md): 答:为了提高并发性,每个会话按照序列的CACHE参数大小,在用户的私有内存空间缓存一定数量的序列值。会话结束后会丢弃会话缓存的序列值,因此序列值会出现跳跃。 - [如何解决power()函数计算结果数值太大时的误差?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1072.md): 答:一般power()函数计算结果大数值时有误差,例如2的60次方,准确值为1152921504606846976,使用SELECT power(2,60)的值为1.15292150460685e+18存在误差。具体解决办法如下:gaussdb=#SELECT power(2,60); power --- - [什么是CTID?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1073.md): 答:CTID通过表中的块和位置来标识特定的物理行。格式(blockid,itemid):比如(0,1)中的0标识块id,表示在0块的第一条记录。索引使用CTID来指向物理行。行的CTID会在更新时候变化,因此CTID不能用作长期标识符。 - [如何查询当前数据库中有哪些触发器,以及触发器的定义?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1074.md): 答:可以使用如下方式查询出当前数据库中的触发器信息。前置操作:创建表和触发器。--建表。 gaussdb=#CREATE TABLE test(c1 int); --创建触发器函数。 gaussdb=#CREATE OR REPLACE FUNCTION func_test() RETURNS TRIGGER AS $$ DECLARE - [如何查询一个表涉及到的所有触发器?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1075.md): 答:通过如下SQL查询(请根据实际情况修改表名)。 - [如何查询表中某列第N大的数据?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1076.md): 答:可以使用窗口函数来实现。请根据实际情况选择row_number()、rank()和dense_rank()三个窗口函数其中之一。--建表插入数据。 gaussdb=#CREATE TABLE tbl_test(name varchar(20),tamo int); gaussdb=#INSERT INTO tbl_test VALUE - [如何删除重复的行?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1079.md): 答:可以用如下两种方式。方式一:该方式仅适用于分布表,且关联条件必须包含分布列,对于复制表,相同数据的ctid在各个DN上可能不一致,因此无法使用此方式删除重复行。--建表和插入数据。 gaussdb=#CREATE TABLE tbl_del(c1 varchar,c2 int) distribute by hash(c1); gaus - [如何查询字段中包含非数字的数据?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1080.md): 答:可以通过如下SQL来查询。 - [如何修改列的顺序?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1081.md): 答:可以使用如下方式实现修改列的顺序。--建表并插入数据。 gaussdb=#CREATE TABLE tbl_test( id varchar(5), age int CHECK(age>0 and age<=200), name varchar(20), CONSTRAINT pk_test_id PR - [如何查看当前数据库的隔离级别?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1117.md): 答:事务的隔离级别共三种,分别为:READ COMMITTED:读已提交隔离级别,事务只能读已提交的数据而不会读未提交的数据,这是缺省值。REPEATABLE READ:事务可重复读隔离级别。Serializable:目前功能上不支持此隔离级别,等价于REPEATABLE READ。使用如下语句查看数据库隔离级别。 - [GaussDB易用性如何?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1118.md): 答:GaussDB提供了丰富的工具和API,方便客户进行二次开发和集成,也使得开发者可以轻松地使用它来进行数据存储和处理,同时它提供了简单易用的操作界面和管理工具,降低了客户的使用门槛和学习成本等。 - [如何在GaussDB当前事务中建立保存点及删除保存点?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1119.md): 答:保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。SAVEPOINT用于在当前事务里建立一个新的保存点。RELEASE SAVEPOINT删除一个当前事务先前定义的保存点。具体操作请参见如下示例: - [事务的作用是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1120.md): 答:在数据库管理系统中,事务用于管理一组数据库操作,使它们作为一个不可分割的工作单元,要么全部执行成功,要么全部回滚。事务确保数据库的一致性和完整性,并且可以恢复到之前的状态,以防止发生意外或错误情况。事务的作用包括:保证数据的一致性:事务确保在一组操作中,要么所有操作都成功执行,要么全部回滚,从而保证数据库数据的一致性。确保数据的完整性 - [开启事务的方式有哪些?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1121.md): 答:开启事务方式有两种,BEGIN可以用于开始一个事务,START TRANSACTION也用于开始一个事务。BEGIN的用法。--建表并插入数据。 gaussdb=# CREATE TABLE tbl_test1(col1 int, col2 int); gaussdb=# INSERT INTO tbl_test1 VALUES (1 - [如何查询数据库活跃连接数?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1123.md): 答:设置参数track_activities为on,查询视图pgxc_stat_activity。 - [通过客户端无法连接数据库的原因有哪些?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1124.md): 答:在使用数据库时,经常会通过客户端去连接数据库,只有正确地连接数据库,才能在数据库进行相关的操作,那么在使用数据库过程中遇到无法连接数据库的情况,常见的原因有以下几点:系统连接数据库数量超过了最大连接数量。用户不具备访问该数据库的权限。当前客户端IP信息没有配置进数据库服务器的pg_hba.conf文件中。网络连接故障。 - [GaussDB支持哪些客户端接入认证方式?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1125.md): 答:GaussDB支持三种认证方式:基于主机的认证:服务器端根据客户端的IP地址、用户名及要访问的数据库查看配置文件,从而判断用户是否通过认证。口令认证:包括远程连接的加密口令认证和本地连接的非加密口令认证。SSL加密:使用OpenSSL(开源安全通信库)提供服务器端和客户端安全连接的环境。基于主机的认证:服务器端根据客户端的IP地址、用 - [如何查看数据库应用连接数以及最大连接数?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1126.md): 答:当应用程序与数据库的连接数超过最大值,则新的连接无法建立。因此应及时释放空闲的连接或者增加最大连接数,保证数据库应用程序的正常连接。 - [如何获取当前连接数据库的用户名?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1127.md): 答:执行以下命令查询当前用户名。gaussdb=# SELECT current_user; - [如何查看指定用户的会话连接数上限?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1128.md): 答:查看指定用户的会话连接数上限,可以使用如下SQL查询语句: - [如何手动锁定和解锁用户?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1130.md): 答:在数据库使用过程中,如果管理员发现某账户存在非法访问等异常情况,可手动锁定该账户。当判断该账户恢复正常后,管理员可手动解锁该账户。以手动锁定和解锁用户jack为例:手动锁定用户。gaussdb=# ALTER USER jack ACCOUNT LOCK; ALTER ROLE手动解锁用户。gaussdb=# ALTER USER - [GaussDB支持哪些安全管理?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1131.md): 答:支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。GaussDB的Agent模式中,由于http协议没有数据加密,数据为明文传输存在安全隐患,故默认配置为https协议。 - [创建模型服务前,如何生成OBS传输密钥?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1132.md): 答:创建服务时会对API-KEY进行加密操作,原理是复用OBS传输使用的密钥文件,如果该文件不存在则需要参考如下命令生成:gs_guc generate -S username -D $GAUSSHOME/bin -o obsserver - [动态脱敏策略如何生效?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1133.md): GaussDB的安全策略开关默认是off关闭状态,通常需要设置为on开启状态,使所有动态脱敏策略生效;除了安全总开关,各项脱敏策略也有对应的开关。只有开关开启,对应的脱敏策略才能生效。开启安全总开关。只设置单项脱敏策略。 - [如何设置账号的有效期?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1134.md): 答:在数据库使用过程中,会创建一些用户对数据库进行相关操作。创建用户时,需要限制用户的操作期限(即有效开始时间和有效结束时间),具体的设置方法如下:当显示CREATE ROLE信息时表示创建用户成功。当显示ALTER ROLE信息时表示重新设定成功。 - [GaussDB如何开启审计策略,支持哪些内容的审计?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1135.md): 答:审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。开启审计总开关。--设置g - [如何查看某个用户有哪些表的权限?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1136.md): 答:可使用information_schema.table_privileges系统视图查看。系统视图information_schema.table_privileges字段如表1所示。 - [GaussDB如何开启三权分立?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1137.md): 答:在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立,将系统管理员的用户管理和审计管理的权限分给安全管理员和审计管理员。设置参数enableSeparationOfDuty为on,则会开启三权分立,限制系统管理员的权限。不允许系统管理员创建或更改用户配置。同时,建议关闭GUC参数enable_copy_s - [GaussDB如何创建只读用户?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1138.md): 答:在业务场景中,数据库管理员可以通过SCHEMA来划分不同业务。例如需要创建一个只读用户user1,允许这个用户访问sc_test模式下所有的表(包括以后创建的新表),但是不允许插入、修改和删除数据。具体过程如下:--前置操作:创建用户和模式sc_test。 gaussdb=# CREATE ROLE u1 WITH SYSADMIN - [GaussDB会话有几种状态?如何查询用户的会话状态?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1139.md): 答:共有6种状态,具体如下:active:后台正在执行一个查询。idle:后台正在等待一个新的客户端命令。idle in transaction:后台在事务中,但事务中没有语句在执行。idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。fastpath function call:后台正在执行 - [如何查询SSL证书的失效日期?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1140.md): 答:GaussDB实例的SSL证书相关信息保存路径为$GAUSSHOME/share/sslcert/。具体操作步骤如下所示: - [如何配置开启密码复杂度校验?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1141.md): 答:为了保证数据库的使用安全,建议配置开启密码复杂度校验,在创建用户或者修改密码时,校验密码复杂度。配置及验证方法如下: - [如何检查数据库初始化用户角色?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1142.md): 答:数据库初始化用户角色具有数据库的最高权限,并且具有所有的系统权限和对象权限。建议仅将此用户作为DBA管理用途。 - [哪些系统视图与审计信息有关?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1143.md): 答:以下3个视图与审计信息有关,需要有系统管理员或安全策略管理员权限才可以访问这些视图:GS_AUDITING:显示对数据库相关操作的所有审计信息。GS_AUDITING_ACCESS:显示对数据库DML相关操作的所有审计信息。GS_AUDITING_PRIVILEGE:显示对数据库DDL相关操作的所有审计信息。 - [如何配置日志文件权限?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1144.md): 答:当开启参数logging_collector时,可以使用参数log_file_mode设置服务器日志文件的权限。因为日志文件中可能含有敏感数据,所以日志文件访问必须受到限制。 - [如何配置数据库账号登录失败尝试次数?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1145.md): 答:在数据库使用过程中,推荐配置账户登录失败尝试次数,防止密码被暴力破解。配置参数failed_login_attempts后,当失败次数超过此参数值后,账户将被自动锁定。 - [透明加密和全密态有什么区别?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1146.md): 答:透明加密和全密态都可以加密数据,但这是两种不同的加密模式,具体区别如下:加密位置不同:透明加密在数据库存储模块后加密,全密态在数据库驱动中加密。加密对象不同:透明加密数据页中的全部数据,全密态加密SQL语句中的某几列数据。加密性能不同:透明加密一次可以处理8k的数据页,全密态一次仅可以处理SQL语句中的一条数据,透明加密性能高于全密态 - [如何保证数据的安全性?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1147.md): 答:GaussDB通过多种安全措施来保证数据的安全性,包括:加密技术:对敏感数据进行加密存储和传输,防止数据泄露。访问控制:通过用户认证和权限管理,控制不同的用户对数据的访问权限。备份和恢复:定期备份数据,并在需要时能够迅速恢复数据,防止数据丢失。审计和监控:可通过记录用户的操作行为,并进行实时监控和告警,以便及时发现和处理安全事件。 - [如何查看GaussDB KernelGaussDB客户端与服务端字符编码类型?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1149.md): 答:执行如下语句查看客户端字符串编码类型。执行如下语句查看服务端字符编码类型。 - [如何查看系统中正在运行的SELECT语句?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1150.md): 答:设置参数track_activities为on。当此参数取值为on时,数据库系统才会收集当前活动查询的运行信息。查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例: - [如何查询表存在的索引?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1151.md): 答:通过pg_indexes视图可查询表存在的索引。示例如下: - [如何查询表的存储方式?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1152.md): 答:可通过表定义函数pg_get_tabledef()查询,row表示行存。具体查询方式如下所示: - [如何查询表和数据库容量?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1153.md): 答:使用查询函数pg_table_size()和pg_database_size()。 - [如何查询数据库、表空间、表的大小?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1154.md): 查询数据库大小:gaussdb=# SELECT datname, pg_database_size(datname), pg_database_size(datname)/1024/1024/1024 as "dataSize_GB" FROM pg_database; datname | pg_databa - [如何创建只读视图以及判断该视图是否是只读视图?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1155.md): 答:创建只读视图。判断该视图是否是只读视图。 - [如何关闭系统表结构修改配置?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1156.md): 答:参数allow_system_table_mods允许修改系统表的结构。开发选项参数和GaussDB内部协同工作,在某些情况下,可以协助恢复遭到严重破坏的数据库。建议将参数allow_system_table_mods设为off,设置完参数后,需要重启数据库。配置及验证方法如下: - [如何使用SQL语句查看数据库的模式?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1157.md): 答:可以通过gs_deployment()系统函数查看当前数据库的部署形态,示例如下: - [如何通过SQL语言查询表、索引、视图的定义?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1158.md): 查询表定义:gaussdb=# SELECT * FROM pg_get_tabledef('table_name');查询索引定义:gaussdb=# SELECT oid FROM pg_class WHERE relname='index_name'; gaussdb=# SELECT * FROM pg_get_indexd - [数据分区都有哪些优点?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1159.md): 答:优点如下:改善可管理性:利用分区,可以将表和索引划分为一些更小、更易管理的单元。有了分区,维护操作可以专门针对表的特定部分执行。可提升删除操作的性能:删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。通过ALTER TABLE ... DROP PARTITION语法进行删除分区表操作。改善查询性能:通过限制要检 - [函数和存储过程的区别是什么?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1162.md): 答:函数和存储过程是数据库中常见的两种对象,两者都可以封装一系列的SQL语句,以完成某些特定的操作。两者区别见表1: - [选择数据库字符集时,应考虑哪些因素?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1163.md): 答:在选择数据库字符集时,应考虑以下因素:应用支持语言的需求已有数据的兼容性性能要求字符运算需求跨平台的兼容性存储空间和性能国家化支持 - [如何检查磁盘类型?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1165.md): 答:查看/sys/block/<磁盘名>/queue/rotational文件的数值。1代表旋转,表示磁盘是机械硬盘HDD,0代表非旋转,表示磁盘是固态硬盘SSD。 - [如何查询活跃元组、脏元组、脏元组比例?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1166.md): 答:查询方法如下:脏元组可作为判断表膨胀程度的指标,高比例的占比可能会导致表的膨胀,需要及时回收空间,避免影响数据库的性能。具体请参见《参考》中“SQL参考 > SQL语法 > V > VACUUM”章节。 - [VACUUM与VACUUM FULL的主要区别?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1167.md): 答:在GaussDB中,VACUUM与VACUUM FULL都是用来清理表空间的命令,但它们有着明显的区别,区别如下:VACUUM:遍历表中的所有行,把表中的dead tuples行(即不再被任何活跃事务所引用的行)进行删除标记,并没有真正进行物理删除,将dead tuple行的空间标记为可重用的状态;VACUUM过程中不会锁表,其它事务 - [GaussDB KernelGaussDB中pg_terminate_backend和pg_terminate_session有什么区别?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1168.md): 答:GaussDB中,pg_terminate_backend和pg_terminate_session都是用于终止数据库会话的命令。pg_terminate_backend命令是终止一个后台线程,它会强制终止该线程正在执行的任何操作,包括正在进行的事务。可以用于终止一个长时间运行的查询或者一个阻塞的事务。pg_terminate_ses - [如何显示数据库文件信息?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1169.md): 答:gs_controldata工具用来显示数据库数据目录下pg_control文件的信息。 - [GaussDB KernelGaussDB Xlog日志自动回收的频率是多久?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1170.md): 答:GaussDB后台自动回收Xlog日志的线程是每一分钟会检测一次,回收满足条件的Xlog日志。当日志量达到一定数量时,日志才会触发回收,该值的计算方式是:wal_keep_segments + checkpoint_segments * 2 + 3 ,假设checkpoint_segments设置128,wal_keep_segme - [什么是死元组?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1171.md): 答:GaussDB目前使用Astore存储引擎,数据的更新是通过追加方式实现的,即对数据执行UPDATE或DELETE操作只是被标识为删除状态,并未立即释放空间。这种处理对于多版本并发控制(MVCC)是必要的,如果一个元组的版本仍有可能被其它事务看到,那么就不能删除。当事务提交后,过期元组版本将对事务不再有效,这些元组就会被标记为死元组。 - [如何查询表的死元组?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1172.md): 答:使用pg_stat_all_tables查询死元组。 - [什么是向量数据库?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1173.md): 答:向量数据库是一种专门设计用于存储、管理和检索高维度向量数据的数据库系统。与传统关系型数据库相比,它们在数据模型、索引机制和查询处理上有显著的不同。向量数据库通过优化的索引技术来提高非结构化数据的检索效率,同时,它们也能够支持复杂的数据分析和机器学习模型,使得数据处理更加高效和智能。向量数据库的主要应用场景包括:推荐系统:例如,在视频推 - [存储过程可以调用触发器吗?](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1174.md): 答:可以,存储过程可以通过执行SQL语句(如UPDATE)触发TRIGGER。 - [VACUUM](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-1175.md): 在GaussDB中,当数据被更新或删除时,系统并不会立即释放物理空间,而是将其标记为“可重用”。随着时间推移,表中的死元组会越来越多。死元组(dead tuples)是指已被删除或因更新而被新版本覆盖,不再被任何活跃事务引用的历史数据行。上述情况不仅会导致存储空间利用率下降,也可能影响查询性能,因为查询需要遍历这些无用的元组。而VACUU ## 计费说明 - [计费概述](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0001.md): 通过阅读本文,您可以快速了解云数据库GaussDB的计费模式、计费项、续费、欠费等主要计费信息。计费模式云数据库GaussDB提供包年/包月、按需计费两种计费模式,以满足不同场景下的用户需求。包年/包月是一种预付费模式,即先付费再使用,按照订单的购买周期进行结算,因此在购买之前,您必须确保账户余额充足。按需计费是一种后付费模式,即先使用再 - [计费项](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0002.md): 云数据库GaussDB的计费项由GaussDB实例费用、存储空间费用、备份空间费用和公网带宽费用组成。具体内容如表1所示。标 * 的计费项为必选计费项。 - [计费模式概述](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0004.md): 云数据库GaussDB提供包年/包月、按需计费两种计费模式,以满足不同场景下的用户需求。包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。购买周期越长,享受的折扣越大。一般适用于设备需求量长期稳定的成熟业务。按需计费:一种后付费模式,即先使用再付费,按照云数据库实际使用时长计费,秒级计费,按小时结算。按需计费模式允许 - [包年/包月](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0005.md): 包年/包月是一种先付费再使用的计费模式,适用于对资源需求稳定且希望降低成本的用户。通过选择包年/包月的计费模式,您可以预先购买云数据库GaussDB并获得一定程度的价格优惠。本文将介绍包年/包月云数据库GaussDB的计费规则。包年/包月计费模式需要用户预先支付一定时长的费用,适用于长期、稳定的业务需求。以下是一些适用于包年/包月计费模式 - [按需计费](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0006.md): 按需计费是一种先使用再付费的计费模式,适用于无需任何预付款或长期承诺的用户。本文将介绍按需计费GaussDB数据库的计费规则。按需计费适用于具有不能中断的短期、突增或不可预测的应用或服务,例如电商抢购、临时测试、科学计算。按需计费包含以下计费项。假设您计划购买规格为通用增强Ⅱ型 8 vCPUs 64GB、1分片、3副本、1个协调节点,存储 - [计费样例](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0007.md): 某用户于2023/03/20 8:30:00购买了一台按需计费的分布式版云数据库GaussDB,规格配置如下:实例规格:通用增强Ⅱ型 8vCPUs 64GB、1分片、3副本、1个协调节点存储空间:160GB公网带宽:6Mbit/s用了一段时间后,用户发现GaussDB当前规格无法满足业务需要,于2023/03/20 10:00:00扩容规 - [变更计费模式概述](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0009.md): 在购买GaussDB实例后,如果发现当前计费模式无法满足业务需求,您可以变更计费模式。支持变更计费模式的GaussDB计费项如表 支持变更计费模式的GaussDB计费项所示。 - [按需转包年/包月](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0010.md): 如果您需要长期使用当前按需购买的云数据库,可以将该云数据库转为包年/包月计费模式,以节省开支。按需计费变更为包年/包月会生成新的订单,用户支付订单后,包年/包月资源将立即生效。假设用户于2023/04/18 15:29:16购买了一个按需计费的云数据库GaussDB,由于业务需要,于2023/04/18 16:30:30执行按需转包年/包 - [包年/包月转按需](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0011.md): 创建一个包年/包月云数据库GaussDB后,您可以将该云数据库的计费模式转为按需计费,回收部分成本,同时更加灵活地按需使用云数据库。假设用户于2023/04/18 15:29:16购买了一个包年/包月的云数据库GaussDB,由于业务需要,于2023/05/18 16:30:00执行包年/包月转按需操作,生成类型为“包年/包月转按需”。在 - [续费概述](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0013.md): 包年/包月实例到期后会影响实例正常运行。如果您想继续使用,需要在指定的时间内为云数据库续费,否则vCPU、内存等资源会自动释放,数据丢失且不可恢复。续费操作仅适用于包年/包月实例,按需计费实例不需要续费,只需要保证账户余额充足即可。云数据库GaussDB实例在到期前续费成功,所有资源得以保留,且实例的运行不受影响。GaussDB实例到期后 - [手动续费](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0014.md): 包年/包月实例从购买到被自动删除之前,您可以随时在控制台为实例续费,以延长GaussDB实例的使用时间。您也可以单击目标实例名称,进入“基本信息”页面,在图 续费计费信息模块的计费模式处,单击续费。可在“手动续费项”、“自动续费项”、“到期转按需项”、“到期不续费项”页签查询全部待续费资源,对资源进行手动续费的操作。所有需手动续费的资源都 - [自动续费](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0015.md): 自动续费可以减少手动续费的管理成本,避免因忘记手动续费而导致GaussDB实例被自动删除。自动续费的规则如下所述:云数据库GaussDB自动续费周期根据您开通自动续费的途径不同,遵循不同的规则。在云数据库GaussDB到期前均可开通自动续费,到期前7日凌晨3:00首次尝试自动续费,如果扣款失败,每天凌晨3:00尝试一次,直至云数据库到期或 - [费用账单](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0016.md): 您可以在“费用中心 > 账单管理”查看资源的费用账单,以了解该资源在某个时间段的使用量和计费信息。包年/包月计费模式的GaussDB实例完成支付后,会实时上报一条账单到计费系统进行结算。按需计费模式的实例按照固定周期上报使用量到计费系统进行结算。按需计费模式产品根据使用量类型的不同,分为按小时、按天、按月三种周期进行结算,具体扣费规则可以 - [欠费说明](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0017.md): 用户在使用云服务时,账户的可用额度小于待结算的账单,即被判定为账户欠费。欠费后,可能会影响云服务资源的正常运行,请及时充值。未购买包年/包月实例,在按需计费模式下账户的余额不足,无法对上一个小时的费用进行扣费,就会导致实例欠费。包年/包月对于包年/包月GaussDB实例,用户已经预先支付了资源费用,因此在账户出现欠费的情况下,已有的包年/ - [停止计费](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0018.md): 对于包年/包月计费模式的资源,例如包年/包月的云数据库GaussDB实例用户在购买时会一次性付费,服务将在到期后自动停止使用。如果在计费周期内不再使用包年/包月资源,您可以执行退订操作,系统将根据资源是否属于五天无理由退订、是否使用代金券和折扣券等条件返还一定金额到您的账户。详细的退订规则请参见云服务退订规则概览。如果您已开启“自动续费” - [成本管理](https://support.huaweicloud.com/price-gaussdb/gaussdb_price_0019.md): 随着上云企业越来越多,企业对用云成本问题也越发重视。使用云数据库GaussDB时,如何进行成本管理,减轻业务负担呢?本文将从成本构成、成本分配、成本分析和成本优化四个维度介绍成本管理,帮助您通过成本管理节约成本,在保障业务快速发展的同时获得最大成本收益。使用云数据库GaussDB时,成本主要包括两个方面:资源成本:各类资源和资源包的成本, ## 特性指南(分布式_V2.0-8.x) - [极致RTO](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-17-0055.md): 支撑数据库主机重启后快速恢复的场景。支撑主机与同步备机通过日志同步,加速备机回放的场景。当业务压力过大时,备机的回放速度跟不上主机的速度。在系统长时间的运行后,备机上会出现日志累积。当主机故障后,数据恢复需要很长时间,数据库不可用,严重影响系统可用性。在硬件资源充足的情况下,开启极致RTO(Recovery Time Object,恢复时 - [概述](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0004.md): 全量物化视图是一种仅支持全量刷新的物化视图对象,即在刷新时会丢弃旧数据并重新计算整个查询。创建全量物化视图语法和CREATE TABLE AS语法一致(详情请参见《开发指南》中的“SQL参考 > SQL语法 > CREATE TABLE AS”章节),不支持对全量物化视图指定NodeGroup创建。全量物化视图的创建继承GTM-Free的 - [支持和约束](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0005.md): 通常全量物化视图所支持的查询范围与CREATE TABLE AS语句一致。创建全量物化视图可以指定分布列。可以在全量物化视图上创建索引。支持analyze、explain。全量物化视图不支持NodeGroup。不可对物化视图做增删改操作,只支持查询语句。Ustore引擎不支持全量物化视图的创建和使用。创建全量物化视图所使用的基表必须在所有 - [使用](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0006.md): 创建全量物化视图CREATE MATERIALIZED VIEW view_name AS query;刷新全量物化视图REFRESH MATERIALIZED VIEW view_name;删除物化视图DROP MATERIALIZED VIEW view_name;查询物化视图SELECT * FROM view_name;view_ - [概述](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0008.md): 增量物化视图可以对物化视图增量刷新,需要用户手动执行语句,刷新物化视图在一段时间内的增量数据。与全量创建物化视图的不同在于目前增量物化视图所支持场景较小。目前物化视图创建语句仅支持基表扫描语句或者UNION ALL语句。 - [支持和约束](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0009.md): 单表查询语句。多个单表查询的UNION ALL。在物化视图上创建索引。对物化视图进行ANALYZE操作。增量物化视图会继承基表NodeGroup创建(检查各个基表是否在同一个NodeGroup,并基于这个NodeGroup进行创建)。物化视图中不支持带Stream计划,多表join连接计划以及subquery计划。不支持WITH子句、GR - [使用](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0010.md): 创建增量物化视图CREATE INCREMENTAL MATERIALIZED VIEW view_name AS query;全量刷新物化视图REFRESH MATERIALIZED VIEW view_name;增量刷新物化视图REFRESH INCREMENTAL MATERIALIZED VIEW view_name;删除物化视图 - [密态等值查询概述](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0012.md): 随着企业数据上云,数据的安全隐私保护面临越来越严重的挑战。密态数据库将解决数据整个生命周期中的隐私保护问题,涵盖网络传输、数据存储以及数据运行状态;更进一步,密态数据库可以实现云化场景下的数据隐私权限分离,即实现数据拥有者和实际数据管理者的数据读取能力分离。密态等值查询将优先解决密文数据的等值类查询问题。全密态数据库使用多级加密模型,加密 - [使用gsql操作密态数据库](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0013.md): 执行本节的SQL语句前,请确保已提前生成主密钥,并确认访问主密钥的参数。本节以完整的执行流程为例,介绍如何使用密态数据库语法,包括三个阶段:使用DDL阶段、使用DML阶段、清理阶段。注意:从keyType字符串开始,不要添加换行,不要添加空格,否则gsql工具无法识别完整参数。华为云支持两种认证方式,两种认证方式的参数个数与参数类型不同, - [使用JDBC操作密态数据库](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0014.md): 获取JDBC驱动包,JDBC驱动获取及使用可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发”及”应用程序开发教程 > 兼容性参考 > JDBC兼容性包”章节。密态数据库支持的JDBC驱动包为gsjdbc4.jar、opengaussjdbc.jar、gscejdbc.jar。gscejdbc.jar(目前仅支持EulerOS操 - [前向兼容与安全增强](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0015.md): 在上文中,支持通过key_info设置访问外部密钥管理的参数:使用gsql时,通过元命令\key_info xxx设置。使用JDBC时,通过连接参数conn.setProperty(“key_info”, “xxx”)设置。为保持前向兼容,还支持通过环境变量等方式设置访问主密钥的参数。第一次配置使用密态数据库时,可忽略下述方法。如果以前使 - [密态支持函数/存储过程](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0016.md): 密态支持函数/存储过程,当前版本只支持sql和plpgsql两种语言。由于密态支持存储过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。函数/存储过程语法参考《开发指南》中“用户自定义函数”章节和“存储过程”章节。密态等值查询支持函数存储过程新增系统表gs_encrypted_proc,用于存储参数返回的原始数据类型 - [透明数据加密](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0019.md): 透明加密提供表级数据加密存储功能。当用户使用本特性提供的语法创建加密表后,数据库向磁盘写入加密表数据前,会自动将其加密;同时,数据库从磁盘读取加密表数据后,会自动将其解密。向加密表中进行数据插入、更新、查询和删除等语法与非加密表一致。使用透明加密前需先开启透明加密功能。开启操作请参见《用户指南》中的“账号和网络安全 > GaussDB开启 - [账本数据库概述](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0021.md): 账本数据库融合了区块链思想,将用户操作记录至两种历史表:用户历史表和全局区块表中。当用户创建防篡改用户表时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息,同时在blockchain模式下会创建一张用户历史表来记录对应用户表中每条数据的变更行为;而用户对防篡改用户表的每一次修改行为将被记录到全局区块表中。由于历史表具有 - [查看账本历史操作记录](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0022.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。数据库各个CN节点全局区块表记录单独记录,全局区块表只能记录连接到当前CN执行的SQL操作。只有拥有AUDITADMIN属性的用户才可以查看账本历史操作记录。有关数据库用户及创建用户的 - [校验账本数据一致性](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0023.md): 数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。账本数据库校验功能目前提供两种校验接口,分别为:ledger_hist_check(text, text)和ledger_gchain_check(text, text)。普通用户调用校验接口,仅能校验自己有权限访问的表。校验防篡改用户 - [归档账本数据库](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0024.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。数据库已经正确配置审计文件的存储路径audit_directory。账本数据库归档功能目前提供两种校验接口,分别为:ledger_hist_archive(text, text)和le - [修复账本数据库](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0025.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。当前的账本数据库机制为:全局区块表存储在CN端,各个CN数据独立。用户历史表存储在DN端,历史表记录的数据为所在DN防篡改表的数据变化。因此,在触发数据重分布时,可能导致防篡改表和用户 - [逻辑解码概述](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0032.md): 逻辑解码为逻辑复制提供事务解码的基础能力,GaussDB可以使用SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。由于逻辑日志是以事务为单位的,在事务提交后才能输出,且逻辑解码是由用户驱动的。因此,为了防止事务开始时的Xlog被系统回收,或所需的事务信息被VACUUM回收,GaussDB - [逻辑解码选项](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0033.md): 逻辑解码选项可以用来为本次逻辑解码提供限制或额外功能,如“解码结果是否包含事务号”、“解码时是否忽略空事务”等。对于具体配置方法,SQL函数解码请参考《开发指南》中“SQL参考 > 函数和操作符 > 系统管理函数 > 逻辑复制函数”章节中函数pg_logical_slot_peek_changes的可选入参''options_name'和 - [使用SQL函数接口进行逻辑解码](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0034.md): GaussDB可以通过调用SQL函数,进行创建、删除、推进逻辑复制槽,获取解码后的事务日志。其中,user1为用户名,password为密码,gaussdb为需要连接的数据库名称,40000为数据库DN端口号,用户可根据实际情况替换。复制槽是建立在DN上的,因此需要通过DN端口连接数据库。逻辑解码选项请参见逻辑解码选项。 - [使用流式解码实现数据逻辑复制](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0035.md): 第三方复制工具通过流式逻辑解码从GaussDB抽取逻辑日志后到对端数据库回放。对于使用JDBC连接数据库的复制工具,具体代码请参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 示例:逻辑复制代码示例”章节。 - [大容量数据库背景介绍](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0038.md): 随着处理数据量的日益增长和使用场景的多样化,数据库越来越多地面对容量大、数据多样化的场景。在过去数据库业界发展的20多年时间里,数据量从最初的MB、GB级数据量逐渐发展到现在的TB级数据量,在如此数据大规模、数据多样化的客观背景下,数据库管理系统(DBMS)在数据查询、数据管理方面提出了更高的要求,客观上要求数据库能够支持多种优化查找策略 - [表分区技术](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0039.md): 表分区技术(Table-Partitioning)通过将非常大的表或者索引从逻辑上切分为更小、更易管理的逻辑单元(分区),能够让用户对表查询、变更等语句操作具备更小的影响范围,能够让用户通过分区键(Partition Key)快速定位到数据所在的分区,从而避免在数据库中对大表的全量扫描,能够在不同的分区上并发进行DDL、DML操作。从用户 - [数据分区查找优化](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0040.md): 分区表在数据查找方面的优势主要体现在对分区键进行谓词查询的场景。例如,考虑一张以月份(Month)作为分区键的表,如图1所示。如果使用普通表设计,查询时需要进行全表扫描(Full Table Scan)。而如果以月份为分区键重新设计该表,全表扫描会被优化为分区扫描。当表内数据量很大且历史周期较长时,通过减少扫描的数据量,性能提升将非常显著 - [数据分区运维管理](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0041.md): 数据生命周期管理(Data Life Cycle Management,DLM) 是一套贯穿数据全生命周期的管理流程与策略体系,其核心任务之一在于为不同阶段的数据匹配最适宜且经济高效的存储介质:高频访问的新数据存放于读写速度快、可用性高的存储层,而低频访问的旧数据则迁移至成本较低、性能稍弱的存储层。鉴于旧数据更新频率低,将其压缩并转为只读 - [分区表(母表)](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0044.md): 分区表作为用户实际操作的表对象,支持常规DML(数据操作语言)的增、删、查、改操作。通常通过在建表DDL(数据定义语言)语句中显式使用PARTITION BY子句进行定义。创建成功以后在pg_class表中新增一条记录,其parttype字段值为'p'(标识一级分区)或's'(标识二级分区),以此标记该记录对应的表为分区母表。需要注意的是 - [分区(分区子表)](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0045.md): 分区是分区表中实际保存数据的表,对应的记录通常保存在pg_partition中,各个一级分区的parentid字段作为外键,与其分区母表所在的pg_class表中的OID(对象标识符)列建立关联关系。示例:t1_hash为一个分区表: - [分区键](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0046.md): 分区键由一个或多个列组成,分区键值结合对应分区策略能够唯一确定某一元组所在的分区,通常在建表时通过PARTITION BY语句指定:范围分区表和列表分区表支持最多16列分区键,其他分区表只支持1列分区键。 - [范围分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0048.md): 范围分区(Range Partition)依据所设定的每个分区的分区键值范围,来实现数据到各个分区的映射。在实际的生产系统里,范围分区是很常用的一种分区类型,通常在以时间维度(Date、Time Stamp)描述数据场景中使用。范围分区有两种语法格式,示例如下:VALUES LESS THAN的语法格式对于从句是VALUE LESS TH - [哈希分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0049.md): 哈希分区(Hash Partition)是依据GaussDB内置的哈希算法,对分区键进行运算,从而实现数据到各分区的映射。在分区键取值范围不倾斜(no data skew)的场景下,哈希算法哈希算法能够让数据行在各个分区之间均匀分布,进而使得各分区的大小大致保持一致,是实现分区间数据均匀分布的理想方法。哈希分区也是范围分区的一种易于使用的 - [列表分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0050.md): 列表分区(List Partition)允许用户在每个分区的描述里,为分区键指定离散值列表,从而控制数据行如何被映射到各个分区。这种分区方式的优势在于,它能以枚举分区值的形式对数据进行分区操作,尤其适合对无序且不相关的数据集进行分组与组织。在处理分区键值时,若某些值未被定义在列表之中,用户可以借助默认分区(DEFAULT)来存储这些数据。 - [分区表对导入操作的性能影响](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0051.md): 在GaussDB中,相较于非分区表,分区表在数据插入处理流程中额外增加了分区路由环节的开销。所以从整体来看,分区表场景下的数据插入开销主要由两部分构成:(1)heap-insert基表插入:此部分负责解决元组(tuple)存入对应堆表(heap 表)的问题,并且这一操作在普通表和分区表中是通用的;(2)partition-routing分 - [创建分区表](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0053.md): SQL语言具备强大且灵活多样的功能,其语法树往往较为复杂,分区表亦是如此。分区表的创建可视为在原有非分区表的基础上增添表分区属性。所以,分区表的语法接口可看作是对原有非分区表CREATE TABLE语句的扩展,具体是增加了PARTITION BY语句部分,同时需指定与分区相关的三个核心元素:分区类型(partType):用于描述分区表所采 - [使用和管理分区表](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0054.md): 分区表支持大部分非分区表的相关功能,具体可以参考《开发指南》中常规表的各类操作语法相关资料。除此之外,分区表还支持大量的分区级操作命令,包括分区级DQL/DML(如SELECT、INSERT、UPDATE、DELETE、UPSERT、MERGE INTO)、分区级DDL(如ADD、DROP、TRUNCATE、EXCHANGE、SPLIT、 - [分区表DQL/DML](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0055.md): 由于分区的实现完全体现在数据库内核中,用户对分区表的DQL/DML与非分区表相比,在语法上没有任何区别。出于分区表的易用性考虑,GaussDB支持指定分区的DQL/DML操作,指定分区可以通过PARTITION (partname)或者PARTITION FOR (partvalue)来进行。对于二级分区,可以通过SUBPARTITION - [分区表静态剪枝](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0058.md): 对于检索条件中分区键上带有常数的分区表查询语句,在优化器阶段将对indexscan、bitmap indexscan、indexonlyscan等算子中包含的检索条件作为剪枝条件,完成分区的筛选。算子包含的检索条件中需要至少包含一个分区键字段,对于含有多个分区键的分区表,包含任意分区键子集即可。静态剪枝支持范围如下所示:支持分区类型:范围 - [PBE动态剪枝](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0060.md): PBE动态剪枝支持范围如下所示:支持分区类型:范围分区、哈希分区、列表分区。支持表达式类型:比较表达式(<,<=,=,>=,>)、逻辑表达式、数组表达式。支持隐式类型转换和函数:对于类型可以相互转换的场景和immutable函数可以支持PBE动态剪枝。支持分区类型:范围分区、哈希分区、列表分区。支持表达式类型:比较表达式(<,<=,=,> - [参数化路径动态剪枝](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0061.md): 参数化路径动态剪枝支持范围如下所示:支持分区类型:范围分区、哈希分区、列表分区。支持算子类型:indexscan、indexonlyscan、bitmapscan。支持表达式类型:比较表达式(<,<=,=,>=,>)、逻辑表达式。支持分区类型:范围分区、哈希分区、列表分区。支持算子类型:indexscan、indexonlyscan、bi - [分区索引](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0062.md): 分区表上的索引共有三种类型:Global Non-Partitioned IndexGlobal Partitioned IndexLocal Partitioned IndexGlobal Non-Partitioned IndexGlobal Partitioned IndexLocal Partitioned Index目前Gaus - [级联收集统计信息](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0064.md): 在ANALYZE | ANALYSE分区表时,系统会根据用户指定的或默认的PARTITION_MODE,自动收集分区表中所有符合语义的分区级统计信息,PARTITION_MODE的相关信息请参见《开发指南》中“SQL参考 > SQL语法 > ANALYZE | ANALYSE”中的PARTITION_MODE参数。当级联收集复制表、has - [分区级统计信息](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0065.md): 当前分区表支持指定单分区统计信息收集,已收集统计信息的分区会在再次收集时自动更新维护。该功能适用于列表分区、哈希分区和范围分区。优化器在处理分区表时,会优先采用指定分区的统计信息来进行查询优化。不过,若指定分区尚未收集统计信息,此时优化器会通过改写分区子句的方式开展剪枝优化工作,详情参见通过改写分区子句剪枝优化。当缺少分区级统计信息时,优 - [向范围分区表新增分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0068.md): 使用ALTER TABLE ADD PARTITION可以将分区添加到现有分区表的最后面,新增分区的上界值必须大于当前最后一个分区的上界值。例如,对范围分区表range_sales新增一个分区。ALTER TABLE range_sales ADD PARTITION date_202005 VALUES LESS THAN ('2020 - [向列表分区表新增分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0069.md): 使用ALTER TABLE ADD PARTITION可以在列表分区表中新增分区,新增分区的枚举值不能与已有的任一个分区的枚举值重复。例如,对列表分区表list_sales新增一个分区。ALTER TABLE list_sales ADD PARTITION channel5 VALUES ('X') TABLESPACE tb1;当列表 - [删除分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0070.md): 用户可以使用删除分区的命令来移除不需要的分区。删除分区可以通过指定分区名或者分区值来进行。删除分区不能作用于HASH分区上。执行删除分区命令会使得Global索引失效,可以通过UPDATE GLOBAL INDEX子句来同步更新Global索引,或者用户自行重建Global索引。删除分区时,如果该分区上带有仅属于当前分区的分类索引时,则会 - [交换分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0071.md): 用户可以使用交换分区的命令来将分区与普通表的数据进行交换。交换分区可以快速将数据导入/导出分区表,实现数据高效加载的目的。在业务迁移的场景,使用交换分区比常规导入会快很多。交换分区可以通过指定分区名或者分区值来进行。执行交换分区命令会使得Global索引失效,可以通过UPDATE GLOBAL INDEX子句来同步更新Global索引,或 - [清空分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0072.md): 用户可以使用清空分区的命令来快速清空分区的数据。与删除分区功能类似,区别在于清空分区只会删除分区中的数据,分区的定义和物理文件都会保留。清空分区可以通过指定分区名或者分区值来进行。执行清空分区命令会使得Global索引失效,可以通过UPDATE GLOBAL INDEX子句来同步更新Global索引,或者用户自行重建Global索引。使用 - [对范围分区表分割分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0074.md): 使用ALTER TABLE SPLIT PARTITION可以对范围分区表分割分区。例如,假设范围分区表range_sales的分区date_202001定义范围为['2020-01-01', '2020-02-01')。可以指定分割点'2020-01-16'将分区date_202001分割为两个分区,并更新Global索引。ALTER - [对列表分区表分割分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0075.md): 使用ALTER TABLE SPLIT PARTITION可以对列表分区表分割分区。例如,假设列表分区表list_sales的分区channel2定义范围为('6', '7', '8', '9')。可以指定分割点('6', '7')将分区channel2分割为两个分区,并更新Global索引。ALTER TABLE list_sales - [合并分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0076.md): 用户可以使用合并分区的命令来将多个分区合并为一个分区。合并分区只能通过指定分区名来进行,不支持指定分区值的写法。合并分区不能作用于哈希分区上。执行合并分区命令会使得Global索引失效,可以通过UPDATE GLOBAL INDEX子句来同步更新Global索引,或者用户自行重建Global索引。合并前的分区如果包含分类索引则不支持合并。 - [移动分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0077.md): 用户可以使用移动分区的命令来将一个分区移动到新的表空间中。移动分区可以通过指定分区名或者分区值来进行。使用ALTER TABLE MOVE PARTITION可以对分区表移动分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001移动到表空间tb1中。ALTER TABLE range_sales MOVE - [对分区表重命名分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0079.md): 使用ALTER TABLE RENAME PARTITION可以对分区表重命名分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001重命名。ALTER TABLE range_sales RENAME PARTITION date_202001 TO date_202001_new;或者,通过指定分区值将 - [对Local索引重命名索引分区](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0080.md): 使用ALTER INDEX RENAME PARTITION可以对Local索引重命名索引分区。具体方法与一级分区表重命名分区相同。 - [分区表行迁移](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0081.md): 用户可以使用ALTER TABLE ENABLE/DISABLE ROW MOVEMENT来开启/关闭分区表行迁移。开启行迁移时,允许通过更新操作将一个分区中的数据迁移到另一个分区中;关闭行迁移时,如果出现这种更新行为,则业务报错。如果业务明确不允许对分区键所在列进行更新操作,建议关闭分区表行迁移。例如,创建列表分区表,并开启分区表行迁移 - [索引重建/不可用](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0083.md): 使用ALTER INDEX可以设置索引是否可用。例如,假设分区表range_ sales上存在索引range_sales_idx,可以通过如下命令设置其不可用。ALTER INDEX range_sales_idx UNUSABLE;可以通过如下命令重建索引range_sales_idx。ALTER INDEX range_sales_i - [Local索引分区重建/不可用](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0084.md): 使用ALTER INDEX PARTITION可以设置Local索引分区是否可用。使用ALTER TABLE MODIFY PARTITION可以设置分区表上指定分区的所有索引分区是否可用。例如,假设分区表range_sales上存在两张Local索引range_sales_idx1和range_sales_idx2,假设其在分区date - [分区表相关系统视图](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0086.md): 分区表系统视图根据权限分为3类,具体字段信息请参考《开发指南》中“系统表和系统视图 > 系统视图”章节。所有分区视图:ADM_PART_TABLES:所有分区表信息。ADM_TAB_PARTITIONS:所有分区信息。ADM_PART_INDEXES:所有Local索引信息。ADM_IND_PARTITIONS:所有索引分区信息。当前用户 - [分区表相关内置工具函数](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0087.md): 前置建表:CREATE TABLE test_range_pt (a INT, b INT, c INT) PARTITION BY RANGE (a) ( PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN (3000), par - [静态编译架构](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0091.md): 从整个数据库服务的组成构架来看,存储引擎向上对接SQL引擎,为SQL引擎提供或接收标准化的数据格式(元组或向量数组);存储引擎向下对接存储介质,按照特定的数据组织方式,以页面、压缩单元(Compress Unit)或其他形式为单位,通过存储介质提供的特定接口,对存储介质中的数据完成读写操作。GaussDB通过静态编译使数据库专业人员可以为 - [通用数据库服务层](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0092.md): 从技术角度来看,存储引擎需要一些基础架构组件,主要包括:并发:不同存储引擎选择正确的锁可以减少开销,从而提高整体性能。此外提供多版本并发控制或“快照”读取等功能。事务:均需满足ACID的要求,提供事务状态查询等功能。内存缓存:不同存储引擎在访问索引和数据时一般会对其进行缓存。缓存池允许直接从内存中处理经常使用的数据,从而加快了处理速度。检 - [设置存储引擎](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0093.md): 存储引擎会对数据库整体效率和性能具有巨大影响,请根据实际需求选择适当的存储引擎。用户可使用WITH ( [ORIENTATION | STORAGE_TYPE] [= value] [, ... ] )为表或索引指定一个可选的存储参数。参数的详细描述如下所示:如果ORIENTATION指定为ROW,且STORAGE_TYPE为空的情况下创 - [GaussDB内核505版本](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0095.md): - Ustore支持柔性字段高效存储。- Ustore支持Toast规模商用。- Ustore增加页面恢复与逃生技术。- Ustore支持SMP技术。 - [GaussDB内核503版本](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0096.md): - Ustore适配分布式/并行查询/Global Temp Table/Vacuum full/列约束DEFERRABLE以及INITIALLY DEFERRED。- Ustore增加在线重建索引。- Ustore增加增强版本B-tree空页面估算,提升优化器代价估算准确度。- Ustore增加存储引擎可靠性验证框架,Diagnose - [GaussDB内核R2版本](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0097.md): - Ustore增加新的基于原位更新的行存储引擎Ustore,首次实现新旧版本的记录的分离存储。- Ustore增加回滚段模块。- Ustore增加回滚过程,支持同步/异步/页内模式。- Ustore增加支持事务的增强版本B-tree。- Astore增加闪回功能,支持闪回表/闪回查询/闪回Drop/闪回Truncate。- Ustore - [Astore简介](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0099.md): Astore与Ustore的多版本实现最大的区别在于最新版本和历史版本是否分离存储。Astore不进行分离存储,而Ustore当前也只是分离了数据,索引本身没有分开。Astore没有回滚段,而Ustore有回滚段。对于Ustore来说,回滚段是非常重要的,回滚段损坏会导致数据丢失甚至数据库无法启动的严重问题,且Ustore恢复时同步需要R - [特性约束](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0103.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [存储规格](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0104.md): 数据表最大列数不能超过1600列。init_td(TD(Transaction Directory,事务目录)是Ustore表独有的用于存储页面事务信息的结构,TD的数量决定该页面支持的最大并发数。在创建表或索引时可以指定初始的TD大小init_td)取值范围[2, 128],默认值4。单页面支持的最大并发不超过128个。Ustore表( - [使用Ustore进行测试](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0105.md): 创建Ustore表使用CREATE TABLE语句创建Ustore表。删除Ustore表为Ustore表创建索引Ustore当前仅支持BTree类型的多版本索引。在一些场景中,为了区别于Astore的BTree索引,也会将Ustore表的多版本BTree索引称为UBTree(Ustore BTree,UBTree介绍详见UBTree章节) - [怎么配置init_td大小](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0107.md): TD(Transaction Directory,事务目录)是Ustore表独有的用于存储页面事务信息的结构,TD的数量决定该页面支持的最大并发数。在创建表或索引时可以指定初始的TD大小init_td,默认值为4,即同时支持4个并发事务修改该页面,最大值为128。用户需要结合业务并发度分析是否需要手动配置init_td。另外也可以结合业务 - [怎么配置fillfactor大小](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0108.md): fillfactor是用于描述页面填充率的参数,该参数与页面能存放的元组数量、大小以及表的物理空间直接相关。Ustore表的默认页面填充率为92%,预留的8%空间用于更新的扩展,也可以用于TD列表的扩展空间。fillfactor的配置和详细描述参见《开发指南》的“SQL参考 > SQL语法 > CREATE TABLE”章节。用户需要结合 - [在线校验功能](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0109.md): 在线校验是Ustore特有的,在运行过程中可以有效预防页面因编码逻辑错误导致的逻辑损坏,默认开启UPAGE:UBTREE:UNDO三个模块校验。业务现网请保持开启,性能场景除外。关闭:打开: - [怎么配置回滚段大小](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0110.md): 一般情况下回滚段大小的参数使用默认值即可。为了达到最佳性能,部分场景下可调整回滚段大小的相关参数。具体场景与设置方法如下:保留给定时间内的历史版本数据。当使用闪回或者支撑问题定位时,通常希望保留更多历史版本数据,此时需要修改undo_retention_time。undo_retention_time默认值是0,取值范围为 0~3天,输入 - [RCR Uheap多版本管理](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0113.md): Ustore对其使用的heap做了如下重要的增强,简称Uheap。Ustore RCR(Row Consistency Read)的多版本管理是基于数据行的行级多版本管理。不过Ustore将XID记录在了页面的TD(Transaction Directory)区域区别于常见的将XID存储在数据行上,节省了页面空间。事务修改记录时,会将历史 - [RCR Uheap可见性机制](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0114.md): Ustore可见性判断是通过构建数据行的一致性版本获得的,老快照可通过Undo记录获取历史版本。举例如下:图中描述了三种使用MVCC快照查询的场景,其中Reader为查询线程,持有csn = 300的快照,需要查询某行数据的可见版本:该行数据指向的td槽位记录事务xid已经提交,并且td csn < 快照csn,说明td xid对快照可见 - [RCR Uheap空闲空间管理](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0115.md): Ustore使用Free Space Map(FSM)文件记录了每个数据页的潜在空闲空间,并且以树的结构组织起来。每当用户想要对某个表执行插入操作或者是非原位更新操作时,就会从该表对应的FSM中进行快速查找,查看当前FSM上记录的最大空闲空间是否可以满足插入所需的空间要求;如果满足则返回对应的blocknum用于执行插入操作,否则执行拓展 - [RCR UBTree](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0117.md): RCR(Row Consistency Read) btree 的多版本管理是基于数据行的行级多版本管理。将XID记录在了数据行上,会增加Key的大小,索引会有5-20%左右的膨胀。最新版本和历史版本均在btree上,索引没有记录Undo信息。插入或者删除key时按照key + TID的顺序排列,索引列相同的元组按照对应元组的TID作为第 - [PCR UBTree](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0122.md): 相比于RCR版本的UBTree,PCR版本的UBTree有以下特点。索引元组的事务信息统一由TD槽进行管理。增加了Undo操作,插入和删除前需要先写入Undo,事务abort时需要进行回滚操作。支持闪回。索引元组的事务信息统一由TD槽进行管理。增加了Undo操作,插入和删除前需要先写入Undo,事务abort时需要进行回滚操作。支持闪回。 - [回滚段管理](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0128.md): 每个undo zone除了管理部分transaction page(用于存储事务回滚的元数据)外,还管理undo page。Undo页面中存储undo row,对数据的修改会将历史版本记录到Undo中。Undo记录也是数据,因此对Undo页面的修改同样会记录Redo。 - [文件组织结构](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0129.md): 如需查询当前回滚段使用的存储方式是页式或段页式,可以查询系统表。当前仅支持页式。示例:当回滚段使用的存储方式为页式:txn page所在文件组织结构:$node_dir/undo/{permanent|unlogged|temp}/$undo_zone_id.meta.$segnoundo row所在文件组织结构:$node_dir/un - [空间管理](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0130.md): Undo子系统依赖后台回收线程进行空闲空间回收。负责主机上Undo模块的空间回收,备机通过回放xLog进行回收。回收线程遍历使用中的undo zone,对该zone中的txn page扫描,依据xid从小到大的顺序进行遍历。回收已提交或者已回滚完成的事务,且该事务的提交时间应早于$(current_time-undo_retention_ - [概述](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0132.md): Enhanced Toast是一种用于处理超大字段的技术。首先,减少了Toast Pointer中的冗余信息,存储支持单表超长字段列数超过500列。其次,优化了主表与线外存储表之间的映射关系,无需通过pg_toast_index来存储主表数据与线外存储表数据的关系,降低了用户存储空间。最后,Enhanced Toast技术通过让分割数据自 - [Enhanced Toast存储结构](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0133.md): Enhanced Toast技术使用自链接的方式来处理元组间的依赖关系。线外存储表把超长数据按照2K分割成链表块,主表的Toast Pointer指向线外存储表的对应数据链表头。这样极大简化了主表与线外存储表间的映射关系,有效的提升了数据写入与查询的性能。 - [Enhanced Toast使用](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0134.md): 新增的GUC参数enable_enhance_toast_table用于控制线外存储结构。“enable_enhance_toast_table=on”表示使用Enhanced Toast线外存储表。“enable_enhance_toast_table=off”表示使用Toast线外存储表。“enable_enhance_toast_t - [Enhanced Toast增删改查](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0135.md): Insert操作:触发Enhanced Toast的写入条件保持与原有Toast一致,除了数据写入时增加了数据间的链接信息之外,插入基本逻辑保持不变。Delete操作:Enhanced Toast的数据删除流程不再依赖Toast数据索引,仅依靠数据间的链接信息将对应的数据进行遍历删除。Update操作:Enhanced Toast的更新流 - [Enhanced Toast相关DDL操作](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0136.md): Enhanced Toast表的创建建表时指定Toast表的存储类型为Enhanced Toast或者Toast:建表时不指定线外存储表的类型,则创建线外存储表类型依赖于GUC参数enable_enhance_toast_table:线外存储表结构的升级当GUC参数“enable_enhance_toast_table=on”时,线外存储 - [Enhanced Toast运维管理](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0137.md): 通过gs_parse_page_bypath解析主表中的ToastPointer信息。解析文件1663_13113_17603_0.page中存储了ToastPointer的相关信息,具体如下:Enhanced Toast数据查询,通过直接查询到的Enhanced Toast表数据可以判断其链式结构的完整性。 - [事务提交](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0139.md): 针对隐式事务和显式事务,其提交策略如下所示:隐式事务。单条DML/DDL语句自动触发隐式事务,这种事务没有显式的事务块控制语句(START TRANSACTION/BEGIN/COMMIT/END),DML语句结束后自动提交。显式事务。显式事务由显式的START TRANSACTION/BEGIN语句控制事务的开始,由COMMIT/END - [事务回滚](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0140.md): 回滚是在事务运行的过程中发生了故障等异常情形下,事务不能继续执行,系统需要将事务中已完成的修改操作进行撤销。Astore、Ubtree没有回滚段,自然没有这个专门的回滚动作。Ustore为了性能考虑,它的回滚流程结合了同步、异步和页面级回滚等3种形式。同步回滚有三种情况会触发事务的同步回滚:事务块中的ROLLBACK关键字会触发同步回滚。 - [闪回查询](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0142.md): 闪回查询可以查询过去某个时间点表的某个snapshot数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于MVCC多版本机制,通过检索查询旧版本,获取指定老版本数据。整体方案分为三部分:旧版本保留、快照的维护和旧版本检索。旧版本保留:新增undo_retention_time配置参数,用来设置旧版本保留的时间,超过该时 - [闪回表](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0143.md): 闪回表可以将表恢复至特定时间点,当逻辑损坏仅限于一个或一组表,而不是整个数据库时,此特性可以快速恢复表的数据。闪回表基于MVCC多版本机制,通过删除指定时间点和该时间点之后的增量数据,并找回指定时间点和当前时间点删除的数据,实现表级数据还原。整体方案分为三部分:旧版本保留、快照的维护和旧版本检索。旧版本保留:新增undo_retentio - [闪回DROP/TRUNCATE](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0144.md): 闪回DROP:可以恢复意外删除的表,从回收站(recyclebin)中恢复被删除的表及其附属结构如索引、表约束等。闪回drop是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已drop表的恢复。闪回TRUNCATE:可以恢复误操作或意外被进行truncate的表,从回收站中恢复被truncate的表及索引的物理数据。闪回trun - [常用视图工具](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0145.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [长事务阻塞Undo空间回收](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0148.md): gs_log中打印如下错误:snapshot too old! the undo record has been forcibly discardedxid xxx, the undo size xxx of the transaction exceeds the threshold xxx. trans_undo_threshold_s - [大量回滚事务拖慢Undo空间回收](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0149.md): 使用gs_async_rollback_xact_status视图查看有大量的待回滚事务,且待回滚的事务数量维持不变或者持续增高。调大异步回滚线程数量,调整方式有以下两种:方式1:在gaussdb.conf中配置max_undo_workers,然后重启节点。方式2:gs_guc reload -Z NODE-TYPE [-N NODE- - [storage test error](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0150.md): 业务执行过程中,数据页、索引或者Undo页面发生变更后,该页面放锁之前会主动进行逻辑损坏检测,发现页面损坏问题后会输出包含“storage test error”关键字的日志信息到数据库运行日志(gs_log文件),执行事务回滚,页面会恢复到修改前的状态。gs_log中打印“storage test error”关键字。请联系华为技术工程 - [备机读业务报错:"UBTreeSearch::read_page has conflict with recovery, please try again later"](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0151.md): 业务在使用备机读时,出现报错(错误码43244),错误信息中包含“UBTreeSearch::read_page has conflict with recovery, please try again later”关键字。在开启并行回放或串行回放的情况下(查询GUC参数recovery_parse_workers和recovery_ma - [特性简介](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0153.md): OLTP表压缩是GaussDB高级压缩中的一个特性。OLTP表压缩支持通用的压缩算法,根据客户自定义的冷热分离规则,选择性地压缩业务中访问频率较低的数据行,以对业务侵入最小的方式实现容量控制。 - [特性约束](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0154.md): 不支持系统表、内存表、全局临时表、本地临时表和序列表,不支持Ustore段页式表,不支持unlogged表,不支持压缩toast数据。仅在ORA兼容模式、PG模式以及B兼容模式下有效。Ustore不支持编解码,压缩率低于Astore。普通表开启压缩时,扩容空间预留需按照解压后的大小评估。扩容期间不支持压缩调度。扩容前请确认当前是否有正在执 - [特性规格](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0155.md): TPCC只开启策略、不开调度对原有业务无影响。TPCC不开启压缩策略对原有业务无影响。TPCC.bmsql_order_line设置ILM策略(只识别完成派送的订单为冷行)不调度,TPmC劣化不高于2%(56核CPU370GB内存+3TB SSD硬盘,350GB SharedBuffer)。TPCC.bmsql_order_line设置I - [使用说明](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0156.md): 检查当前数据库的public schema中是否存在gsilmpolicy_seq和gsilmtask_seq。或者:生成异常会报warning:新建带策略的表:gaussdb=#CREATE TABLE ilm_table_1 (col1 int, col2 text) ilm add policy row store comp - [维护窗口参数配置](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0157.md): RETENTION_TIME:评估与压缩记录的保留时长,单位天,默认值30。用户可根据自己存储容量自行调节。EXECUTION_INTERVAL:评估任务的执行频率,单位分钟,默认值15。用户可根据自己维护窗口期间业务与资源情况调节。该参数与ABS_JOBLIMIT相互影响。单日单线程最大可产生的I/O为WIND_DURATION/EXE - [运维命令参考](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0158.md): 手动触发一次压缩(示例中一次压缩102400MB)。给表加上冷热分离策略:gaussdb=# DROP TABLE IF EXISTS ILM_TABLE; gaussdb=# CREATE TABLE ILM_TABLE(a int); gaussdb=#ALTER TABLE ILM_TABLE ILM ADD POLICY ROW - [file_fdw](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0241.md): file_fdw模块提供了外部数据封装器file_fdw, 可以用来在服务器的文件系统中访问数据文件。数据文件必须是COPY FROM可读的格式,具体请参见《开发指南》中“SQL参考 > SQL语法 > COPY”章节。使用file_fdw访问的数据文件是当前可读的,不支持对该数据文件的写入操作。当前GaussDB会默认编译file_fd - [逻辑解码支持DDL](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0258.md): GaussDB主机上正常执行DDL语句,通过逻辑解码工具可以获取到DDL语句。数据库在执行DML的时候,存储引擎会生成对应的DML日志,用于进行恢复,对这些DML日志进行解码,即可还原对应的DML语句,生成逻辑日志。而对于DDL语句,数据库并不记录DDL原语句的日志,而是记录DDL语句涉及的系统表的DML日志。DDL种类多样、语法复杂,逻 - [逻辑解码数据找回功能](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0259.md): 逻辑解码对外提供单节点DML数据找回能力,从WAL日志是否归档的角度分为在线日志找回和归档日志找回:在线数据找回:使用pg_logical_get_area_changes函数,可以在线找回相关DML数据,具体使用参考pg_logical_get_area_changes函数的使用方法。归档数据找回:OM_Agent通过pg_logica - [非SMP场景下的Partition-wise Join](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0261.md): 在非SMP场景下,Partition-wise Join的路径是基于规则生成的,即只要符合条件,即可生成Partition-wise Join路径,而无需对比路径代价。其开关为GUC参数enable_partitionwise。非SMP场景下的Partition-wise Join的使用规格:只支持一级RANGE分区。支持Hash Joi - [SMP场景下的Full Partition-wise Join](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0262.md): SMP场景下的Partition-wise Join计划是基于代价选择的,在路径生成的过程中,会对比Partition-wise Join和非Partition-wise Join路径的估算代价,选择代价较低的路径。其开关参数为GUC参数enable_smp_partitionwise。Full Partition-wise Join是指 - [长查询执行期间大量并发更新偶现写入性能下降](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0263.md): 执行全表扫描类型的长查询,扫描期间页面发生大量并发更新,部分DML写入性能较没有长查询时出现性能下降。对于全表扫描场景下的长查询(例如持续两小时以上),在扫描到某个页面前,该页面发生大量集中并发更新(例如十万次以上更新),后续扫描到该页面时,需要访问大量历史版本获取可见元组(MVCC机制),由于单页扫描期间持有页面读锁,若此时刚好需要写入 - [hashbucket](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0266.md): 语法详情请参见《开发指南》中“SQL参考 > SQL语法 > A > ALTER DATABASE”章节中相关描述。 - [动态数据脱敏](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0267.md): 数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据 - [常规锁设计](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0269.md): 分区表通过表锁+分区锁两重设计,在表和分区上分别施加8个不同级别的常规锁,来保证DQL、DML、DDL并发过程中的合理行为控制。下表给出了不同级别锁的相容行为,标记为√的两种常规锁互不阻塞,可以并行。分区表的不同业务最终都是作用于目标分区上,数据库会给分区表和目标分区施加不同级别的表锁+分区锁,来控制并发行为。表2给出了不同业务的锁粒度控 - [DQL/DML-DQL/DML并发](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0270.md): DQL/DML操作会给表和分区施加1~3级别的常规锁。DQL/DML操作自身互不阻塞,支持DQL/DML-DQL/DML并发。 - [DQL/DML-DDL并发](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0271.md): 表级DDL,以及SPLIT/MERGE这两种分区DDL会给分区表施加8级锁,阻塞该分区表全部的DQL/DML操作。ADD、DROP、EXCHANGE、TRUNCATE、MOVE、RENAME这六种分区级DDL会给分区表施加4级锁,并给目标分区施加8级锁。当DQL/DML与DDL作用不同分区时,支持二者执行层面的并发;当DQL/DML与DD - [rangebucket](https://support.huaweicloud.com/fg-gaussdb-dist-v8/gaussdb-18-0272.md): 语法详情请参见《开发指南》中“SQL参考 > SQL语法 > C > CREATE SLICEGROUP”章节。rangebucket使用示例:--创建表 准备数据 CREATE SLICEGROUP sg1 distribute by range(int) ( slice s1 values less than (5) DATANO ## 快速入门 - [GaussDB入门实践](https://support.huaweicloud.com/qs-gaussdb/gaussdb_01_094.md): 当用户购买并连接到GaussDB数据库实例后,可以根据自身的业务需求使用GaussDB提供的一系列常用实践。 - [购买并通过界面化工具DAS连接GaussDB实例(推荐)](https://support.huaweicloud.com/qs-gaussdb/gaussdb_01_622.md): 数据管理服务(Data Admin Service,简称DAS)是一款专业的简化数据库管理工具,提供优质的可视化操作界面,大幅提高工作效率,让数据管理变得既安全又简单。您可以通过数据管理服务连接并管理实例。本章节介绍在管理控制台购买GaussDB实例后,如何使用DAS连接GaussDB实例。更多连接实例方式请参见连接GaussDB实例。注 - [购买并通过gsql连接GaussDB实例](https://support.huaweicloud.com/qs-gaussdb/gaussdb_01_623.md): gsql是GaussDB自带的客户端工具。使用gsql连接数据库,可以交互式地输入、编辑、执行SQL语句。本章介绍在管理控制台购买GaussDB实例后,如何使用gsql客户端连接GaussDB实例。更多连接实例方式请参见连接GaussDB实例。注册华为账号并开通华为云。完成实名认证。个人账号:实名认证企业账号:实名认证个人账号:实名认证企 ## 开发指南(集中式_V2.0-10.x) - [两地三中心跨Region容灾计划内倒换switchover流程异常](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-09-0105.md): 现象一:计划内switchover中主数据库实例执行命令返回如下错误,提示主数据库实例产生一致性点失败。现象二:计划内switchover中主数据库实例执行命令返回如下错误,提示主数据库实例业务截断出现失败。现象三:计划内switchover中灾备数据库实例执行命令返回如下错误,提示灾备数据库实例核查数据一致性点出现超时。现象四:计划内s - [容灾演练介绍](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0486.md): 使用计划内倒换switchover功能可实现容灾演练。该操作可实现主备数据库实例角色互换,原灾备数据库实例升主对外提供服务,原主数据库实例降备。该功能执行过程保证无数据丢失,即RPO=0。 - [前置检查项](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0487.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [执行切换](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0488.md): 满足前置检查条件,通过以下接口执行切换:OM Agent URI /v1/om/agent/mgr/cluster/streaming_disaster_recovery_switchover执行主备切换。 - [容灾演练后置检查](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0489.md): 容灾数据库实例执行完容灾switchover后,通过 OM Agent URI /v1/om/agent/mgr/cluster/dr_cluster_postcheck检查数据库实例状态,数据库实例类型,容灾状态等信息,并上报未参与容灾切换或者容灾升主的实例ID等。相关信息用于接口调用方核查流程执行结果,决策修复策略。接口返回结果示例: - [组件异常](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0491.md): 未参与容灾切换的实例ID使用后置检查接口上报后,可以使用节点修复接口POST /v1/om/agent/mgr/cluster/repair进行修复。修复场景: - [数据库实例异常](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0492.md): 容灾主备数据库实例switchover切换时,由于异地网络异常、数据库实例组件异常等原因导致切换异常失败,可通过数据库实例修复接口POST /v1/om/agent/mgr/cluster/dr_cluster_manual_recovery恢复数据库实例为容灾主数据库实例或者灾备数据库实例。针对无主场景(两个灾备数据库实例),调用内核修 - [容灾演练介绍](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0527.md): 使用计划内主备数据库实例switchover切换功能可实现容灾演练。该操作可实现主备数据库实例角色互换,原灾备数据库实例升主对外提供服务,原主数据库实例降备。该功能执行过程保证无数据丢失,即RPO=0。 - [前置检查项](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0528.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [执行切换](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0529.md): 满足前置检查条件,通过以下接口执行切换:OM Agent URI /v1/om/agent/mgr/cluster/dorado_switch执行主备数据库实例计划内切换(。 - [容灾演练后置检查](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0530.md): 通过OM Agent URI /v1/om/agent/mgr/cluster/dr_cluster_postcheck执行容灾演练后置检查。后台执行后置检查参考:按主数据库实例:curl -H "Content-Type:application/json" -d '{"drMode": " dorado_cluster ", "drOp - [组件异常](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0532.md): 依据后置检查接口(参见容灾演练后置检查)的返回的以下值是否为空,针对异常组件进行修复:not_in_switchover_instance_ids:未参与主备倒换的组件实例ID。incorrect_params_instance_ids:参数配置错误的组件实例ID。节点修复接口:POST /v1/om/agent/mgr/cluster/ - [数据库实例异常](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0533.md): 容灾主备数据库实例switchover切换,由于异地网络异常、数据库实例组件异常等原因导致切换异常失败,可通过该接口恢复数据库实例为容灾主数据库实例或者灾备数据库实例。可使用“容灾切换异常场景数据库实例修复”接口进行修复。数据库实例修复接口:POST /v1/om/agent/mgr/cluster/dr_cluster_manual_r - [如何查询表和数据库容量?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0553.md): 答:使用查询函数pg_table_size()和pg_database_size()。 - [如何查询数据库活跃连接数?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0554.md): 答:设置参数track_activities为on,查询视图pg_stat_activity。 - [如何查看系统中正在运行的SELECT语句?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0555.md): 答:设置参数track_activities为on。当此参数取值为on时,数据库系统才会收集当前活动查询的运行信息。查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例: - [如何查看GaussDB客户端与服务端字符编码类型?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0558.md): 答:执行如下语句查看客户端字符串编码类型。执行如下语句查看服务端字符编码类型。 - [如何检查磁盘类型?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0562.md): 答:查看/sys/block/<磁盘名>/queue/rotational文件的数值。1代表旋转,表示磁盘是机械硬盘HDD,0代表非旋转,表示磁盘是固态硬盘SSD。 - [GaussDB支持哪些硬件平台?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0564.md): 答:GaussDB支持运行在以下硬件平台上:支持基于x86_64/ARM的通用PC服务器。支持本地存储(SATA、SAS、SSD、弹性云EVS服务)。支持千兆、万兆Ethernet网络。数据库运行环境通常需要确保网络时延稳定,且建议数据库低负载时(CPU小于 5%),时延50us~70us;数据库高负载时(CPU大于 90%),时延不超过 - [GaussDB支持哪些安全管理?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0565.md): 答:支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。GaussDB的Agent模式中,由于http协议没有数据加密,数据为明文传输存在安全隐患,故默认配置为https协议。 - [如何查看当前数据库的隔离级别?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0566.md): 答:事务的隔离级别共三种,分别为:READ COMMITTED:读已提交隔离级别,事务只能读已提交的数据而不会读未提交的数据,这是缺省值。REPEATABLE READ:事务可重复读隔离级别。Serializable:目前功能上不支持此隔离级别,等价于REPEATABLE READ。使用如下语句查看数据库隔离级别。 - [GaussDB易用性如何?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0568.md): 答:GaussDB提供了丰富的工具和API,方便客户进行二次开发和集成,也使得开发者可以轻松地使用它来进行数据存储和处理,同时它提供了简单易用的操作界面和管理工具,降低了客户的使用门槛和学习成本等。 - [如何使用SQL语句查看数据库的模式?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0573.md): 答:可以通过gs_deployment()系统函数查看当前数据库的部署形态,示例如下: - [如何通过SQL语言查询表、索引、视图的定义?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0576.md): 查询表定义:gaussdb=# SELECT * FROM pg_get_tabledef('table_name');查询索引定义:gaussdb=# SELECT oid FROM pg_class WHERE relname='index_name'; gaussdb=# SELECT * FROM pg_get_indexdef( - [如何查询数据库、表空间、表的大小?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0577.md): 查询数据库大小:gaussdb=# SELECT datname, pg_database_size(datname), pg_database_size(datname)/1024/1024/1024 as "dataSize_GB" FROM pg_database; datname | pg_databas - [动态脱敏策略如何生效?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0578.md): GaussDB的安全策略开关默认是off关闭状态,通常需要设置为on开启状态,使所有动态脱敏策略生效;除了安全总开关,各项脱敏策略也有对应的开关。只有开关开启,对应的脱敏策略才能生效。开启安全总开关。只设置单项脱敏策略。 - [如何设置账号的有效期?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0579.md): 答:在数据库使用过程中,会创建一些用户对数据库进行相关操作。创建用户时,需要限制用户的操作期限(即有效开始时间和有效结束时间),具体的设置方法如下:当显示CREATE ROLE信息时表示创建用户成功。当显示ALTER ROLE信息时表示重新设定成功。 - [如何在GaussDB当前事务中建立保存点及删除保存点?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0580.md): 答:保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。SAVEPOINT用于在当前事务里建立一个新的保存点。RELEASE SAVEPOINT删除一个当前事务先前定义的保存点。具体操作请参见如下示例: - [如何手动锁定和解锁用户?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0581.md): 答:在数据库使用过程中,如果管理员发现某账户存在非法访问等异常情况,可手动锁定该账户。当判断该账户恢复正常后,管理员可手动解锁该账户。以手动锁定和解锁用户jack为例:手动锁定用户。gaussdb=# ALTER USER jack ACCOUNT LOCK; ALTER ROLE手动解锁用户。gaussdb=# ALTER USER - [通过客户端无法连接数据库的原因有哪些?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0582.md): 答:在使用数据库时,经常会通过客户端去连接数据库,只有正确地连接数据库,才能在数据库进行相关的操作,那么在使用数据库过程中遇到无法连接数据库的情况,常见的原因有以下几点:系统连接数据库数量超过了最大连接数量。用户不具备访问该数据库的权限。当前客户端IP信息没有配置进数据库服务器的pg_hba.conf文件中。网络连接故障。 - [GaussDB如何开启审计策略,支持哪些内容的审计?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0584.md): 答:审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。开启审计总开关。--设置g - [GaussDB支持哪些客户端接入认证方式?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0586.md): 答:GaussDB支持三种认证方式:基于主机的认证:服务器端根据客户端的IP地址、用户名及要访问的数据库查看配置文件,从而判断用户是否通过认证。口令认证:包括远程连接的加密口令认证和本地连接的非加密口令认证。SSL加密:使用OpenSSL(开源安全通信库)提供服务器端和客户端安全连接的环境。基于主机的认证:服务器端根据客户端的IP地址、用 - [如何查看某个用户有哪些表的权限?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0587.md): 答:可使用information_schema.table_privileges系统视图查看。系统视图information_schema.table_privileges字段如表1所示。 - [GaussDB如何开启三权分立?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0588.md): 答:在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立,将系统管理员的用户管理和审计管理的权限分给安全管理员和审计管理员。设置参数enableSeparationOfDuty为on,则会开启三权分立,限制系统管理员的权限,不允许系统管理员创建或更改用户配置。同时,建议关闭GUC参数enable_copy_s - [如何查询活跃元组、脏元组、脏元组比例?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0591.md): 答:查询方法如下:脏元组可作为判断表膨胀程度的指标,高比例的占比可能会导致表的膨胀,需要及时回收空间,避免影响数据库的性能。具体请参见《参考》中“SQL参考 > SQL语法 > V > VACUUM”章节。 - [GaussDB如何创建只读用户?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0592.md): 答:在业务场景中,数据库管理员可以通过SCHEMA来划分不同业务。例如需要创建一个只读用户user1,允许这个用户访问sc_test模式下所有的表(包括以后创建的新表),但是不允许插入、修改和删除数据。具体过程如下:--前置操作:创建用户和模式sc_test。 gaussdb=#CREATE ROLE u1 WITH SYSADMIN P - [VACUUM与VACUUM FULL的主要区别?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0593.md): 答:在GaussDB中,VACUUM与VACUUM FULL都是用来清理表空间的命令,但它们有着明显的区别,区别如下:VACUUM:遍历表中的所有行,把表中的dead tuples行(即不再被任何活跃事务所引用的行)进行删除标记,并没有真正进行物理删除,将dead tuple行的空间标记为可重用的状态;VACUUM过程中不会锁表,其它事务 - [如何查询表存在的索引?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0595.md): 答:通过pg_indexes视图可查询表存在的索引。示例如下: - [GaussDB会话有几种状态?如何查询用户的会话状态?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0596.md): 答:共有6种状态,具体如下:active:后台正在执行一个查询。idle:后台正在等待一个新的客户端命令。idle in transaction:后台在事务中,但事务中没有语句在执行。idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。fastpath function call:后台正在执行 - [如何查询表的存储方式?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0598.md): 答:可通过表定义函数pg_get_tabledef()查询,row表示行存。具体查询方式如下所示: - [如何查询SSL证书的失效日期?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0599.md): 答:GaussDB实例的SSL证书相关信息保存路径为$GAUSSHOME/share/sslcert/。具体操作步骤如下所示: - [如何配置开启密码复杂度校验?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0600.md): 答:为了保证数据库的使用安全,建议配置开启密码复杂度校验,在创建用户或者修改密码时,校验密码复杂度。配置及验证方法如下: - [如何创建只读视图以及判断该视图是否是只读视图?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0601.md): 答:创建只读视图。判断该视图是否是只读视图。 - [如何检查数据库初始化用户角色?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0602.md): 答:数据库初始化用户角色具有数据库的最高权限,并且具有所有的系统权限和对象权限。建议仅将此用户作为DBA管理用途。 - [数据分区都有哪些优点?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0603.md): 答:优点如下:改善可管理性:利用分区,可以将表和索引划分为一些更小、更易管理的单元。有了分区,维护操作可以专门针对表的特定部分执行。可提升删除操作的性能:删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。通过ALTER TABLE ... DROP PARTITION语法进行删除分区表操作。改善查询性能:通过限制要检 - [GaussDB中pg_terminate_backend和pg_terminate_session有什么区别?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0606.md): 答:GaussDB中,pg_terminate_backend和pg_terminate_session都是用于终止数据库会话的命令。pg_terminate_backend命令是终止一个后台线程,它会强制终止该线程正在执行的任何操作,包括正在进行的事务。可以用于终止一个长时间运行的查询或者一个阻塞的事务。pg_terminate_ses - [哪些系统视图与审计信息有关?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0607.md): 答:以下3个视图与审计信息有关,需要有系统管理员或安全策略管理员权限才可以访问这些视图:GS_AUDITING:显示对数据库相关操作的所有审计信息。GS_AUDITING_ACCESS:显示对数据库DML相关操作的所有审计信息。GS_AUDITING_PRIVILEGE:显示对数据库DDL相关操作的所有审计信息。 - [事务的作用是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0608.md): 答:在数据库管理系统中,事务用于管理一组数据库操作,使它们作为一个不可分割的工作单元,要么全部执行成功,要么全部回滚。事务确保数据库的一致性和完整性,并且可以恢复到之前的状态,以防止发生意外或错误情况。事务的作用包括:保证数据的一致性:事务确保在一组操作中,要么所有操作都成功执行,要么全部回滚,从而保证数据库数据的一致性。确保数据的完整性 - [开启事务的方式有哪些?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0609.md): 答:开启事务方式有两种,BEGIN可以用于开始一个事务,START TRANSACTION也用于开始一个事务。BEGIN的用法。--建表并插入数据。 gaussdb=#CREATE TABLE tbl_test1(col1 int, col2 int); gaussdb=#INSERT INTO tbl_test1 VALUES (1,1 - [如何查看数据库应用连接数以及最大连接数?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0611.md): 答:当应用程序与数据库的连接数超过最大值,则新的连接无法建立。因此应及时释放空闲的连接或者增加最大连接数,保证数据库应用程序的正常连接。 - [如何配置日志文件权限?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0613.md): 答:当开启参数logging_collector时,可以使用参数log_file_mode设置服务器日志文件的权限。因为日志文件中可能含有敏感数据,所以日志文件访问必须受到限制。 - [如何显示数据库文件信息?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0616.md): 答:gs_controldata工具用来显示数据库数据目录下pg_control文件的信息。 - [选择数据库字符集时,应考虑哪些因素?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-40-0617.md): 答:在选择数据库字符集时,应考虑以下因素:应用支持语言的需求已有数据的兼容性性能要求字符运算需求跨平台的兼容性存储空间和性能国家化支持 - [数据库逻辑结构图](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0004.md): GaussDB的数据库节点负责存储数据,其存储介质也是磁盘,本节主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如图1。Tablespace,即表空间,表空间是一个目录,实例中可以存在多个表空间,其中存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。Database,即数据库, - [数据查询请求处理过程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0005.md): GaussDB服务响应流程涉及到客户端和Database Server组件。具体流程请参见图1。 - [管理事务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0006.md): 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。GaussDB数据库支持的事务控制命令有启动、设置、提交、回滚。GaussDB数据库支持的事务隔离级别有READ COMMITTED、REPEATABLE READ和SERIALIZABLE,SERIALIZABLE等价于REPEATABLE REA - [默认权限机制](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0009.md): 数据库对象创建后,进行对象创建的用户就是该对象的所有者。数据库安装后默认情况下,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户,请参见《参考》中 “SQL参考 > SQL语法 > G> GRANT”章节。为使其他用户能够使 - [管理员](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0010.md): 数据库安装过程中自动生成的账户称为初始用户。初始用户也是系统管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。如果安装时不设置初始用户名称,则该账户与进行数据库安装的操作系统用户同名。如果在安装时不设置初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端修改初始用户的密码。如果初 - [用户](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0012.md): 使用CREATE USER和ALTER USER可以创建和管理数据库用户。非透明多写特性下数据库系统包含一个或多个数据库,用户和角色在整个数据库系统范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的数据库。数据库系统包含一个或多个数据库,用户接数据库之后只能访问连接请求里声明的 - [角色](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0013.md): 通过GRANT将角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。在角色级别授予或撤销权限时,这些更改将作用到角色下的所有成员。GaussDB提供了一个隐式定义的拥有所有角色的组PUBLIC, - [Schema](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0014.md): Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。每个数据库包含一个或多个Schema。数据库中的每个Schema包含表和其他类型的对象。数据库创建初始,默认具有一个名为public的公共Schema,所 - [用户权限设置](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0015.md): 给用户直接授予某对象的权限,请参见《参考》中 “SQL参考 > SQL语法 > G > GRANT”章节。将Schema中的表或者视图对象授权给其他用户或角色时,需要将表或视图所属Schema的USAGE权限同时授予该用户或角色。否则用户或角色将只能看到这些对象的名称,并不能实际进行对象访问。例如,下面示例将Schema tpcds的权限 - [行级访问控制](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0016.md): 行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Lev - [数据库审计](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0017.md): 数据库审计功能对数据库系统的安全性至关重要。数据库审计管理员可以利用审计日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。关于审计功能,用户需要了解以下几点内容:审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。除了审计总 - [使用gsql连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0020.md): gsql是GaussDB提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。缺省情况下,客户端连接数据库后处于空闲状态时会根据GUC参数session_timeout的默认值自动断开连接。如果要关闭超时设置,设置GUC参数session_timeout为0即可。已联系管理员获取连接 - [应用程序接口](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0021.md): 用户可以使用标准的数据库应用程序接口(如ODBC、JDBC等),开发基于GaussDB的应用程序。每个应用程序是一个独立的GaussDB开发项目。应用程序通过API与数据库进行交互,在避免了应用程序直接操作数据库系统的同时,增强了应用程序的可移植性、扩展性和可维护性。表1为GaussDB所支持的应用程序接口及其下载地址。使用JDBC和OD - [创建数据库用户](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0023.md): 默认只有数据库安装时创建的管理员用户可以访问初始数据库,您还可以创建其他数据库用户账号。当结果显示为如下信息,则表示创建成功。如上创建了一个用户名为joe,密码为********的用户。执行如下命令设置joe用户为系统管理员。非透明多写特性下,使用GRANT命令进行相关权限设置,具体操作请参见《参考》中“SQL参考 > SQL语法 > G - [管理数据库-非透明多写](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0024.md): 用户需具备数据库创建权限或系统管理员权限方可执行数据库创建操作,具体权限授予方法请参见用户及权限。初始时,GaussDB包含四个模板数据库template0、template1、templatem、templatea以及一个默认的用户数据库postgres。postgres默认的兼容数据库类型为A(即DBCOMPATIBILITY = A - [管理表空间](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0026.md): 非透明多写特性下:通过使用表空间,管理员可以控制一个数据库安装的磁盘布局。这样有以下优点:如果初始化数据库所在的分区或者表空间已满,又不能逻辑上扩展更多空间,可以在不同的分区上创建和使用表空间,直到系统重新配置空间。表空间允许管理员根据数据库对象的使用模式安排数据位置,从而提高性能。一个频繁使用的索引可以存储在性能稳定且运算速度较快的磁盘 - [创建表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0028.md): 表是建立在数据库中的,在不同的数据库中可以存放相同的表,甚至可以通过使用模式在同一个数据库中创建相同名称的表。执行如下命令创建表。gaussdb=# CREATE TABLE customer_t1 ( c_customer_sk integer, c_customer_id - [向表中插入数据](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0029.md): 在创建一个表后,表中并没有数据,在使用这个表之前,需要向表中插入数据。本节介绍如何使用INSERT命令插入一行或多行数据,及从指定表插入数据。如果有大量数据需要批量导入表中请联系管理员处理。服务端与客户端使用不同的字符集时,两者字符集中单个字符的长度也会不同,客户端输入的字符串会以服务端字符集的格式进行处理,所以产生的最终结果可能会与预期 - [更新表中数据](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0030.md): 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。使用UPDATE命令更新现有行,需要提供以下三种信息:表的名称和需要更新的字段名字段的新值需要更新的行SQL通常不会为数据行提供唯一标识,因此更新操作需通过WHERE子句的条件表达式定位目标行。若表中定义主 - [查看数据](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0031.md): 使用系统表pg_tables查询数据库所有表的信息。gaussdb=# SELECT * FROM pg_tables;使用gsql的\d+命令查询表的属性。gaussdb=# \d+ customer_t1执行如下命令查询表customer_t1的数据量。gaussdb=# SELECT count(*) FROM customer_t - [M-Compatibility数据库访问路由](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0032.md): Database和Schema设计请参见《参考》中“兼容性说明 > MySQL兼容性说明 > MySQL数据库兼容性概述”章节的Database和Schema设计部分内容。前提:创建M-Compatibility数据库,创建用户。m_db数据库下会默认生成omm_test同名Schema和其他默认的Schema,这些Schema就是工作空 - [删除表中数据](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0033.md): 在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行删除。SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。执行DELETE命令删除行,如删除表customer_t1中所有c_customer_sk为3869的记录 - [查看系统表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0034.md): 除了创建的表以外,数据库还包含很多系统表。这些系统表包含数据库安装信息以及GaussDB上运行的各种查询和进程的信息。可以通过查询系统表来获取有关数据库的信息。系统表和系统视图(请参见《参考》中“系统表和系统视图”章节)中每个表的说明指出了表是对所有用户可见还是只对初始化用户可见。以初始化用户身份登录才能查询只对初始化用户可见的表。Gau - [管理Schema](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0036.md): Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。 管理Schema包括:创建Schema、使用Schema、删除Schema、设置Schema的搜索路径以及Schema的权限控制。GaussDB包含一个 - [管理分区表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0037.md): GaussDB数据库支持的分区表为范围分区表、间隔分区表、列表分区表和哈希分区表。范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式被广泛应用,并且分区键经常采用日期,例如将销售数据按照月份进行分区。间隔分区表:是一种特殊的范围分区表,相比范围分区表,新增间隔值定义,当插入记录找不到匹配的 - [管理索引](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0038.md): 索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。因此,在创建索引前需评估是否创建索引,需决策索引字段的选择。需要分析应用程序的业务处理、数据使用、经常被用作查询的条件或者被要求排序的字段来确定是否建立索引。索引建立在数据库表中的某些列上。因此,在创建索引时,需要评估目标列的选择标准。可以通过以下条件判断是否创建索 - [管理视图](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0039.md): 当用户需要频繁查询多张表的特定字段组合时,可通过定义视图来避免重复编写查询语句。视图通过虚拟表抽象底层表结构,简化常用查询操作。视图是一种逻辑表,与物理存储的基本表不同,其数据不实际驻留于磁盘。数据库仅保存视图的查询定义,实际数据始终保留在关联的基础表中。当基础表数据发生变更时,视图查询结果将动态同步这些变化。视图如同一个实时数据窗口,允 - [管理序列](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0040.md): 序列Sequence是用来产生唯一整数的数据库对象。声明了NO CYCLE时,序列的值是按照一定规则自增的整数。因为自增所以不重复,因此Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。通过序列使某字段成为唯一标识符的方法有两种:声明字段的类型为序列整型,由数据库在后台自动创建一个对应的Sequence。使用CRE - [管理定时任务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0041.md): 当客户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以客户经常选择在晚上执行,无形中增加了客户的工作量。因此GaussDB数据库兼容A数据库中定时任务的功能,可以由客户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而减少客户运维的工作量。 - [管理权限](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0042.md): 设置或更改数据库用户或角色权限,可以使用DCL(Data Control Language,数据控制语言)语句。数据库对象创建后,创建该对象的用户即成为其所有者。数据库安装后,默认未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和删除对象,以及通过GRANT将对 - [使用存储过程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0043.md): 商业规则和业务逻辑可以通过程序存储在GaussDB数据库中,这个程序就是存储过程。存储过程是SQL和PL/SQL的组合。存储过程可以将执行商业规则的代码从应用程序中移动到数据库,从而实现代码的一次存储,供多个程序使用。详细使用方法请参见《参考》中“存储过程”章节。PACKAGE是一组相关存储过程、函数、变量、常量和游标等PL/SQL程序的 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0045.md): 本规范以产品生命周期为主线,详细描述产品设计和开发流程过程中与数据库相关的设计和开发规范。规范以提高可读性、代码质量为原则,强调实用性、可操作性,对数据库开发容易产生问题的地方做出了明确的规定。主要包括下列内容:设计规范包括:数据库设计、性能设计。编程规范包括:排版、命名、注释、语法、脚本、数据库编程、安装部署和安全规范。同时,在必要时, - [基本规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0047.md): 【规则】数据库价值特性。数据库价值特性推荐特性分类特性列表说明表类型PARTITION表数据分区。存储引擎行存储按行顺序存储表,建议点查,增删改操作较多场景下使用。事务事务块显式启动事务。单语句事务不显式启动事务,单语句即为事务。扩容在线扩容扩节点和数据重分布过程中用户业务平滑过渡。部署一主多备一个主DN,多个备机DN,保证数据备份和容灾 - [部署规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0048.md): 【规则】安装数据库后,DBA应根据环境特性,合理配置数据库GUC参数。GaussDB提供了多种修改GUC参数的方法,用户可以方便地针对数据库、用户、会话进行设置。GUC参数配置,请联系管理员处理。 - [数据库对象命名规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0049.md): 【规格】不使用保留或非保留关键字命名数据库对象。可以使用如下命令查询数据库关键字,或者在《参考》中“SQL参考 > 关键字”章节中查看。SELECT * FROM pg_get_keywords();可以使用如下命令查询数据库关键字,或者在《参考》中“SQL参考 > 关键字”章节中查看。【规格】数据库对象命名长度不可超过63个字节。数据库 - [Database和Schema设计规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0050.md): 【说明】创建Database时,需要重点关注字符集编码(ENCODING)和兼容性(DBCOMPATIBILITY)两个配置项。GaussDB支持A、B、C、PG和M五种兼容模式,分别表示兼容O语法、MY语法、TD语法、POSTGRES语法和M-Compatibility语法。不同兼容模式下的语法存在一定差异,默认为A兼容模式。【说明】D - [权限设计规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0051.md): 【规则】数据库初始用户连接和访问数据库应作为DBA管理用途,不允许业务直接使用该数据库用户连接和访问数据库。数据库初始用户,即数据库的安装用户,与数据库所属的操作系统用户同名。数据库初始用户,即数据库的安装用户,与数据库所属的操作系统用户同名。【规则】数据库初始用户为业务创建用户和数据库,业务使用所创建的用户登录和访问数据库。【规则】合理 - [字符集设计规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0052.md): 【规格】目前除B或M模式数据库(即sql_compatibility = 'B'或'M')外,仅支持对数据库定义字符集,不支持对表、字段等其他对象定义字符集。在B模式数据库(即sql_compatibility = 'B')中,表、字段等其他对象的字符集需要同数据库的字符集一致,否则会报错。在M模式数据库(即sql_compatibili - [表设计规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0053.md): 【规则】视图不建议嵌套。如果视图编写时使用了通配符,当被调用的视图新增或删除列时,视图将发生错误。视图嵌套可能因无法使用索引而导致执行效率低下,尽量使用带有索引的基表而不是视图上做关联操作。如果视图编写时使用了通配符,当被调用的视图新增或删除列时,视图将发生错误。视图嵌套可能因无法使用索引而导致执行效率低下,尽量使用带有索引的基表而不是视 - [字段设计规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0054.md): 【规则】字段设计应使用推荐类型。字段设计需使用推荐字段,如果需要使用禁用、不推荐的字段类型,建议联系GaussDB数据库专家进行评估。有些数据类型不推荐的原因是业务使用场景较少,未大规模商用。数据库数据类型最佳实践数据类型说明是否推荐UUID不同数据库可能产生相同UUID禁止序列整型即自增列,包括SMALLSERIAL、SERIAL、BI - [索引设计规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0055.md): 【规格】使用数据库索引实践推荐的索引类型。索引设计建议使用推荐类型,如果需要使用禁用、不推荐、限制使用的索引类型,建议联系数据库专家进行评估。数据库索引实践推荐索引类型说明是否推荐主键/唯一索引单列或多列主键/唯一索引推荐表达式索引索引列为表的一列或多列计算而来的一个函数或者标量表达式限制使用BTREE索引索引构建类型部分数据类型上推荐索 - [函数/存储过程设计规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0056.md): 【规则】禁止使用存储过程、触发器等实现业务逻辑,应该将这些逻辑都放到业务服务器上处理,避免对数据库产生逻辑依赖。【规则】业务的数据库升级脚本中,禁止使用存储过程实现升级逻辑。【规则】仅创建对固定入参有固定返回值的函数,函数必须设为IMMUTABLE和SHIPPABLE类型。目前数据库支持三种类型的函数,分别是IMMUTABLE、STABL - [约束设计](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0057.md): 【建议】如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。【建议】给明确不存在NULL值的字段加上NOT NULL约束。优化器会在特定场景下对其进行自动优化。【建议】给可以显式命名的约束显式命名。除了NOT NULL和DEFAULT约束外,其他约束都可以显式命名。【建议】从命名上明确标识 - [视图和关联表设计](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0058.md): 【建议】除非视图之间存在强依赖关系,否则不建议视图嵌套。【建议】视图定义中尽量避免排序操作。【建议】表之间的关联字段应该尽量少。【建议】关联字段的数据类型应该保持一致。【建议】关联字段在命名上,应该可以明显体现出关联关系。例如,采用同样名称来命名。 - [GUC参数编程规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0060.md): 【规则】客户端(如JDBC)应使用默认参数执行查询,如果需要修改会话级别的GUC参数,应谨慎评估。通过ODBC或JDBC修改GUC参数时,需注意GUC参数仅会在当前connection中生效,特别是在连接池场景下,容易出现问题且问题定位困难。如果在连接中必须进行GUC参数设置,那么在将连接归还给连接池之前,必须使用如下命令将连接的状态清空 - [对象访问编程规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0061.md): 【规则】用户在操作对象时,应该拥有该对象的操作权限。权限说明请参考用户及权限章节,并遵循权限设计规范。权限说明请参考用户及权限章节,并遵循权限设计规范。【规则】访问对象(表,函数等)时建议带上SCHEMA名称,即使用schemaname.tablename进行访问。如果不追加SCHEMA名称前缀,会根据当前search_path中表空间列 - [WHERE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0062.md): 【规则】禁止在WHERE条件中进行相同表字段的比较。例如,如下语句应考虑合理性:SELECT * FROMt1 WHEREcol1 = col1;应考虑修改为:SELECT* FROMt1 WHEREcol1 IS NOT NULL;例如,如下语句应考虑合理性:应考虑修改为:【规则】禁止WHERE条件涉及隐式数据类型转换。数据库中进行隐式 - [SELECT](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0063.md): 【规则】SELECT语句中禁用通配符字段“*”。使用通配符字段查询表时,如果因业务或数据库升级导致表结构发生变化,可能出现与业务语句不兼容的情况。因此业务应指明所需查询的表字段名称,避免使用通配符。使用通配符字段查询表时,如果因业务或数据库升级导致表结构发生变化,可能出现与业务语句不兼容的情况。因此业务应指明所需查询的表字段名称,避免使用 - [INSERT](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0064.md): 【规格】INSERT ON DUPLICATE KEY UPDATE不支持对主键或唯一约束的列上执行UPDATE。INSERT ON DUPLICATE KEY UPDATE的语义是对唯一约束冲突的行进行更新,这个过程中不应对约束的值进行更新。INSERT ON DUPLICATE KEY UPDATE的语义是对唯一约束冲突的行进行更新, - [UPDATE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0066.md): 【规则】UPDATE语句中必须有WHERE子句,避免全表扫描。【规则】不允许在UPDATE子句同时更新多个列时,被更新列同样是更新源。同时更新多列,且更新源相同,在不同的数据库下行为不同,为了避免带来兼容性问题,业务层应避免上述操作。例如:UPDATEtable SETcol1 = col2, col3 = col1 WHEREcol1 - [DELETE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0067.md): 【规则】DELETE语句中必须有WHERE子句,避免全表扫描。【规则】DELETE语句中禁止使用ORDER BY、GROUP BY子句,避免不必要的排序。【规则】如果需要清空一张表,建议使用TRUNCATE,而不是DELETE。非透明多写特性下,TRUNCATE会创建新的物理文件,并在事务结束时将原文件物理删除,清空磁盘空间。而DELET - [关联查询](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0068.md): 【规则】多表关联嵌套深度必须小于8。关联嵌套过深,容易产生慢SQL,应从业务层考虑优化。关联嵌套过深,容易产生慢SQL,应从业务层考虑优化。【规则】表关联查询必须明确指定各表的连接条件(ON),以避免产生笛卡尔积。在B数据库中,JOIN与CROSS JOIN和INNER JOIN等价,但是在SQL标准中,JOIN仅与INNER JOIN等 - [子查询](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0069.md): 【规则】禁止一条SQL语句中,出现重复子查询语句。【建议】少用标量子查询。标量子查询指结果为一个值,并且条件表达式为等值的子查询。不符合规范的语句示例如下:SELECT* FROMt1 WHEREid = (SELECTid FROMt2 LIMIT1);上述语句建议业务拆分为两条SQL语句,先执行子查询。标量子查询指结果为一个值,并且条 - [事务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0070.md): 【规格】大对象操作不支持事务。非透明多写特性下,大对象操作包括:创建删除DATABASE、ANALYZE、VACUUM。非透明多写特性下,大对象操作包括:创建删除DATABASE、ANALYZE、VACUUM。【规则】通过JDBC客户端接入时,关闭autocommit参数,显式执行事务的COMMIT。开启autocommit参数,会导致部 - [SQL编写](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0071.md): 在GaussDB中,建议DDL(建表、COMMENT等)操作统一执行。在批处理作业中尽量避免DDL操作,避免大量并发事务对性能的影响。在非日志表(unlogged table)使用完后,立即执行数据清理(TRUNCATE)操作。因为在异常场景下,GaussDB不保证非日志表(unlogged table)数据的安全性。临时表和非日志表的存 - [JDBC](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0073.md): 【说明】第三方工具通过JDBC连接GaussDB时,JDBC向GaussDB发起连接请求,会默认添加以下配置参数,详见JDBC代码ConnectionFactoryImpl类的实现。params = { { "user", user }, { "database", database }, - [连接控制规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0074.md): 【规则】建议维持静态连接池或控制建立连接频率,以避免频繁触发新建连接。如果DN节点的连接接入每秒超过以下建议次数,在未开启建连线程池时,可能会导致线程池和CPU使用率激增,从而显著影响业务性能;在开启建连线程池时可能会造成客户端建连时延的增加,并可能引起客户端建连超时报错。8U/64G系统,每秒连接接入次数空载业务下不高于90,30% C - [GaussDB应用程序开发教程概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0076.md): GaussDB支持通过JDBC、ODBC、libpq、Psycopg、Go、ecpg、pymysql和MySQL JDBC等接口来连接数据库并进行操作。各驱动对不同数据库兼容模式的支持情况如表1所示。应用程序使用各驱动执行的SQL语句字符串中不能包含0字符,否则会导致执行失败。JDBC(Java Database Connectivity - [开发规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0077.md): 如果用户在APP的开发过程中,使用了连接池机制,那么需要遵循如下规范:如果在连接中设置了GUC参数,那么在将连接归还连接池之前,必须使用以下语句将连接的状态清空。SET SESSION AUTHORIZATION DEFAULT; RESET ALL;如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。如果在连接中设置了GUC - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0078.md): 基于JDBC开发应用程序的流程,包含获取驱动jar包并配置JDK环境、连接数据库、执行SQL语句、处理结果集、关闭连接等几个部分。基于JDBC开发应用程序的流程,请参见图1。 - [获取驱动jar包并配置JDK环境](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0080.md): 环境准备包括获取驱动jar包、配置JDK环境。下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussD - [连接介绍](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0082.md): 在获取驱动jar包并配置JDK环境的情况下,通过JDBC连接数据库时需先加载驱动。本节主要介绍驱动加载方式、连接接口以及连接方式。驱动加载有两种方式:在代码中创建连接之前的任意位置装载:Class.forName("com.huawei.gaussdb.jdbc.Driver");在JVM启动时通过参数传递,“jdbctest”为测试用例 - [以非加密方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0083.md): 前置条件:在运行环境(如IDE)已添加gaussdbjdbc.jar包。使用DriverManager.getConnection(String url, String user, String password)接口创建数据库连接的步骤如下:java.sql.Connection是数据库连接接口,通过java.sql.DriverMan - [以SSL方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0084.md): 用户通过JDBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通信,为敏感数据在网络上的传输提供一种安全保障手段。本小节中,连接数据库采用接口三:DriverManager.getConnection(String url, Properties info)。前置条件:在运行环境(如IDE)已添加gaussdbjd - [以UDS方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0085.md): Unix Domain Socket(UDS)用于同一主机上不同进程间的数据交换,需添加junixsocket以获取套接字工厂。前置条件:在运行环境(如IDE)添加gaussdbjdbc.jar、junixsocket-core-XXX.jar、junixsocket-common-XXX.jar、junixsocket-native-c - [以国密TLS方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0086.md): 用户通过JDBC连接GaussDB服务器时,可以通过开启国密TLS加密客户端和服务器之间的通信,为敏感数据在网络上的传输提供高强度的安全保障手段。以国密TLS方式连接数据库有两种方式:国密TLS单向认证、国密TLS双向认证。单向认证只需客户端验证服务端身份,而双向认证则需要客户端和服务端双方互相验证身份。前置条件:在运行环境(如IDE)已 - [连接参数参考](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0087.md): 连接参数的名称对大小写敏感。将连接参数进行分类,具体如表1所示。使用JDBC连接M-Compatibility数据库使用约束:使用DriverManager.getConnection(String url, Properties info)方法创建数据库连接时,info参数不支持如下属性:binaryTransfer、binaryTra - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0088.md): 应用程序通过执行SQL语句来操作数据库。本章节通过示例介绍CREATE TABLE、INSERT、UPDATE、DELETE和SELECT等操作。执行普通SQL语句执行批量插入处理语句执行预处理更新语句执行删除语句执行查询语句调用存储过程前置条件:已连接数据库,连接对象为conn。执行普通SQL语句,创建customer_t1表的步骤如下 - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0089.md): 执行SQL语句后,需要对结果集进行处理。本章节主要涵盖以下内容:设置结果集类型、在结果集中定位、获取结果集光标位置、获取结果集数据以及示例步骤。不同类型的结果集具有不同的应用场景,应用程序需要根据实际情况选择合适的结果集类型。在执行SQL语句时,应先创建相应的语句对象,其中部分创建方法支持设置结果集类型。java.sql.Connecti - [关闭数据库连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0090.md): 在完成相应的数据操作后,应调用close()方法关闭数据库连接。Connection、Statement和ResultSet接口都提供close()方法,在使用完对象后应及时关闭它们。关闭Connection对象将间接关闭所有与之关联的Statement对象,关闭Statement对象则会间接关闭其对应的ResultSet对象。 - [不同场景下配置连接参数](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0092.md): 以下示例场景中node代表“host:port”,host为数据库服务器名称或IP地址,port为数据库服务器端口。某客户有两套数据库实例,其中A数据库实例为生产数据库实例,B数据库实例为容灾数据库实例。当客户执行容灾切换时,A数据库实例将降为容灾数据库实例,B数据库实例将升为生产数据库实例。此时为了避免修改配置文件导致的应用重启或重新发 - [处理SQL异常](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0093.md): 当JDBC操作(如执行SQL语句、处理结果集等)发生错误时,JDBC程序会抛出SQL异常。SQLException有getMessage()和printStackTrace()等常用方法,详细介绍请参见java.sql.SQLException。以下代码展示了如何捕捉SQL异常。以使用错误的列索引为例,展示捕捉到SQL异常后的报错信息。若 - [创建和调用存储过程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0094.md): 本示例演示如何连接数据库、创建和调用存储过程。非透明多写特性下的示例上述2个示例的运行结果为: - [获取函数返回值](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0095.md): JDBC调用函数时获取返回值,以下示例展示返回值类型为bit和float8两种数据类型,其他数据类型可参考本示例。非透明多写特性下的示例上述2个示例的运行结果为: - [批量查询](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0096.md): 此示例主要使用setFetchSize调整客户端内存使用,原理是通过数据库游标来分批获取服务端数据,但会加大网络交互,可能会损失部分性能。由于游标事务内有效,故需要先关闭自动提交事务,最后执行手动提交事务。非透明多写特性下的示例上述2个示例的运行结果为:执行完毕后可执行如下命令恢复自动提交事务。 - [使用流式读功能](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0097.md): 流式读功能:读取数据时,服务端一次获取全部数据,发送到客户端socket缓冲区中,缓冲区占满则暂停,有空余则继续向缓冲区中发送数据,同时JVM逐行从缓冲区中读取数据。优势是处理结果快,不会造成JVM内存溢出。劣势是只能向后遍历,数据处理完毕之前或者statement关闭之前,当前连接不能执行其他操作。非透明多写特性下的示例上述2个示例的运 - [应用层SQL重试](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0098.md): 当主数据库节点故障且10s未恢复时,GaussDB会将对应的备数据库节点升主,使数据库正常运行。备升主期间正在运行的作业会失败,备升主后启动的作业不会再受影响。如果要做到数据库节点主备切换过程中,上层业务不感知,可参考此示例构建业务层SQL重试机制。非透明多写特性下的示例上述2个示例的运行结果为: - [通过本地文件导入导出数据](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0099.md): 在使用JAVA语言基于GaussDB数据库进行二次开发时,可以使用CopyManager接口,通过流方式将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件支持CSV、TEXT等格式。代码运行的前提条件:在数据库中创建表migration_table和migration_table_1,并在migration_table表中插入 - [从MySQL数据库迁移数据](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0100.md): 下面示例演示如何通过CopyManager从MySQL数据库向GaussDB进行数据迁移。代码运行的前提条件:MySQL数据库和GaussDB数据库分别创建migration_table表。MySQL数据库的migration_table表预先插入数据。非透明多写特性下的示例上述2个示例的运行结果为:迁移后,GaussDB数据库的migr - [逻辑复制(非透明多写)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0101.md): 本章节介绍JDBC逻辑解码的配置选项,并且通过示例演示JDBC接口使用逻辑复制功能。针对逻辑复制的配置选项,除了参考逻辑解码选项,还有专门给JDBC等流式解码工具增加的配置项,如下所示:解码线程并行度通过配置选项parallel-decode-num,指定并行解码的Decoder线程数量。其取值范围为int型的1~20,取1表示按照原有的 - [监控数据库连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0103.md): 连接监控功能支持监控JDBC端以下指标:应用开启连接的次数,关闭连接的次数,连接异常断开的次数,数据库访问量,客户端机器CPU的使用率,内存的使用率,上下行传输速率,应用端到数据库链路之间的网络时延、抖动、丢包率。此示例将演示如何使用JDBC驱动的连接监控功能。非透明多写特性下的示例上述2个示例的运行结果为:在日志文件dbMonitor. - [使用Array类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0104.md): 以下示例将演示如何使用JDBC驱动的Array类型。代码运行的前提条件:连接的数据库兼容模式为A,数据库版本需要大于等于503.0。非透明多写特性下的示例上述2个示例的运行结果为:非透明多写特性下的示例上述2个示例的运行结果为:元素类型为字符类型时,空元素在传给数据库时会转换成null。非透明多写特性下的示例上述2个示例的运行结果为:实际 - [使用Struct类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0105.md): 以下示例将演示如何使用JDBC驱动的Struct类型。代码运行的前提条件:连接的数据库兼容模式为A,数据库版本需要大于等于503.0。非透明多写特性下的示例上述2个示例的运行结果为:非透明多写特性下的示例上述2个示例的运行结果为:元素类型为字符类型时,空元素在传给数据库时会转换成null。非透明多写特性下的示例上述2个示例的运行结果为:类 - [常用Package及接口](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0108.md): 常用Package及接口的作用,如表1所示。 - [java.sql.Connection](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0109.md): java.sql.Connection是数据库连接接口。接口内部默认使用自动提交模式,若通过setAutoCommit(false)关闭自动提交模式,将会导致后面执行的语句受到显式事务包裹,数据库中不支持事务中执行的语句不能在此模式下执行。不支持全密态数据库使用setClientInfo("send_token", null)传输密钥,使 - [java.sql.CallableStatement](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0110.md): java.sql.CallableStatement是存储过程执行接口。不允许含有OUT参数的语句执行批量操作。以下方法是从java.sql.Statement继承而来:close、execute、executeQuery、executeUpdate、getConnection、getResultSet、getUpdateCount、is - [java.sql.DatabaseMetaData](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0111.md): java.sql.DatabaseMetaData是数据库对象定义接口。uppercaseAttributeName为true时,以下方法会将查询结果转为大写,可转换范围与java中的toUpperCase方法一致。public ResultSet getProcedures(String catalog, String schemaPa - [java.sql.Driver](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0112.md): java.sql.Driver是数据库驱动接口。 - [java.sql.PreparedStatement](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0113.md): java.sql.PreparedStatement是预处理语句接口。addBatch()、execute()必须在clearBatch()之后才能执行。调用executeBatch()方法并不会清除batch。用户必须显式使用clearBatch()清除。在添加了一个batch的绑定变量后,用户若想重用这些值(再次添加一个batch), - [java.sql.ResultSet](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0114.md): java.sql.ResultSet是执行结果集接口。一个Statement不能有多个处于“open”状态的ResultSet。用于遍历结果集(ResultSet)的游标(Cursor)在被提交后不能保持“open”的状态。执行SQL语句时,报文有最大长度限制(不能超过1023MB)。因此使用updateAsciiStream、updat - [java.sql.ResultSetMetaData](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0115.md): java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。uppercaseAttributeName为true时,下面接口会将查询结果转为大写,可转换范围为26个英文字母。public String getColumnName(int column)public String getColumnL - [java.sql.Statement](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0116.md): java.sql.Statement是SQL语句接口。通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,但会有性能损耗。由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCo - [java.sql.Clob](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0117.md): java.sql.Clob接口提供用于获取SQL字符大对象,访问SQL CLOB值。 - [java.sql.SQLException](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0118.md): java.sql.SQLException是JDBC API中用于处理数据库操作错误的核心异常类。当JDBC操作(如执行SQL语句、处理结果集等)发生错误时,JDBC程序会抛出此异常。 - [java.io.IOException](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0119.md): java.io.IOException是Java I/O操作中的核心受检异常类,用于表示输入/输出操作期间发生的错误或中断。 - [javax.sql.ConnectionPoolDataSource](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0120.md): javax.sql.ConnectionPoolDataSource是数据源连接池接口。 - [javax.sql.DataSource](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0121.md): javax.sql.DataSource是数据源接口。 - [javax.sql.PooledConnection](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0122.md): javax.sql.PooledConnection是由连接池创建的连接接口。 - [javax.naming.Context](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0123.md): javax.naming.Context是连接配置的上下文接口。 - [CopyManager](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0124.md): CopyManager是GaussDB JDBC驱动中提供的一个API接口类,用于批量向数据库导入数据以及从数据库导出数据。CopyManager类位于com.huawei.gaussdb.jdbc.copy Package中,继承自java.lang.Object类,该类的声明如下:public CopyManager(BaseConn - [PGReplicationConnection](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0125.md): PGReplicationConnection是GaussDB JDBC驱动中提供的一个API接口类,用于执行逻辑复制相关的功能。PGReplicationConnection是逻辑复制的接口,非透明多写场景下的实现类是PGReplicationConnectionImpl,该类位于com.huawei.gaussdb.jdbc.repl - [PGReplicationStream](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0126.md): PGReplicationStream是GaussDB JDBC驱动中提供的一个API接口类,用于操作逻辑复制流。PGReplicationStream是逻辑复制的接口,非透明多写场景下的实现类是V3PGReplicationStream,该类位于com.huawei.gaussdb.jdbc.core.v3.replication Pa - [ChainedStreamBuilder](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0127.md): ChainedStreamBuilder是GaussDB JDBC驱动中提供的一个API接口类,用于构建复制流。本接口类仅在非透明多写特性下支持。ChainedStreamBuilder是逻辑复制的接口,实现类是ReplicationStreamBuilder,该类位于com.huawei.gaussdb.jdbc.replication - [ChainedCommonStreamBuilder](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0128.md): ChainedCommonStreamBuilder是GaussDB JDBC驱动中提供的一个API接口类,用于为逻辑和物理复制指定通用参数。本接口类仅在非透明多写特性下支持。ChainedCommonStreamBuilder是逻辑复制的接口,实现抽象类是AbstractCreateSlotBuilder,该类的继承类是LogicalC - [PGobject](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0129.md): PGobject类用于表示非JDBC标准定义的类型。 - [LogSequenceNumber](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0130.md): LogSequenceNumber类是逻辑解码场景下的日志序列号,其内部的LogSequenceValue变量用于唯一确认一条SQL对应的编码后的日志。非透明多写场景实现的子类为CommonLogSequenceValue。 - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0132.md): ODBC开发流程如图1所示。其中包括获取源码包、ODBC包以及依赖库、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [获取源码包、ODBC包以及依赖库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0134.md): 基于ODBC开发用户需要获取unixODBC源码包、ODBC包以及依赖库。unixODBC源码包获取参考地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz。MD5文件下载地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz.md5。下载后需使用M - [Linux系统下配置数据源](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0137.md): 在通过ODBC访问数据库之前,需要确保环境中已正确安装ODBC驱动及相关依赖。应用程序与数据库之间的通信依赖数据源(Data Source Name,DSN)配置,ODBC驱动程序管理器将根据DSN信息加载对应驱动、建立连接,并向应用程序提供统一的API接口。本节说明如何在Linux系统下配置ODBC数据源(包含驱动配置文件与DSN配置文 - [Windows系统下配置数据源](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0138.md): Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器便可直接进行配置。根据需要,将包名为GaussDB-Kernel_数据库版本号_Windows_X64_Odbc.tar.gz的64位驱动或包名为GaussDB-Kernel_数据库版本号_Windows_X86_Odbc.tar.gz的32位驱动解压后,单击gsqlo - [连接数据库涉及的API](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0139.md): 在完成数据源配置后,应用程序需要通过一组标准的ODBC API与数据库建立连接。该连接过程包含环境句柄与连接句柄的分配、属性设置以及实际连接动作,相关API说明如表1所示。ODBC驱动程序管理器在此过程中负责加载驱动、解析DSN参数,并初始化后续所有数据库交互所需的上下文。以开发源程序DBtest.c为例(完整示例请参考获取和处理数据库中 - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0140.md): 为了执行SQL语句,ODBC提供一组专门的API,并在表1中集中列出了相关API并进行了说明。这些API覆盖了SQL的预处理、参数绑定、直接执行以及语句属性设置等功能,是应用程序与数据库进行指令交互的核心接口。ODBC为应用程序与数据库的中心层,负责把应用程序发出的SQL指令传到数据库当中,自身并不解析SQL语法。故在应用程序中写入带有保 - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0141.md): ODBC处理结果集是从数据库获取数据并供应用程序进行处理的过程,包括:检索数据、展示、处理、传输以及业务逻辑实现等。相关API如表1所示。示例如下(完整示例请参考获取和处理数据库中的数据): - [关闭连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0142.md): 在完成数据库操作后,需通过ODBC API正确关闭语句、连接和环境句柄,释放驱动及数据库端的资源。根据ODBC句柄管理机制,应用程序需按照“语句 → 连接 → 环境”的顺序依次释放,以避免资源泄漏或驱动状态异常。ODBC关闭数据库连接,释放资源相关API如表1所示。示例如下(完整示例请参考获取和处理数据库中的数据): - [典型应用场景配置](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0144.md): ODBC日志分为unixODBC驱动管理器日志和gsqlODBC驱动端日志。前者可以用于追踪应用程序API调用的执行状态,后者包含驱动底层实现的诊断(DFX)日志,用于帮助定位问题。unixODBC日志需要在odbcinst.ini文件中配置:gsqlODBC日志只需在odbc.ini加上如下内容:unixODBC日志将生成在TraceF - [获取和处理数据库中的数据](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0145.md): 此示例完整演示如何通过ODBC获取和处理GaussDB中的数据。前提条件:数据源已配置成功。Linux系统请参考Linux系统下配置数据源;Windows系统请参考Windows系统下配置数据源。Windows环境下ODBC应用代码可以使用MinGW(Minimalist GNU for Windows)编译器进行编译。编译命令如下:gc - [批量绑定](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0146.md): 前提条件:数据源已配置成功。Linux系统请参考Linux系统下配置数据源;Windows系统请参考Windows系统下配置数据源。运行结果如下:数据库中查询后显示部分结果如下: - [高性能绑定类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0147.md): 需要进行大量数据插入时,有如下建议供用户参考和设置:需要设置批量绑定:在odbc.ini配置文件中设置“UseBatchProtocol=1”,并配置数据库GUC参数“support_batch_bind=on”。ODBC程序的绑定类型需与数据库中类型一致。客户端字符集需与数据库字符集一致。事务需切换为手动提交模式。odbc.ini配置文 - [开启连接池](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0148.md): 前提条件:数据源已配置成功。Linux系统请参考Linux系统下配置数据源;Windows系统请参考Windows系统下配置数据源。在Linux和Windows环境下开启连接池,对于需要频繁建立和断开连接的中间层应用程序可显著提升性能,参考配置请参见连接池场景,示例代码如下:不同环境下结果不一,在连接池打开的情况下,本示例运行结果如下:在 - [SQLAllocEnv](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0150.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLAllocConnect](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0151.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLAllocHandle](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0152.md): 分配环境、连接、语句或描述符的句柄,它替代了ODBC 2.x函数SQLAllocEnv、SQLAllocConnect及SQLAllocStmt。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVA - [SQLAllocStmt](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0153.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLBindCol](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0154.md): 将应用程序数据缓冲区绑定到结果集的列中。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLBindCol返回SQL_ERRO - [SQLBindParameter](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0155.md): 将一条SQL语句中的一个参数标志和一个缓冲区绑定起来。当绑定的字符类型数据中含'\0'字符且libpq的0字符参数supportZeroCharacter设置为1时,用户需要保证输入的字符串长度(StrLen_or_IndPtr)等于含'\0'字符的字符串的实际长度。当输入的字符串长度大于含'\0'字符的字符串实际长度时,此场景下若发生内 - [SQLColAttribute](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0156.md): 返回结果集中一列的描述符信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLColAttribute返回SQL_ERRO - [SQLConnect](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0157.md): 在驱动程序和数据源之间建立连接。连接上数据源之后,可以通过连接句柄访问到所有有关连接数据源的信息,包括程序运行状态、事务处理状态和错误信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID - [SQLDisconnect](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0158.md): 关闭一个与特定连接句柄相关的连接。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当调用SQLDisconnect函数返回SQL_ - [SQLExecDirect](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0159.md): 使用参数的当前值,执行一条准备好的语句。对于一次只执行一条SQL语句,SQLExecDirect是最快的执行方式。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。SQL_ERROR:表示比较严重的错误,如:内存分配 - [SQLExecute](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0160.md): 如果语句中存在参数标记,SQLExecute函数使用参数标记参数的当前值,执行一条准备好的SQL语句。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连 - [SQLFetch](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0161.md): 从结果集中取下一个行集的数据,并返回所有被绑定列的数据。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_NO_DATA:表示SQL语句不返回结果集。SQL_INVALID_HANDLE:表示调用无效句柄 - [SQLFreeStmt](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0162.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLFreeConnect](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0163.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLFreeHandle](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0164.md): 释放与指定环境、连接、语句或描述符相关联的资源,它替代了ODBC 2.x函数SQLFreeEnv、SQLFreeConnect及SQLFreeStmt。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_I - [SQLFreeEnv](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0165.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLPrepare](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0166.md): 准备一个将要使用的SQL语句。需要注意的是,ODBC发送准备好的语句不支持内核复用计划,会导致每次执行都需要重新生成计划,CPU占用率高。如果业务对计划复用有需求,建议优先使用JDBC作为客户端。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误, - [SQLGetData](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0167.md): SQLGetData返回结果集中某一列的数据。可以多次调用它来部分检索不定长度的数据。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_NO_DATA:表示SQL语句不返回结果集。SQL_INVALID_ - [SQLGetDiagRec](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0168.md): 返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。SQLGet - [SQLSetConnectAttr](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0169.md): 设置控制连接各方面的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetConnectAttr的返回值为SQL_E - [SQLSetEnvAttr](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0170.md): 设置控制环境各方面的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetEnvAttr的返回值为SQL_ERROR - [SQLSetStmtAttr](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0171.md): 设置相关语句的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetStmtAttr的返回值为SQL_ERROR或S - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0172.md): libpq开发流程如图1所示。其中包含获取发布包、依赖库和头文件、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [获取发布包、依赖库和头文件](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0174.md): 下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussDB-driver*.tar.gz);echo - [连接数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0176.md): 连接到数据库是使用libpq开发应用程序的第一步。此时用户可以使用PQconnectdb或PQsetdbLogin函数来建立与数据库服务器的连接。连接所用的连接串即conninfo有以下两种形式:所需的连接参数直接写为[name=value][...]的形式,多个参数之间使用空格隔开,例如:"dbname=%s port=%s host= - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0177.md): 通过连接对象,使用PQexec等函数执行SQL查询语句。可以执行各种类型的SQL查询,例如SELECT查询、INSERT插入数据、UPDATE更新数据、DELETE删除数据等。但如果同时执行多个SQL语句作为一个事务,应该使用事务控制功能,例如执行BEGIN、COMMIT、ROLLBACK等SQL语句来控制事务的开始、提交和回滚。同时也需 - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0178.md): libpq提供PQntuples、PQnfields、PQfname等函数来帮助用户对执行SELECT查询后的结果进行适当的解析和处理。主要步骤如下:判断执行结果状态;获取结果集行数和列数;遍历并提取数据;释放PGresult对象(必须执行)。示例如下(完整示例请参考数据库建连、执行SQL并返回结果): - [关闭连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0179.md): libpq通常使用PQfinish函数来关闭与数据库的连接。如果应用程序建立了多个连接,则需要确保每个连接都被正确关闭。示例如下(完整示例请参考数据库建连、执行SQL并返回结果):注意事项:无论连接成功、失败还是发生异常,都必须确保PQfinish被调用,否则会导致连接句柄泄漏,长期运行可能耗尽系统文件描述符或数据库连接数;先释放所有PG - [数据库建连、执行SQL并返回结果](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0181.md): gcc编译libpq源程序,需要通过-Idirectory选项,提供头文件的安装位置(有些时候编译器会查找缺省的目录,因此可以忽略这些选项)。如:gcc -I (头文件所在目录) -L (libpq库所在目录) -o testlibpq testlibpq.c -lpq执行命令为:如果要使用制作文件(makefile),向CPPFLAG - [执行预备语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0182.md): 以下示例创建一个给定参数的预备语句,用于PQexecPrepared执行预备语句:非透明多写特性的示例如下:上述2个示例运行结果如下: - [绑定参数并返回二进制结果](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0183.md): 以下示例执行一个绑定参数的命令,并以二进制格式请求查询结果。用以上命令填充数据库后,运行如下示例:非透明多写特性的示例如下:上述2个示例运行结果如下: - [使用XA接口](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0184.md): 此示例为XA接口使用。在编译时需要动态链接gsxalib库。具体代码如下:示例运行结果如下: - [PQconnectdbParams](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0187.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数用从两个NULL结束的数组中的参数打开一个新的数据库连接。与PQsetdbLogin不同,该函数可以不必更换函数签名(名字)就可以扩展参数集,所以建议应用程序中使用该函数(或者类似的非阻塞变种PQconnectStartParams和PQc - [PQconnectdb](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0188.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数用conninfo传入的参数打开一个新的连接。传入的参数可以为空,表明使用所有缺省的参数,或者可以包含一个或更多个用空白间隔的参数设置,或者还可以包含一个URL。请参见典型应用开发示例章节。 - [PQconninfoParse](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0189.md): 根据连接,返回已解析的连接选项。PQconninfoOption类型指针。 - [PQconnectStart](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0190.md): 与数据库服务器建立一次非阻塞的连接。PGconn类型指针。使用非阻塞方式(PQconnectStart + loop of PQconnectPoll)连接数据库且连接信息中包含多个IP时,libpq会按顺序尝试连接每个IP并检查target_session_attrs,直到连接数据库成功或者尝试完所有IP建立数据库连接失败。使用非阻塞方 - [PQerrorMessage](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0191.md): 返回连接上的错误信息。char类型指针。 - [PQsetdbLogin](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0192.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数为PQconnectdb前身,参数个数固定,未定义参数被调用时使用缺省值,若需要给固定参数设置缺省值,则可赋值NULL或者空字符串。若dbName中包含“=”或连接URL的有效前缀,则该dbName被看做一个conninfo字符串并传递至P - [PQfinish](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0193.md): 关闭与服务器的连接,同时释放被PGconn对象使用的存储器。若PQstatus判断服务器连接尝试失败,应用程序调用PQfinish释放被PGconn对象使用的存储器,PQfinish调用后PGconn指针不可再次使用。请参见典型应用开发示例章节。 - [PQreset](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0194.md): 重置与服务器的通讯端口。此函数将关闭与服务器的连接并且试图与同一个服务器重建新的连接,并使用所有前面使用过的参数。该函数在连接异常后进行故障恢复时很有用。 - [PQstatus](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0195.md): 返回连接的状态。ConnStatusType:连接状态的枚举,包括:状态可以是多个值之一。但是,在异步连接过程之外只能看到其中两个:CONNECTION_OK和CONNECTION_BAD。与数据库的良好连接状态为CONNECTION_OK,与数据库连接失败状态为CONNECTION_BAD。通常,“正常”状态将一直保持到PQfinish - [PQclear](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0198.md): 释放与PGresult相关联的存储空间,任何不再需要的查询结果都应该用PQclear释放。PGresult不会自动释放,当提交新的查询时它并不消失,甚至断开连接后也不会。要删除它,必须调用PQclear,否则会有内存泄漏。请参见典型应用开发示例章节。 - [PQexec](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0199.md): 向服务器提交一条命令并等待结果。PGresult:包含查询结果的对象指针。应该调用PQresultStatus函数来检查任何错误的返回值(包括空指针的值,在这种情况下它将返回PGRES_FATAL_ERROR)。使用PQerrorMessage获取有关错误的更多信息。命令字符串可以包括多个SQL命令(用分号分隔)。在一个PQexec调用中 - [PQexecParams](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0200.md): 执行一个绑定参数的命令。PGresult类型指针。 - [PQexecParamsBatch](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0201.md): 执行一个批量绑定参数的命令。PGresult类型指针。 - [PQexecPrepared](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0202.md): 发送一个请求来用给定参数执行一个预备语句,并且等待结果。当绑定的字符类型数据中含'\0'字符且libpq的0字符参数supportZeroCharacter设置为1时,用户需要保证输入的字符串长度(paramLengths)等于含'\0'字符的字符串的实际长度。当输入的字符串长度大于含'\0'字符的字符串实际长度时,此场景下若发生内存越界 - [PQexecPreparedBatch](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0203.md): 发送一个请求来用给定的批量参数执行一个预备语句,并且等待结果。PGresult类型指针。 - [PQprepare](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0204.md): 用给定的参数提交请求,创建一个预备语句,然后等待结束。PGresult:包含查询结果的对象指针。PQprepare创建一个为PQexecPrepared执行用的预备语句,支持命令的重复执行,不需要每次都进行解析和规划。PQprepare仅在协议3.0及以后的连接中支持,使用协议2.0时,PQprepare将失败。该函数从查询字符串创建一个 - [PQfnumberEx](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0205.md): 返回与给定列名相关联的列号。列号从0开始。int型整数。 - [PQexecPreparedBatchEx](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0206.md): BatchErrorMode批量请求接口。PGresult类型指针。 - [PQsendQuery](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0208.md): 向服务器提交一个命令而不等待结果。如果查询成功发送则返回1,否则返回0。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。在成功调用PQsendQuery后,调用PQgetResult一次或者多次获取结果。PQgetResult返回空指针表示命令已执行完成,否则不能再次调用PQsendQuery - [PQsendQueryParams](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0209.md): 给服务器提交一个命令和分隔的参数,而不等待结果。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数等效于PQsendQuery,只是查询参数可以和查询字符串分开声明。函数的参数处理和PQexecParams类似,它不能在2.0版本的协议连接上工作,并且它只允许在查询字符串里出现一条命令。 - [PQsendPrepare](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0211.md): 发送一个请求,创建一个给定参数的预备语句,而不等待结束。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数为PQprepare的异步版本:如果能够分派请求,则返回1,否则返回0。调用成功后,调用PQgetResult判断服务端是否成功创建了preparedStatement。函数的参数与P - [PQsendQueryPrepared](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0212.md): 发送一个请求执行带有给出参数的预备语句,不等待结果。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数类似于PQsendQueryParams,但是要执行的命令是通过命名一个预先准备的语句来指定的,而不是提供一个查询字符串。该函数的参数与PQexecPrepared一样处理。和PQexec - [PQflush](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0213.md): 尝试将任何排队的输出数据刷新到服务器。int:如果成功(或者如果发送队列为空),则返回0;如果由于某种原因失败,则返回-1;如果发送队列中的所有数据都发送失败,则返回1。(此情况只有在连接为非阻塞时才能发生),失败原因存到conn->errorMessage中。在非阻塞连接上发送任何命令或数据之后,调用PQflush。如果返回1,则等待套 - [PQgetCancel](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0215.md): 创建一个数据结构,其中包含取消通过特定数据库连接发出的命令所需的信息。PGcancel:指向包含cancel信息对象的指针。PQgetCancel创建一个给定PGconn连接对象的PGcancel对象。如果给定的conn是NULL或无效连接,它将返回NULL。PGcancel对象是一个不透明的结构,应用程序不能直接访问它,它只能传递给PQ - [PQfreeCancel](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0216.md): 释放PQgetCancel创建的数据结构。PQfreeCancel释放一个由前面的PQgetCancel创建的数据对象。 - [PQcancel](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0217.md): 要求服务器放弃处理当前命令。int:执行结果为1表示成功,0表示失败,失败原因存到errbuf中。成功发送并不保证请求将产生任何效果。如果取消有效,当前命令将提前终止并返回错误结果。如果取消失败(例如,因为服务器已经处理完命令),无返回结果。如果errbuf是信号处理程序中的局部变量,则可以安全地从信号处理程序中调用PQcancel。就P - [PQgetvalue](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0219.md): 返回一个PGresult的一行的单一阈值。行和列号从 0 开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。对于文本格式的数据,PQgetvalue返回的值是该阈值的一种空值结束的字符串表示。对于二进制格式的数据,该值是由该数据类型的typsend和typreceive函数决定的二进制表示 - [PQnfields](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0220.md): 返回查询结果中每一行的列(域)数。int类型数字。 - [PQntuples](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0221.md): 返回查询结果中的行(元组)数。PQntuples返回一个整数结果,在 32 位操作系统上大型的结果集可能使返回值溢出。int类型数字。请参见典型应用开发示例章节。 - [PQfname](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0222.md): 返回与给定列号相关联的列名。列号从 0 开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。char类型指针。 - [PQresultStatus](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0223.md): 返回命令的结果状态。PQresultStatus:命令执行结果的枚举,包括:请注意,恰好检索到零行的SELECT命令仍然显示PGRES_TUPLES_OK。PGRES_COMMAND_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES_EMPTY_QUERY响应可能表明客户端软件存在bug。状态为PGRES_NONFA - [PQGetBatchErrorCount](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0224.md): 获取BatchErrorMode批量请求的错误条数。int类型数据。 - [PQGetBatchErrorOffset](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0225.md): 获取第idx个错误在批量请求里的偏移行号(idx起始值从0开始计算)。int类型数据。 - [PQGetBatchErrorCode](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0226.md): 获取第idx个错误在批量请求里的错误码(idx起始值从0开始计算)。char类型指针。 - [PQGetBatchErrorMessage](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0227.md): 获取第idx个错误在批量请求里的错误信息(idx起始值从0开始计算)。char类型指针。 - [xa_open](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0229.md): 建立与资源管理器的连接。int类型数字。可能的返回值包括:XA_OK、XAER_RMERR、XAER_INVAL、XAER_PROTO。 - [xa_close](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0230.md): 关闭与资源管理器的连接。int类型数字。可能的返回值包括:XA_OK、XAER_RMERR、XAER_INVAL、XAER_PROTO。应使用xa_close函数关闭与资源管理器的连接,而非使用PQfinish函数。 - [xa_start](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0231.md): 启动一个事务分支。int类型数字。可能的返回值包括:XA_OK、XAER_RMERR、XAER_INVAL、XAER_PROTO、XAER_DUPID。 - [xa_end](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0232.md): 结束一个事务分支。int类型数字。可能的返回值包括:XA_OK、XAER_RMERR、XAER_INVAL、XAER_PROTO。 - [xa_prepare](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0233.md): 准备提交指定的事务分支。int类型数字。可能的返回值包括:XA_OK、XAER_RMERR、XAER_INVAL、XAER_PROTO、XA_RBROLLBACK、XAER_DUPID。 - [xa_commit](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0234.md): 提交指定的事务分支。int类型数字。可能的返回值包括:XA_OK、XAER_RMERR、XAER_INVAL、XAER_PROTO、XAER_NOTA。 - [xa_rollback](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0235.md): 回滚指定的事务分支。int类型数字。可能的返回值包括:XA_OK、XAER_RMERR、XAER_INVAL、XAER_PROTO、XAER_NOTA。 - [xa_recover](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0236.md): 获取准备好的事务分支列表。int类型数字。可能的返回值包括:≥0(返回的XID的数量)、XAER_RMERR、XAER_INVAL、XAER_PROTO。 - [get_xapg_conn](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0237.md): 除XA标准函数外,支持获取XA连接函数get_xapg_conn。获取XA连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。 - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0238.md): Psycopg2开发应用程序的流程可分为环境准备、连接数据库、执行SQL语句、处理结果集、关闭连接等几个部分。开发流程如图1所示。 - [环境准备](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0240.md): 下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussDB-driver*.tar.gz);echo - [连接参数参考](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0242.md): 常用的连接参数,如表1所示。Psycopg2连接能力基于底层libpq库实现。在负载均衡能力方面存在以下差异:非透明多写特性下:由于libpq不支持负载均衡机制,因此Psycopg2也不支持负载均衡。非透明多写特性下:由于libpq不支持负载均衡机制,因此Psycopg2也不支持负载均衡。 - [以非加密方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0243.md): 调用psycopg2.connect(dsn)创建数据库连接,步骤如下:非透明多写特性下,用户需要指定数据库名称、服务器地址以及端口号。conn = psycopg2.connect(f"dbname=database user={userName} password={passWord} host={host} port={port}" - [以SSL方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0244.md): 通过psycopg2连接GaussDB数据库时,可以通过开启SSL加密客户端和服务端之间的通讯,为敏感数据传输提供一种安全保障手段。登录GaussDB管理控制台,在“实例管理”页面,单击实例名称进入“基本信息”页面,单击“SSL”处的,下载根证书或捆绑包,将根证书ca.pem放置在客户端。关于证书生成和获取,请联系管理员。服务端配置证书的 - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0245.md): 在Psycopg2中,当数据库创建游标对象时默认开启事务,该游标下执行的SQL命令都在该事务中。该事务提交和回滚由connection对象处理。应用程序通过执行SQL语句来操作数据库,可以执行各种类型的SQL语句,例如创建表、插入数据、更新数据、删除数据、查询等。execute()方法用于执行单行SQL语句,executemany()方法 - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0246.md): 执行SELECT查询语句后,需要从结果集中获取数据,可以使用fetchone()方法获取单行数据,使用fetchmany(size)方法获取size行数据,或者使用fetchall()方法获取查询结果的所有行。示例如下(完整示例请参考数据库建连、执行SQL并返回结果):调用execute()方法查询结果集后,使用fetchall()方法获 - [关闭数据库连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0247.md): 数据库操作完成后,需要调用cur.close()方法关闭游标,调用conn.close()方法关闭数据库连接。假设连接对象为conn,游标对象为cur。示例如下(完整示例请参考数据库建连、执行SQL并返回结果):此方法关闭数据库连接,并不会自动调用commit()方法提交当前事务。如果要将当前事务操作(如INSERT、UPDATE、DEL - [数据库建连、执行SQL并返回结果](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0249.md): 本示例演示在Python驱动下连接数据库、建表、插入数据并返回结果的常规操作。示例运行结果如下: - [使用日志场景](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0250.md): 本示例演示在Python驱动下使用日志的场景。示例运行结果如下:LoggingConnection默认记录所有SQL信息,且不会对敏感信息进行脱敏,可通过filter函数自行定义输出的SQL内容。日志功能是psycopg2为了方便开发者显性调试全量SQL而提供的额外功能,默认情况下不需要使用。该功能会在pyscopg2执行SQL语句前打印 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0251.md): libpq接口参考提供给用户一套数据库C语言客户端开发所需的核心API函数。这些函数按功能分类组织,涵盖了从连接建立、SQL执行、异步处理到结果集处理的完整开发流程。开发者可根据实际需求查阅对应分类,快速定位所需函数。当前不支持通过libpq调用PQfn接口;本节将对部分常用接口做具体描述,若涉及其他接口可参考链接。libpq接口参考共分 - [psycopg2.connect()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0253.md): 创建数据库连接,并返回connection对象。connection对象(连接数据库实例的对象)。请参见数据库建连、执行SQL并返回结果。 - [connection.cursor()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0254.md): 创建一个数据库游标对象,用于在数据库中执行SQL命令、管理查询结果和控制事务。cursor对象。请参见数据库建连、执行SQL并返回结果。 - [cursor.execute(query,vars_list)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0255.md): 执行被参数化的SQL语句。psycopg2模块支持用%s标志的占位符。无请参见数据库建连、执行SQL并返回结果。 - [cursor.executemany(query,vars_list)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0256.md): 执行多次相同SQL语句,特别适用于需要批量插入数据的情况。无请参见数据库建连、执行SQL并返回结果。 - [connection.commit()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0257.md): 提交当前事务,将所有未保存的数据库操作(如INSERT、UPDATE、DELETE)永久保存到数据库中,并结束当前事务。以下是详细说明:持久化更改:自上次提交或回滚后,所有通过该连接执行的数据修改操作会被永久写入数据库。结束事务:提交后,当前事务终止。后续操作将属于新事务,新事务需再次提交才能生效。持久化更改:自上次提交或回滚后,所有通过 - [connection.rollback()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0258.md): 回滚当前事务,撤销所有未提交的更改,确保数据的一致性。无无请参见数据库建连、执行SQL并返回结果。 - [cursor.fetchone()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0259.md): 获取单行数据:执行SQL查询后,调用fetchone()会返回结果集的下一行数据(以元组形式),未读取数据时首次调用返回第一行。无数据时返回None:当所有行均被读取后,再次调用会返回None,表示结果集已耗尽。游标控制:每次调用fetchone()会使游标向前移动一行,按顺序遍历结果。无单个元组,为结果集的第一条结果。如果结果集中没有数 - [cursor.fetchall()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0260.md): 获取查询结果的所有(剩余)行,并将它们作为元组列表返回,适用于结果集较小的情况。场景1:假设有一个查询返回了5条记录,调用cursor.fetchall()会得到一个包含这5个元组的列表。每个元组对应一行数据,字段按查询顺序排列。场景2:假设有一个查询返回了5条记录,先调用fetchone()会返回结果集的第一行数据,游标向前移动一行。然 - [cursor.close()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0261.md): 关闭当前连接的游标。无无请参见数据库建连、执行SQL并返回结果。 - [connection.close()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0262.md): 关闭数据库连接。此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。无无请参见数据库建连、执行SQL并返回结果。 - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0263.md): Go驱动应用开发流程依赖于Go原生的database/sql包和GaussDB开发的driver驱动,database/sql包提供用户使用的标准接口,GaussDB实现需要被database/sql包调用的接口。Go开发应用程序的流程可分为环境准备、连接数据库、执行SQL语句、处理结果集、关闭连接,开发流程如图1所示。 - [环境准备](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0265.md): 下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。F=$(echo DBS-GaussDB-driver*.tar.gz);echo - [连接参数参考](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0267.md): Go驱动的常用连接参数,如表1所示。Go驱动可以通过以下方式获取连接参数配置值,分别为:DSN/URL连接串(显式指定)环境变量[PGXX](部分参数可通过环境变量来指定,详见表1)默认值连接参数配置值的生效优先级:DSN/URL连接串 > 环境变量[PGXX] > 默认值。以配置连接参数中的端口号为例:创建数据库连接对象时,端口号优先从 - [以非加密方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0268.md): 使用Go驱动开发时,配置连接参数并生成连接串,再调用Golang中database/sql的sql.Open()接口创建一个新的SQL数据库连接对象,sql.Open()并不会立即建立数据库连接,实际建立连接是在第一次进行数据库操作(如查询或db.Ping())时才建立。可以通过调用Go sql的标准接口db.Ping()检查数据库连接是 - [以SSL方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0269.md): 应用程序通过Go驱动连接GaussDB数据库时,可以开启SSL加密客户端和服务端之间的通讯。当开启SSL加密模式时,Go驱动默认执行TLS 1.3标准协议,支持SSL加密模式最低为TLS 1.2标准协议。本小节主要介绍如何采用SSL方式对客户端进行配置。已经获取服务端所需要的证书和私钥文件,并完成服务端配置;同时已经获取客户端所需要的cl - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0270.md): type DB的Exec类方法用于执行不返回结果集的SQL语句,比如CREATE TABLE、INSERT、UPDATE、DELETE等DDL和DML语句。Query类方法用于执行SELECT查询语句。以下给出Exec方法使用的一个示例(完整示例请参考示例一)。前提条件:已经连接数据库,连接对象为db。调用Exec方法向testExec表 - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0271.md): 执行SELECT语句查询数据后,可以使用type Rows接口和type Row接口对数据结果集进行处理。type Row接口用于处理单行结果,提供(r *Row)Scan(dest ...interface{})方法将数据扫描到指定的变量。type Rows接口用于处理多行结果,提供遍历方法(rs *Rows)Next()和数据扫描方法 - [关闭数据库连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0272.md): 操作完成后,可以使用(db *DB)Close()方法关闭数据库连接。假设连接句柄为db,则关闭数据库连接的操作如下: - [典型应用开发示例](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0273.md): 本章节的示例演示连接数据库、建表、插入数据并返回结果的常规操作。示例一以单ip:port为例,示例二以多ip:port为例。示例运行结果如下:示例运行结果如下: - [type DB](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0275.md): type DB接口是database/sql包中的核心接口之一,它定义了一系列的方法,用于执行SQL查询、事务管理等操作,如表1所示。Query类方法Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()类方法执行,若非查询语句通 - [type Stmt](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0276.md): type Stmt接口主要用于预编译SQL语句,常用方法如表1所示。Query类方法Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()类方法执行,若非查询语句通过Query类方法执行,则执行结果可能与预期不符,因此不建议使用Q - [type Tx](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0277.md): type Tx接口定义了一系列方法,用于管理数据库事务,常用方法如表1所示。Query类方法Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()类方法执行,若非查询语句通过Query类方法执行,则执行结果可能与预期不符,因此不建 - [type Rows](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0278.md): type Rows接口用于处理多行结果,提供遍历和数据扫描等方法,如表1所示。 - [type Row](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0279.md): type Row接口用于处理单行结果,提供数据扫描等方法,如表1所示。 - [type ColumnType](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0280.md): type ColumnType接口主要用于描述数据库表中的列类型信息,常用方法如表1所示。 - [type Result](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0281.md): type Result接口主要用于表示执行SQL语句后的结果,常用方法如表1所示。 - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0282.md): ecpg整体开发流程图如图1所示。包括准备ecpg开发相关组件、嵌入式SQL-C程序开发、预处理嵌入式SQL-C程序、编译C程序、执行C程序。其中嵌入式SQL-C程序开发流程图如图2所示。包括预处理配置、声明宿主变量、管理数据库连接、执行SQL语句、处理结果集、关闭连接。 - [准备ecpg开发相关组件](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0283.md): 进行ecpg应用程序开发前,需确保开发环境已正确配置GaussDB客户端组件及编译工具链。ecpg的开发依赖于特定的预处理器、动态链接库及头文件。核心组件的使用路径及编译引用规则如下表所示:编译预处理工具准备:ecpg开发需要GCC(GNU Compiler Collection)编译器进行编译,建议使用7.3.0版本。ecpg客户端工具 - [核心概念简介](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0285.md): 嵌入式SQL-C程序开发,是指利用ecpg预编译器,在标准的C语言代码中直接插入SQL语句的编程方法。通过这种方式,开发者可以在单一源文件中,结合C语言的过程控制能力与SQL的数据处理能力,高效构建数据库应用程序。在开始编写具体的嵌入式代码之前,了解以下基础概念将有助于您更好地组织程序:在嵌入式开发中,您的源码(.pgc)实际上要经历两道 - [声明宿主变量](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0286.md): 宿主变量是C程序与SQL交互的桥梁,必须在特定代码块中声明。语法如下:声明区域以下面的代码开始:EXEC SQL BEGIN DECLARE SECTION;以下面的代码结束:EXEC SQL END DECLARE SECTION;在此之间,必须有常规的C语言变量声明,比如:int x = 4; char foo[16], bar - [管理数据库连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0287.md): 使用如下语句连接数据库:target可以通过如下方法声明,斜体部分为变量,请根据实际情况进行修改:dbname[@hostname][:port]tcp:gaussdb://hostname1[:port1],hostname2[:port2],hostname3[:port3]...[/dbname][?options]unix:gau - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0288.md): 嵌入式SQL-C程序支持直接执行静态SQL语句(如SELECT、INSERT),也支持执行动态SQL语句。动态SQL语句详情请参考执行动态SQL语句。本节主要介绍执行静态SQL语句。静态SQL语句执行步骤如下:通过INTO关键字将查询结果直接映射到绑定的宿主变量中。完整使用示例如下:前提条件:需要提前创建testdb数据库。运行结果如下( - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0289.md): 返回单行结果的SELECT语句可以直接使用EXEC SQL执行,请参见执行SQL语句章节。示例:/* 首先建立一个表并插入数据 */ EXEC SQL CREATE TABLE test_table (number1 integer, number2 integer); EXEC SQL INSERT INTO test_table (n - [关闭连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0290.md): 业务逻辑处理完毕后,必须显式关闭数据库连接以释放底层资源,防止服务端连接泄露。使用如下语句关闭连接:EXEC SQL DISCONNECT [connection];根据不同的并发或多实例管理需求,[connection]参数可采用以下四种方式进行声明:connection-name(指定连接名):精确关闭已命名的特定数据库连接。defa - [ALLOCATE DESCRIPTOR](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0292.md): 分配一个新命名的SQL描述符区域。nameSQL描述符名称。大小写敏感,是一个SQL标识或者一个宿主变量。DEALLOCATE DESCRIPTOR,GET DESCRIPTOR,SET DESCRIPTOR - [CONNECT](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0293.md): 在客户端和SQL服务器之间建立连接。connection_target以下形式指定连接的目标服务器:[ database_name ] [ @host ] [ :port ]:通过TCP/IP连接。unix:gaussdb://host [ :port ] / [ database_name ] [ ?connection_option - [DEALLOCATE DESCRIPTOR](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0294.md): 释放SQL描述符区域。nameSQL描述符名称。大小写敏感,是一个SQL标识符或一个宿主变量。ALLOCATE DESCRIPTOR,GET DESCRIPTOR,SET DESCRIPTOR - [DECLARE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0295.md): 声明一个游标用于迭代预备语句的结果集。该命令与内核SQL命令的DECLARE在语义上略有不同,后者执行查询并准备结果集以便检索,而嵌入式SQL命令只是将一个名称声明为“循环变量”并用于在查询的结果集上迭代,实际在使用OPEN命令打开游标时执行。cursor_name游标名称,大小写敏感。可以是一个SQL标识符或者一个宿主变量。游标名称,大 - [DESCRIBE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0296.md): 检索预准备语句中包含的结果列的元数据信息。prepared_name预备语句名称。可以是一个SQL标识符或者宿主变量。预备语句名称。可以是一个SQL标识符或者宿主变量。descriptor_name描述符名称。大小写敏感,可以是一个SQL标识符或者一个宿主变量。描述符名称。大小写敏感,可以是一个SQL标识符或者一个宿主变量。sqlda_n - [DISCONNECT](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0297.md): 关闭一个或所有的数据库连接。connection_name由CONNECT命令建立的数据库连接名称。由CONNECT命令建立的数据库连接名称。CURRENT关闭当前连接,它可以是最近打开的连接或者是由SET CONNECTION命令设置的连接。如果没有参数被传入给DISCONNECT命令,当前链接则会作为默认值被关闭。关闭当前连接,它可以 - [EXECUTE IMMEDIATE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0298.md): 预备并且执行动态指定的SQL语句,不检索结果行。string包含要被执行的SQL语句的C字符串或者宿主变量。使用EXECUTE IMMEDIATE和名为command的宿主变量执行INSERT语句:sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: - [GET DESCRIPTOR](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0299.md): 检索查询结果集的信息,并且将它存储到宿主变量中。在使用该命令将信息传递给宿主语言变量之前通常使用FETCH或者SELECT填充标识符区域。该命令有两种形式:检索描述符的“头部”项,适用于全面查看结果集。列号作为附加参数,检索特定列的信息。检索描述符的“头部”项,适用于全面查看结果集。列号作为附加参数,检索特定列的信息。descriptor - [OPEN](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0300.md): 打开一个游标,并将实际值选择性地绑定到游标声明中的占位符。该游标必须事先使用DECLARE命令声明过。执行OPEN命令会在服务器上执行查询。cursor_name被打开的游标的名称。可以是一个SQL标识符或者一个宿主变量。被打开的游标的名称。可以是一个SQL标识符或者一个宿主变量。value被绑定到游标中一个占位符的值。可以是一个SQL常 - [PREPARE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0301.md): 准备用于执行的语句。name预备查询标识符。预备查询标识符。string动态构造的SQL语句,可以是C字符串或宿主变量。动态构造的SQL语句,可以是C字符串或宿主变量。ecpg提供的prepare语句不直接等同于内核提供的prepare语法,举例如下:GaussDB内核语法:PREPARE name [ ( data_type [, .. - [SET AUTOCOMMIT](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0302.md): 设置当前数据库会话的自动提交行为。默认情况下,嵌入式SQL程序不自动提交,因此需要显式地发出COMMIT。该命令可以把会话改成自动提交模式,使每一个单独的语句都会被隐式提交。 - [SET CONNECTION](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0303.md): 设置一个数据库连接。connection_name通过CONNECT命令创建数据库连接名字。CONNECT,DISCONNECT - [SET DESCRIPTOR](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0304.md): 在SQL描述符区域中设置信息,描述符区域通常用于绑定预备查询执行中的参数。该命令有两种功能:用于描述符头部,它独立于特定的数据。为由数字标识的特定数据赋值。用于描述符头部,它独立于特定的数据。为由数字标识的特定数据赋值。descriptor_name描述符名称。描述符名称。descriptor_header_item标记识别设置的头部信息 - [TYPE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0305.md): 定义一个新的数据类型。当运行带有-c选项的ecpg时,仅标识该命令。type_name数据类型名称。数据类型名称。ctypeC语言数据类型。C语言数据类型。使用EXEC SQL TYPE的示例前提条件:示例在ecpg预处理阶段需要添加-c参数,并且需要提前创建testdb数据库。#include #include < - [VAR](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0306.md): 将新的C语言数据类型分配给宿主变量。宿主变量必须预先在声明段声明。对于VAR的用法需要谨慎。使用VAR语句后数据类型的变化可能会导致内存地址无效,从而导致数据变量无效,出现无法成功赋值的场景。若在宿主变量声明段中确定好数据类型,则无须使用VAR语句。varnameC语言变量名称。C语言变量名称。ctypeC语言类型说明。C语言类型说明。 - [WHENEVER](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0307.md): 定义一个行为,它会在SQL执行异常时(行未找到、SQL告警或错误)被调用。SQLERROR当SQL语句执行期间发生错误时,调用指定操作。当SQL语句执行期间发生错误时,调用指定操作。SQLWARNING当SQL语句执行期间发生告警时,调用指定操作。当SQL语句执行期间发生告警时,调用指定操作。NOT FOUND当SQL语句检索或者影响为零 - [ecpg预处理器](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0308.md): 已准备嵌入式SQL-C源程序,以.pgc为后缀名,ecpg负责将其转换成可被编译器编译的C语言程序。生成的C语言程序使用gcc命令编译为可执行文件,运行该可执行文件实现客户端程序访问数据库。嵌入式SQL-C程序开发中,通常需要包含以下几个头文件:其中,sqlca是SQL通信区(SQL Communication Area),用于存储SQL - [创建表、插入数据并查询](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0310.md): 前提条件:需要提前创建testdb数据库。在数据库连接过程中,若连接语句中指定了ip-port,则必须指定username/password,该规则由GaussDB内核通信认证所决定。若不指定ip-port,则通过本地$PGPORT(UDS协议)进行通信。以下介绍几种常用连接数据库的方式(详情请参考管理数据库连接,CONNECT):此示例 - [日期、时间戳与区间解析](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0311.md): 此示例使用库函数对时间和日期类型进行不同操作。具体使用方式请参见使用库函数章节。运行结果如下: - [解析、运算数值类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0312.md): 此示例使用pgtypes库函数对numeric类型进行不同操作。#include #include #include #include #include char* nums[] = { "2E3 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0314.md): ecpg接口参考主要介绍pgtypes库提供的用户在嵌入式SQL-C源码程序中可使用的数据类型相关接口。pgtypes库将SQL数据类型映射到C语言数据类型,并提供一些接口实现其基本功能和运算。 - [区间类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0315.md): 表1列出了ecpg提供的区间类型(interval)数据的常用接口:请参见典型应用开发示例章节。 - [数值类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0316.md): 表1列出了ecpg提供的数值类型(numeric/decimal)数据的常用接口:请参见典型应用开发示例章节。 - [日期类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0317.md): 表1列出了ecpg提供的日期类型(date)数据的常用接口:请参见典型应用开发示例章节。 - [时间戳类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0318.md): 表1列出了ecpg提供的时间戳(timestamp)数据的常用接口:请参见典型应用开发示例章节。 - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0320.md): GaussDB仅在M-Compatibility兼容模式下,支持基于pymysql进行应用程序的开发。GaussDB基于pymysql开发的开发流程如图1所示。pymysql与M-Compatibility数据库交互流程如图2所示。 - [开发步骤](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0321.md): 注:操作前需按照创建好数据库和用户。在创建数据库连接之前,需要先import pymysql。import pymysql非SSL方式连接数据库:使用pymysql.connect函数获得connection对象。使用connection对象创建cursor对象。SSL方式连接数据库(tls版本1.2及以上):用户通过pymysql连接 - [示例:常用操作](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0322.md): 用户使用SSL远程连接到数据库节点时,需要使用sha256的认证方式,并需要使用有效的CA根证书、服务器公私钥、客户端公私钥。示例中出现的IP、端口、对象名称等变量仅为示例正常演示,请根据实际业务环境信息进行自行修改。pymysql常用连接方式 - [pymysql.connect()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0324.md): 此方法创建新的数据库会话并返回新的Connection对象。Connection对象(连接数据库实例的对象)。请参见示例:常用操作。 - [connection.cursor()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0325.md): 此方法用于返回新的Cursor对象。Cursor对象(用于整个数据库使用Python编程的cursor)。请参见示例:常用操作。 - [cursor.execute(query, args)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0326.md): 此方法执行被参数化的SQL语句(即占位符,而不是SQL文字)。无。cursor.execute(query,args),query一次只输入SQL语句,禁止多条SQL堆叠输入。cursor.execute(query,args),输入的SQL语句中禁止使用\0。请参见示例:常用操作。 - [cursor.executemany(query,args)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0327.md): 此方法可以执行多条被参数化的SQL语句。无。cursor.executemany(query,args),输入的SQL语句中禁止使用\0。请参见示例:常用操作。 - [connection.begin()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0328.md): 此方法将开启一个事务。默认情况下,不调用begin(),pymysql也会在执行第一个命令之前打开一个事务。begin() 方法提供了手动控制事务的能力。无。无。请参见示例:常用操作。 - [connection.commit()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0329.md): 此方法将当前挂起的事务提交到数据库。默认情况下,pymysql在执行第一个命令之前打开一个事务:如果不调用commit(),任何数据操作的效果都将丢失。无。无。请参见示例:常用操作。 - [connection.rollback()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0330.md): 此方法回滚当前挂起事务。执行关闭连接“close()”而不先提交更改“commit()”将导致执行隐式回滚。无。无。请参见示例:常用操作。 - [cursor.fetchone()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0331.md): 此方法提取查询结果集的下一行,并返回一个元组。无。单个元组,为结果集的第一条结果,当没有更多数据可用时,返回为“None”。请参见示例:常用操作。 - [cursor.fetchall()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0332.md): 此方法获取查询结果的所有(剩余)行,并将它们作为元组列表返回。无。元组列表,为结果集的所有结果。空行时则返回空列表。请参见示例:常用操作。 - [cursor.fetchmany(size=None)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0333.md): 此方法返回一个包含多行数据的列表,每行数据通常表示为一个元组或类似结构的对象。如果指定了 size 参数,返回的列表将包含指定数量的行;如果未指定 size 参数,则返回尽可能多的行,直到结果集耗尽。元组列表。请参见示例:常用操作。 - [cursor.close()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0334.md): 此方法关闭当前连接的游标。无。无。请参见示例:常用操作。 - [connection.close()](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0335.md): 此方法关闭数据库连接。此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。M-Compatibility数据库不支持connection.kill(thread_id)接口。无。无。请参见示例:常用操作。 - [connection.ping(reconnect = True)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0336.md): 用于检测数据库连接是否可用。如果连接断开或不可用,根据参数设置决定是否重新连接。如果重连失败则报错。无。请参见示例:常用操作。 - [connection.select_db(dbname)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0337.md): 切换了当前活动的数据库。无。请参见示例:常用操作。 - [connection.set_character_set(charset, collation=None)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0338.md): 用于设置数据库连接的字符集和字符序。客户端和服务端的字符集需保持一致,否则会报错。无。请参见示例:常用操作。 - [connection.autocommit(arg)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0339.md): 启用或关闭数据库连接的自动提交功能。通过pymysql连接时,默认情况下,自动提交功能为关闭状态,可以使用connection.autocommit(arg)方法启用或关闭。arg:启用或关闭数据库连接的自动提交功能,参数取值为True或False。无 - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0341.md): GaussDB的M-Compatibility模式数据库支持基于MySQL JDBC的开发。开发流程如图1所示。 - [环境准备](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0343.md): 从MySQL官方网站下载MySQL Connector/J驱动,如:mysql-connector-java-5.1.49.jar(本章节示例均以此版本驱动为例)。支持的MySQL Connector/J版本5.1.47版本及以后。安装准备:客户端需配置JDK1.8软件包。JDK支持Windows、Linux等多种平台。下面以Window - [加载驱动](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0345.md): 在创建数据库连接之前,需要先加载数据库驱动程序“com.mysql.jdbc.Driver”。加载驱动有以下方法:在代码中创建连接之前,在任意位置隐含装载:Class.forName("com.mysql.jdbc.Driver");。在JVM启动时参数传递:java -Djdbc.drivers=com.mysql.jdbc.Drive - [数据库连接参数](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0346.md): JDBC提供了三个方法,用于创建数据库连接。DriverManager.getConnection(String url)。DriverManager.getConnection(String url, Properties info)。DriverManager.getConnection(String url, String user - [以常规方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0347.md): 以下2个示例分别采用DriverManager.getConnection(String url, String user, String password)和DriverManager.getConnection(String url, Properties info)方法,以不加密方式(即常规方式)创建数据库连接。示例1:连接数据库示 - [以SSL方式连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0348.md): 用户通过JDBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯,为敏感数据在Internet上的传输提供一种安全保障手段。本节主要介绍应用程序通过JDBC如何采用SSL的方式对客户端进行配置(服务端配置请联系管理员)。在使用本节所描述的方法前,默认用户已经获取了服务端和客户端所需要的证书和私钥文件。关于证书生成 - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0349.md): 应用程序通过执行SQL语句来操作数据库的数据(不用传递参数的语句),需要按以下步骤执行。支持对XML类型数据进行SELECT、UPDATE、INSERT、DELETE等操作。预编译语句是只编译和优化一次,可以通过设置不同的参数值多次使用。由于已经预先编译好,后续使用会减少执行时间。因此,如果多次执行一条语句,请选择使用预编译语句。可以按以 - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0350.md): 不同类型的结果集有各自的应用场景,应用程序需要根据实际情况选择相应的结果集类型。在执行SQL语句过程中,需要先创建相应的语句对象,而部分创建语句对象的方法提供了设置结果集类型的功能。具体的参数设置如表1所示。涉及的Connection的方法如下:ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前,next方法将光 - [关闭数据库连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0351.md): 在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。关闭数据库连接可以直接调用close方法。 - [常用操作示例](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0353.md): 此示例将演示如何基于GaussDB提供的JDBC接口开发应用程序。执行示例前,需要先加载驱动,驱动加载方法请参见加载驱动。上述示例的运行结果为:此示例主要使用setFetchSize调整客户端内存使用,原理是通过数据库游标来分批获取服务端数据,但会加大网络交互,可能会损失部分性能。由于游标事务内有效,故需要先关闭自动提交,最后执行手动提交 - [java.sql.Connection](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0355.md): java.sql.Connection是数据库连接接口,具体信息如表1所示。使用MySQL JDBC驱动连接数据库时,当调用setAutoCommit(false)后,若事务中的任一SQL语句执行失败,该事务将进入中止状态。此时须先显式调用rollback()以终止当前事务,才能使连接恢复到可正常使用的状态。如果未执行rollback() - [java.sql.DatabaseMetaData](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0356.md): java.sql.DatabaseMetaData是数据库对象定义接口,具体信息如表1所示。 - [java.sql.PreparedStatement](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0357.md): java.sql.PreparedStatement是预处理语句接口,具体信息如表1所示。setBinaryStream()方法需要为GUC参数m_format_behavior_compat_options设置enable_escape_string选项,避免因无法识别转义字符而出现异常。 - [java.sql.ResultSet](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0358.md): java.sql.ResultSet是执行结果集接口,具体信息如表1所示。 - [java.sql.ResultSetMetaData](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0359.md): java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述,具体信息如表1所示。 - [java.sql.Statement](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0360.md): java.sql.Statement是SQL语句接口,具体信息如表1所示。 - [兼容性参考](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0361.md): 数据库的Go驱动当前不适配业界成熟ORM框架(比如xorm)。在创建数据库连接时传入的驱动名称兼容“opengauss”、“postgres”、“postgresql”。设置环境变量GOENV_REGIST_ALL为false后,支持GaussDB的Go驱动与PG的Go驱动并存;若环境变量GOENV_REGIST_ALL缺省或设置为tru - [数据类型映射关系](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0364.md): 数据类型、JAVA变量类型以及JDBC类型索引关系如表1所示。A:Oracle,B:MySQL,M:M-Compatibility。非透明多写特性下,兼容Oracle/MySQL/M-Compatibility。 - [数据类型转换规则](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0365.md): 数据类型、JAVA变量类型以及JDBC类型索引关系如表1所示。非透明多写特性下,兼容A/B/M/PG。发送到服务端的类型非最终存储到数据库表中的类型,下表中发送到数据库的类型对应到数据库表中的类型请参见《参考》中“SQL参考 > 类型转换 > 值存储”章节,其中的类型转换规则同样适用于B/M/PG兼容模式。JDBC连接参数详情请参见连接参 - [日志管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0366.md): GaussDB JDBC驱动程序支持使用日志记录来帮助解决在应用程序中使用GaussDB JDBC驱动程序时遇到的问题。GaussDB JDBC支持如下两种日志管理方式:对接应用程序使用的SLF4J日志框架。对接应用程序使用的JdkLogger日志框架。SLF4J和JdkLogger是业界Java应用程序日志管理的主流框架,描述应用程序如 - [batchMode设置错误](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0368.md): 设置参数batchMode=on且reWriteBatchedInserts=true,使用JDBC批量插入数据后,提示绑定参数数量与语句需要的参数数量不一致:示例:// conn是已经创建的Connection对象,创建该connection的url连接串包含batchMode=on&reWriteBatchedInserts=true - [Hibernate框架插入数据开启校验时报错](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0369.md): 客户从A模式数据库迁移到GaussDB数据库,表结构使用DRS工具进行迁移,迁移后客户原业务代码不可用,Hibernate框架校验表结构报错。示例:原A模式数据库中Student表结构为如下格式:id number(15,0) sid number(15,0) age number(10,0)使用DRS工具迁移到GaussDB数据库后,S - [使用SSL方式建连报错或阻塞](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0370.md): JDBC使用SSL方式建立连接时,会在客户端获取强随机数,建立连接过程中可能出现以下现象:场景1:如果连接串中配置了loginTimeout,可能会报Connection attempt timed out。场景2:如果连接串中不配置loginTimeout,可能会建连阻塞,通过JDK命令jstack 查询到的阻塞栈如下图所示。 - [配置参数说明](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0372.md): 本章节对odbc.ini文件配置参数进行详细说明,参见表1:用户通过ODBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。 - [连接参数说明](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0374.md): libpq的所有连接参数统一以字符串形式构造和传递,无论参数类型是主机名、端口、密码还是布尔选项。具体参数及其描述如下表所示:配置以上连接参数时,建议配置合法值,如果配置非法值,可能导致建立连接失败或者实际生效值为默认值。驱动与数据库建立连接过程中,Socket(套接字)建立之后,由驱动以key value形式向数据库发送的第一个报文为首 - [预备语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0376.md): 当SQL语句的条件参数在编译期未知,或该语句在业务逻辑中需要被高频重复执行时,建议使用预备语句机制。此机制可显著提升执行效率并防止SQL注入。使用命令PREPARE准备语句。对于对于运行期才确定的动态值使用占位符“?”:EXEC SQL PREPARE stmt1 FROM "SELECT oid, datname FROM pg_dat - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0378.md): 本节旨在详细介绍如何在C语言程序与嵌入式SQL语句之间,利用宿主变量实现高效、安全的数据传递。在嵌入式SQL-C程序中,C语言被视为宿主语言。凡是定义在C代码中并在EXEC SQL语句里被引用的变量,统称为宿主变量。它们是打通C语言内存空间与数据库内核数据之间的核心媒介。数据交互的本质是C语言原生数据类型与GaussDB数据类型之间的匹配 - [声明段](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0379.md): 要在嵌入式SQL-C程序与数据库之间实现数据的双向传递(例如将C程序的参数传递给SQL语句,或将查询结果回传给C程序),必须在特定的声明段中定义相关的C语言变量。这一段代码的核心作用是告知ecpg预处理器哪些变量将被用于SQL交互,以便预处理器能够准确识别这些变量的内存地址与数据类型。声明段必须由EXEC SQL BEGIN DECLAR - [检索查询](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0380.md): 对于常用的检索查询,嵌入式SQL提供了常规命令SELECT和FETCH的特殊变体。这些命令使用特殊的INTO子句,用以指定检索出来的数值存储在哪些宿主变量里。SELECT用于返回单行的查询,FETCH用于使用游标返回多行的查询。使用SELECT/* * 假设已存在表test: * CREATE TABLE test (a in - [数据类型映射](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0381.md): 当ecpg应用程序在GaussDB服务器和C语言程序之间交换值时(例如:从服务器检索查询结果或者执行带有输入参数的SQL语句),在GaussDB数据类型和宿主语言变量类型(具体的C语言数据类型)之间需要进行值的转换。有两种数据类型可以使用:简单的GaussDB数据类型,如integer和text,可以直接被应用程序读取和写入。其他Gaus - [处理字符串](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0382.md): 处理SQL字符串数据类型(例如:varchar、text),有两种方式来声明宿主变量:使用char[](一个char字符串),该方式是C语言程序中处理字符数据最常见的方式。EXEC SQL BEGIN DECLARE SECTION; char str[50]; EXEC SQL END DECLARE SECTION;注意字符串 - [使用非初级类型的宿主变量](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0383.md): 非初级类型的宿主变量包括数组、typedef、结构体和指针类型的宿主变量。有两种将数组作为宿主变量的情况。在char[]或者VARCHAR[]中存储文本字符串。在检索多行查询结果时不使用游标。如果不使用数组,则处理多行查询结果时必须使用游标以及FETCH命令。但是如果使用数组类型作为宿主变量,则一次可以检索多行。数组长度需能容纳查询结果的 - [访问特殊数据类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0384.md): ecpg支持numeric、decimal、date、timestamp和interval数据类型。由于这些数据类型的内部结构较为复杂,无法被映射到初级数据类型的宿主变量,因此应用程序通过声明特殊类型的宿主变量,以及使用pgtypes库中的函数来处理这些特殊类型。pgtypes库中的接口函数请参见ecpg接口参考章节。timestamp、 - [处理非初级SQL数据类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0385.md): 本节介绍如何处理ecpg应用中的非标量以及用户定义的SQL级别的数据类型。注意此处和使用非初级类型的宿主变量章节中介绍的对于非初级类型的宿主变量的处理不同。数组ecpg不直接支持多维SQL级别数组。一维SQL数组可以被映射到C语言数组类型的宿主变量。但是在创建语句时,如果ecpg无法识别列的类型,则将无法检查C语言数组是否是SQL数组的输 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0387.md): 在大多数情况下,应用程序执行的SQL语句在编写应用程序时必须是已知的。但是在某些情况下,SQL语句是在运行时进行构造或由外部提供的。这种情况下不能将SQL语句直接嵌入到C语言源代码中,但是动态SQL语句支持通过一个字符串变量调用所提供的SQL语句。 - [执行没有结果集的语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0388.md): 执行EXECUTE IMMEDIATE命令示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "CREATE TABLE test1 (...);"; EXEC SQL END DECLARE SECTION; EXEC SQL EXECUTE IMMED - [执行具有输入参数的语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0389.md): 准备一个包含问号“?”作为参数占位符的SQL语句。使用EXECUTE语句和USING子句来执行该语句并传递参数。示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "INSERT INTO test1 VALUES(?, ?);"; EXEC SQL END DE - [执行带有结果集的语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0390.md): 执行具有单独结果集的SQL语句,可以使用EXECUTE。若要保存结果,则需要额外使用INTO子句。示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "SELECT a, b, c FROM test1 WHERE a > ?"; int v1, v2; - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0392.md): 有两种非互斥的方法可以处理嵌入式SQL程序的异常情况和告警:使用WHENEVER命令设置回调,处理告警和错误。参见设置回调。通过sqlca获取错误或者告警的详细信息,进行相应处理。参见sqlca。使用WHENEVER命令设置回调,处理告警和错误。参见设置回调。通过sqlca获取错误或者告警的详细信息,进行相应处理。参见sqlca。 - [设置回调](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0393.md): 当告警或者错误发生时,直接执行具体操作进行处理,设置回调命令如下:EXEC SQL WHENEVER condition action;condition取值范围:SQLERROR:当在SQL语句执行期间发生错误时,调用指定操作。SQLWARNING:当在SQL语句执行期间发生告警时,调用指定操作。NOT FOUND:当SQL语句检索或者 - [sqlca](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0394.md): 嵌入式SQL接口提供了sqlca(SQL通信区)的全局变量。sqlca包含告警和错误信息。如果在语句执行期间发生多个告警和错误,那么sqlca只保存最后一个信息。在一个多线程的程序中,每一个线程会自动得到它的sqlca副本。数据结构如下:struct { char sqlcaid[8]; long sqlabc; - [SQLSTATE与SQLCODE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0395.md): SQLSTATE是一个由五个字符组成的数组。这五个字符包含数字或大写字母,它表示多种错误或告警情况的代码。SQLSTATE具有一种层次模式:前两个字符表示情况的总体分类,后三个字符表示总体情况的子类。例如:代码00000表示成功状态SQLCODE以整数的形式反映SQL语句的执行状态。具体而言:零值标志着操作的成功执行;正值通常指示成功但伴 - [使用库函数](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0396.md): 若函数第一个参数为非0,则开启调试日志,第二个参数表示要打印日志的标准输出流。调试日志在标准输出流上执行,日志包含所有输入的SQL语句以及来自GaussDB服务器的结果。示例:运行结果如下([23893]为线程ID,随机生成):返回由给定名称标识的数据库连接句柄。如果connection_name设置为NULL,则返回当前连接句柄。如果没 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0398.md): SQL描述符区域是一种处理SELECT、FETCH或者DESCRIBE语句结果的高级方法。SQL描述符区域把一行数据里的数据和元数据项组合到一个数据结构中。ecpg提供了两种使用描述符区域的方法:命名SQL描述符区域和SQLDA。 - [命名SQL描述符区域](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0399.md): 一个命名SQL描述符区域由一个头部以及一个或多个条目描述符区域构成。头部包含与整个描述区域相关的信息,而条目描述符区域则描述结果行中的某一列。在使用SQL描述符区域之前,需要分配一个SQL描述符区域:EXEC SQL ALLOCATE DESCRIPTOR identifier;当不再需要这个描述符区域时,应及时释放:EXEC SQL D - [SQLDA](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0400.md): SQLDA(SQL Descriptor Area)是一个C语言结构体,用于动态处理SQL查询的结果集或输入参数。它允许程序在运行时处理未知数量和类型的列或参数。EXEC SQL include sqlda.h; sqlda_t *mysqlda; EXEC SQL FETCH 3 FROM mycursor INT - [ecpg与Pro*C兼容性对比](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0401.md): ecpg是GaussDB提供的一种用于C语言程序的嵌入式SQL预处理器,与A数据库Pro*C预处理器在编译执行命令、语法、嵌入式语句等行为和语义上存在差异。ecpg与Pro*C的相关使用差异对比:目前ecpg不支持EXEC SQL CONTEXT ALLOCATE、EXEC SQL CONTEXT USE、EXEC SQL CONTEXT - [日志输出相关参数介绍](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0402.md): 用户可以根据自己的需要,通过修改实例数据目录下的gaussdb.conf文件中特定的配置参数来控制日志的输出,从而更好地了解数据库的运行状态。可调整的配置参数请参见表1。上表有关参数级别的说明请参见表2。 - [PL/SQL语言函数](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0404.md): PL/SQL是一种可载入的过程语言。用PL/SQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。SQL被大多数数据库用作查询语言,它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。这意味着客户端应用对于每一个查询都要执行以下过程:发 - [规格约束](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0415.md): 非透明多写场景下,自治事务执行时,将会在后台启动自治事务session,可以通过max_concurrent_autonomous_transactions设置自治事务执行的最大并行数量,该参数取值范围为0~10000。当max_concurrent_autonomous_transactions参数设置为0时,自治事务将无法执行。在非透 - [存储过程支持自治事务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0416.md): 自治事务可以在存储过程中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建存储过程语法相同,非透明多写场景请参见《参考》中“SQL参考 > SQL语法 > C > CREATE PROCEDURE”章节,示例如下。上述例子,最后在回滚的事务块中执行包含自治事务的存储过程,直接说明了自治事务的特性,即主 - [匿名块支持自治事务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0417.md): 自治事务可以在匿名块中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建匿名块语法相同,非透明多写场景请参见《参考》中“存储过程 > 声明语法 > 匿名块”章节,示例如下。上述例子,最后在回滚的事务块前执行包含自治事务的匿名块,直接说明了自治事务的特性,即主事务的回滚不会影响自治事务已经提交的内容。 - [函数支持自治事务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0418.md): 自治事务可以在函数中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与函数语法相同,非透明多写场景请参见《参考》中“SQL参考 > SQL语法 > C > CREATE FUNCTION”章节,示例如下。上述例子,最后在回滚的事务块中执行包含自治事务的函数,也能直接说明了自治事务的特性,即主事务的回滚不会 - [Package支持自治事务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0419.md): 自治事务可以在package中的存储过程或者函数中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建package中存储过程或函数语法相同,非透明多写场景请参见《参考》中“SQL参考 > SQL语法 > C > CREATE PACKAGE”章节,示例如下。上述例子,最后在回滚的事务块中执行包含pac - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0422.md): 全量物化视图仅支持对已创建的物化视图进行全量刷新,而不支持进行增量刷新。创建全量物化视图语法和CREATE TABLE AS语法类似(详情请参见《参考》中“SQL参考 > SQL语法 > CREATE TABLE AS”章节)。 - [支持和约束](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0423.md): 通常全量物化视图所支持的查询范围与CREATE TABLE AS语句一致。全量物化视图上支持创建索引。支持analyze、explain。物化视图不支持增删改操作,只支持查询语句。Ustore引擎不支持全量物化视图的创建和使用。全量物化视图的刷新、删除过程中会给基表加7级锁(阻塞DML,DDL等),若物化视图的定义涉及多张表,需要注意业务 - [使用](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0424.md): 创建全量物化视图CREATE MATERIALIZED VIEW view_name AS query;刷新全量物化视图REFRESH MATERIALIZED VIEW view_name;删除物化视图DROP MATERIALIZED VIEW view_name;查询物化视图SELECT * FROM view_name;view_ - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0426.md): 增量物化视图可以对物化视图增量刷新,需要用户手动执行语句,刷新物化视图在一段时间内的增量数据。与全量创建物化视图的不同在于目前增量物化视图所支持场景较小。目前物化视图创建语句仅支持基表扫描语句或者UNION ALL语句。 - [支持和约束](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0427.md): 单表查询语句。多个单表查询的UNION ALL。物化视图上支持创建索引。物化视图支持Analyze操作。物化视图中不支持多表Join连接计划以及subquery计划。不支持WITH子句、GROUP BY子句、ORDER BY子句、LIMIT子句、WINDOW子句、DISTINCT算子、AGG算子,不支持除UNION ALL外的子查询。除少 - [使用](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0428.md): 创建增量物化视图CREATE INCREMENTAL MATERIALIZED VIEW view_name AS query;全量刷新物化视图REFRESH MATERIALIZED VIEW view_name;增量刷新物化视图REFRESH INCREMENTAL MATERIALIZED VIEW view_name;删除物化视图 - [密态等值查询概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0430.md): 随着企业数据上云,数据的安全隐私保护面临越来越严重的挑战。密态数据库将解决数据整个生命周期中的隐私保护问题,涵盖网络传输、数据存储以及数据运行状态;更进一步,密态数据库可以实现云化场景下的数据隐私权限分离,即实现数据拥有者和实际数据管理者的数据读取能力分离。密态等值查询将优先解决密文数据的等值类查询问题。全密态数据库使用多级加密模型,加密 - [使用gsql操作密态数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0431.md): 执行本节的SQL语句前,请确保已提前生成主密钥,并确认访问主密钥的参数。本节以完整的执行流程为例,介绍如何使用密态数据库语法,包括三个阶段:使用DDL阶段、使用DML阶段、清理阶段。注意:从keyType字符串开始,不要添加换行,不要添加空格,否则gsql工具无法识别完整参数。基于三未信安SJJ1994加密机密钥管理:使用三未信安SJJ1 - [使用JDBC操作密态数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0432.md): 获取JDBC驱动包,JDBC驱动获取及使用可参考基于JDBC开发章节。密态数据库支持的JDBC驱动包为gscejdbc.jar、gaussdbjdbc.jar、opengaussjdbc-ce.jar、gsjdbc4.jar、opengaussjdbc.jar。gscejdbc.jar(目前仅支持EulerOS操作系统):主类名为“com - [使用Go驱动操作密态数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0433.md): 执行本节的SQL语句前,请确保已提前生成主密钥,并确认访问主密钥的参数。本节以完整的执行流程为例,介绍如何使用密态数据库语法,包括三个阶段:连接阶段、使用DDL阶段、使用DML阶段。连接密态数据库需要使用Go驱动包openGauss-connector-go-pq,驱动包当前不支持在线导入,需要将解压缩后的Go驱动源码包放在本地工程,同时 - [前向兼容与安全增强](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0434.md): 在上文中,支持通过key_info设置访问外部密钥管理的参数:使用gsql时,通过元命令\key_info xxx设置。使用JDBC时,通过连接参数conn.setProperty(“key_info”, “xxx”)设置。为保持前向兼容,还支持通过环境变量等方式设置访问主密钥的参数。第一次配置使用密态数据库时,可忽略下述方法。如果以前使 - [密态支持函数/存储过程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0435.md): 密态支持函数/存储过程,当前版本只支持sql和plpgsql两种语言。 由于密态支持存储过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。函数/存储过程语法参考用户自定义函数章节和《参考》中“存储过程”章节。密态等值查询支持函数存储过程新增系统表gs_encrypted_proc,用于存储参数返回的原始数据类型。系统 - [内存解密逃生通道概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0438.md): 内存解密作为密态等值查询的一个逃生通道使用。在该逃生通道中,会将密钥传输到数据库内存中,对数据进行解密,以实现密文字段的特殊计算或查询功能,包括范围查询、排序。其他涉及密文操作、隐式或显式类型转换时,进行自动加解密。内存解密逃生通道,会将客户端密钥发送到数据库服务端内存缓存,实际的解密和数据明文运算都是在数据库内存中进行,断开连接或ses - [使用gsql操作内存解密逃生通道](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0439.md): 要开启全密态数据库的内存解密逃生通道功能,需要在使用gsql命令的时候添加-C3或--enable-client-encryption=3参数。使用gsql操作内存解密逃生通道全密态数据库需要完成密钥配置相关操作,请参见使用gsql操作密态数据库。注意:从keyType字符串开始,不要添加换行,不要添加空格,否则gsql工具无法识别完整参 - [使用JDBC驱动操作内存解密逃生通道](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0440.md): 服务端和客户端仅在GaussDB 503.1.0.SPC1200版本及以后版本支持JDBC操作内存解密逃生通道。使用JDBC驱动操作内存解密逃生通道全密态数据库需要完成配置JDBC驱动和密钥配置等相关操作,详细请参见使用JDBC操作密态数据库。全密态数据库开启内存解密逃生通道,JDBC连接需要设置enable_ce=3参数。public - [使用Go驱动操作内存解密逃生通道](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0441.md): 使用Go驱动操作内存解密逃生通道全密态数据库需要完成配置Go驱动和密钥配置等相关操作,详细请参见使用Go驱动操作密态数据库。全密态数据库开启内存解密逃生通道,Go驱动连接串需要配置enable_ce=3参数。// 以单ip:port为例,本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据 - [使用libpq_ce操作内存解密逃生通道](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0442.md): libpq_ce.so为密态特性动态库,包含libpq.so的所有内容和密态客户端解析、加密的相关功能。使用libpq_ce操作内存解密逃生通道,需要设置连接参数enable_ce=3。创建好客户端加密主密钥(CMK)和数据加密密钥(CEK)后,可以通过PQenableTrustedDomain()传输和销毁密钥。 - [明/密文数据的转换与同步](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0443.md): 开启全密态数据库的内存加密逃生通道功能,且将密钥传输到服务端内存后,支持明文数据和密文数据之间的互相转换和数据同步。可以通过ALTER TABLE语句进行明/密文数据的转换与同步,详细信息请参见《参考》中“SQL参考 > SQL语法 > A > ALTER TABLE”章节。明文数据与密文数据转换时,涉及修改列类型,需要重建数据,会对操作 - [透明数据加密](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0444.md): 透明加密提供表级数据加密存储功能。当用户使用本特性提供的语法创建加密表后,数据库向磁盘写入加密表数据前,会自动将其加密;同时,数据库从磁盘读取加密表数据后,会自动将其解密。向加密表中进行数据插入、更新、查询和删除等操作的语法与非加密表一致。使用透明加密前需先开启透明加密功能。开启操作请参见《用户指南》中的“账号和网络安全 > GaussD - [账本数据库概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0446.md): 账本数据库融合了区块链思想,将用户操作记录至两种历史表:用户历史表和全局区块表中。当用户创建防篡改用户表时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息,同时在blockchain模式下会创建一张用户历史表来记录对应用户表中每条数据的变更行为;而用户对防篡改用户表的每一次修改行为将被记录到全局区块表中。由于历史表具有 - [查看账本历史操作记录](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0447.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。只有拥有AUDITADMIN属性的用户才可以查看账本历史操作记录。有关数据库用户及创建用户的办法请参见用户章节。查询全局区块表命令是直接查询gs_global_chain表,操作为:S - [校验账本数据一致性](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0448.md): 数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。账本数据库校验功能目前提供两种校验接口,分别为:ledger_hist_check(text, text)和ledger_gchain_check(text, text)。普通用户调用校验接口,仅能校验自己有权限访问的表。校验防篡改用户 - [归档账本数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0449.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。数据库已经正确配置审计文件的存储路径audit_directory。账本数据库归档功能目前提供两种归档接口,分别为:ledger_hist_archive(text, text)和le - [修复账本数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0450.md): 系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。当在异常情况或表被损坏时,需要使用ledger_gchain_repair(text, text)接口对全局区块表进行修复,或使用ledger_hist_repair(text, te - [定义安全标签](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0452.md): 数据库正常运行,执行操作的用户需要具有SYSADMIN权限或者继承了内置角色gs_role_seclabel的权限。提供系统表gs_security_label来查看系统中已创建好的安全标签:SELECT * FROM gs_security_label;以某个实际业务应用举例说明,比如某公司的信息等级为公开、秘密和绝密,那么就可分别对应 - [应用安全标签](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0453.md): 数据库正常运行,执行操作的用户需要具有SYSADMIN权限或者继承了内置角色gs_role_seclabel的权限。提供系统表pg_seclabel来查看表或表列上的安全标签:SELECT * FROM pg_seclabel;提供系统表pg_shseclabel来查看用户/角色上的安全标签:SELECT * FROM pg_shsecl - [基于标签的强制访问控制检查](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0454.md): 数据库正常运行,强制访问控制检查开关(enable_mac_check=on)打开。执行操作的用户已具有所需要访问表的ACL权限。基于安全标签的强制访问控制策略规则由系统内置设定,用户不能更改:插入(INSERT)策略:只有主体安全标记等级小于等于客体安全标记等级且主体安全标记范围是客体安全标记范围的子集时才允许插入数据。查询(SELEC - [逻辑解码概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0457.md): 逻辑解码为逻辑复制提供事务解码的基础能力,GaussDB可以使用SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。由于逻辑日志是以事务为单位的,在事务提交后才能输出,且逻辑解码是由用户驱动的。因此,为了防止事务开始时的Xlog被系统回收,或所需的事务信息被VACUUM回收,GaussDB - [逻辑解码选项](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0458.md): 逻辑解码选项可以用来为本次逻辑解码提供限制或额外功能,如“解码结果是否包含事务号”、“解码时是否忽略空事务”等。对于具体配置方法,SQL函数解码请参考《参考》中“SQL参考 > 函数和操作符 > 系统管理函数 > 逻辑复制函数”章节中函数pg_logical_slot_peek_changes的可选入参'options_name'和'op - [使用SQL函数接口进行逻辑解码](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0459.md): GaussDB可以通过调用SQL函数,进行创建、删除、推进逻辑复制槽,获取解码后的事务日志。其中,user1为用户名,password为密码,db1为需要连接的数据库名称,16000为数据库端口号,用户可根据实际情况替换。逻辑解码选项请参见逻辑解码选项。 - [使用流式解码实现数据逻辑复制](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0460.md): 第三方复制工具通过流式逻辑解码从GaussDB抽取逻辑日志后到对端数据库回放。对于使用JDBC连接数据库的复制工具,具体代码请参考逻辑复制(非透明多写)章节。 - [逻辑解码支持DDL](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0461.md): GaussDB数据库上正常执行DDL语句,通过逻辑解码工具可以获取到DDL语句。数据库在执行DML操作的时候,存储引擎会生成对应的DML日志,用于进行恢复,对这些DML日志进行解码,即可还原对应的DML语句,生成逻辑日志。而对于DDL语句,数据库并不记录DDL原语句的日志,而是记录DDL语句涉及的系统表的DML日志。DDL种类多样、语法复 - [逻辑解码支持指定位点解码](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0462.md): 逻辑解码的串/并行解码支持对在线WAL日志的指定位点解码;指定位点为LSN,逻辑解码会从指定LSN往后找到一个一致性点(CONSISTENCY LSN),然后从一致性点开始解码并输出数据。只支持对在线WAL日志的指定位点解码。用户需要根据不同业务每天产生的WAL日志数量,来调整GaussDB保留在线WAL日志文件数量的配置参数,以达到满足 - [逻辑解码数据找回功能](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0463.md): 逻辑解码对外提供单节点DML数据找回能力,从WAL日志是否归档的角度分为在线日志找回和归档日志找回:在线数据找回:使用pg_logical_get_area_changes函数,可以在线找回相关DML数据,具体使用参考pg_logical_get_area_changes函数的使用方法。归档数据找回:OM_Agent通过pg_logica - [C/C++应用程序编译规范](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0469.md): 在C/C++应用程序开发过程中,编译器类型、语言标准及编译选项的差异,可能引入未定义行为、安全隐患和平台兼容性问题,进而影响系统稳定性和产品交付质量。本规范对C/C++应用程序的编译器选型、语言标准、编译参数、构建模式及相关管理要求作出统一规定,作为项目开发、集成、测试和交付过程中的基本遵循依据。如果需要定位C/C++应用程序中出现的内存 - [大容量数据库背景介绍](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0473.md): 随着处理数据量的日益增长和使用场景的多样化,数据库越来越多地面对容量大、数据多样化的场景。在过去20多年时间数据库业界的发展历程中,数据量从最初的MB、GB逐渐发展到现在的TB级数据量,在如此大规模、多样化的数据背景下,数据库管理系统(DBMS)在数据查询、数据管理方面提出了更高的要求,客观上要求数据库能够支持多种优化查找策略和运维管理方 - [表分区技术](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0474.md): 表分区技术(Table-Partitioning)通过将非常大的表或者索引从逻辑上切分为更小、更易管理的逻辑单元(分区),能够让用户对表查询、变更等语句操作具备更小的影响范围,能够让用户通过分区键(Partition Key)快速定位到数据所在的分区,从而避免在数据库中对大表的全量扫描,能够在不同的分区上并发进行DDL、DML操作。从用户 - [数据分区查找优化](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0475.md): 分区表在数据查找方面的优势主要体现在对分区键进行谓词查询的场景。例如,考虑一张以月份(Month)作为分区键的表,如图1所示。如果使用普通表设计,查询时需要进行全表扫描(Full Table Scan)。而如果以月份为分区键重新设计该表,全表扫描会被优化为分区扫描。当表内数据量很大且历史周期较长时,通过减少扫描的数据量,性能能够得到大幅提 - [数据分区运维管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0476.md): 数据生命周期管理(Data Life Cycle Management,DLM) 是一套贯穿数据全生命周期的管理流程与策略体系,其核心任务之一在于为不同阶段的数据匹配最适宜且经济高效的存储介质:高频访问的新数据存放于读写速度快、可用性高的存储层,而低频访问的旧数据则迁移至成本较低、性能稍弱的存储层。鉴于旧数据更新频率低,将其压缩并转为只读 - [分区表(分区母表)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0479.md): 分区表作为用户实际操作的表对象,支持常规DML(数据操作语言)的增、删、查、改操作。通常通过在建表DDL(数据定义语言)语句中显式使用PARTITION BY子句进行定义。创建成功以后在pg_class表中新增一条记录,其parttype字段值为'p'(标识一级分区)或's'(标识二级分区),以此标记该记录对应的表为分区母表。需要注意的是 - [分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0480.md): 分区是分区表中实际保存数据的表,对应的记录通常保存在pg_partition中,各分区通过parentid字段作为外键,与pg_class表中分区母表对应的OID(对象标识符)列建立关联关系。示例:t1_hash为一个一级分区表: - [分区键](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0481.md): 分区键由一个或多个列组成,分区键值结合对应分区方法能够唯一确定某一元组所在的分区,通常在建表时通过PARTITION BY语句指定:范围分区表和列表分区表支持最多16列分区键,其他分区表只支持1列分区键。 - [范围分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0483.md): 范围分区(Range Partition)依据所设定的每个分区的分区键值范围,来实现数据到各个分区的映射。在实际的生产系统里,范围分区是很常用的一种分区类型,通常在以时间维度(Date、Time Stamp)描述数据场景中使用。范围分区有两种语法格式,示例如下:VALUES LESS THAN的语法格式对于从句是VALUE LESS TH - [间隔分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0484.md): 间隔分区(Interval Partition)可以看成是范围分区的一种增强和扩展方式,相比范围分区,间隔分区定义分区时无需为新增的每个分区指定上限和下限值,只需要确定每个分区的长度,实际插入的过程中会自动进行分区的创建和扩展。间隔分区在创建初始时必须至少指定一个范围分区,范围分区键值确定范围分区的高值称为转换点,数据库为值超出该转换点的 - [哈希分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0485.md): 哈希分区(Hash Partition)是依据GaussDB内置的哈希算法,对分区键进行运算,从而实现数据到各分区的映射。在分区键取值范围不倾斜(no data skew)的场景下,哈希算法能够让数据行在各个分区之间均匀分布,进而使得各分区的大小大致保持一致,是实现分区间数据均匀分布的理想方法。哈希分区也是范围分区的一种易于使用的替代方法 - [列表分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0486.md): 列表分区(List Partition)允许用户在每个分区的描述里,为分区键指定离散值列表,从而控制数据行如何被映射到各个分区。这种分区方式的优势在于,它能以枚举分区值的形式对数据进行分区操作,尤其适合对无序且不相关的数据集进行分组与组织。在处理分区键值时,若某些值未被定义在列表之中,用户可以借助默认分区(DEFAULT)来存储这些数据。 - [二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0487.md): 二级分区(Subpartition,也叫组合分区)是基本数据分区类型的组合,将表通过一种数据分布方法进行分区,然后使用第二种数据分布方式将每个分区进一步细分为子分区。给定分区的所有子分区表示数据的逻辑子集。常见的二级分区组合如下所示:Range-RangeRange-ListRange-HashList-RangeList-ListLis - [表达式分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0488.md): 支持指定基本表达式/函数作为分区键,且可通过指定的分区键进行创建和使用分区表,对于创建的分区表,支持分区表中的DDL功能和DML功能,实现查询优化和运维管理。表达式分区仅在M-Compatibility模式数据库中生效。支持在分区表的分区键中使用表达式,数据分布方式根据表达式的计算结果进行分区,其他使用方式和非表达式分区表一致。表达式分区 - [分区表对导入操作的性能影响](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0489.md): 在GaussDB中,相较于非分区表,分区表在数据插入处理流程中额外增加了分区路由环节的开销。所以从整体来看,分区表场景下的数据插入开销主要由两部分构成,如图1所示:(1)heap-insert基表插入:此部分负责解决元组(tuple)存入对应堆表(heap表)的问题,并且这一操作在普通表和分区表中是通用的;(2)partition-rou - [创建分区表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0491.md): 单个表的最大分区数为1048575(包括一级分区和二级分区)。较多的分区会导致系统中文件数增加、占用更多的系统缓存和锁资源,进而影响系统的性能。在默认配置下,建议单个表的分区数不超过400。如果实际使用的热点分区数超过400,考虑到分区表的使用性能,建议调整FASTPATH_PART的值(调整方法参见GUC参数num_internal_l - [使用和管理分区表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0492.md): 分区表支持大部分非分区表的相关功能,具体可以参考《参考》中常规表的各类操作语法相关资料。除此之外,分区表还支持大量的分区级操作命令,包括分区级DQL/DML(如SELECT、INSERT、UPDATE、DELETE、UPSERT、MERGE INTO)、分区级DDL(如ADD、DROP、TRUNCATE、EXCHANGE、SPLIT、ME - [分区表DQL/DML](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0493.md): 由于分区的实现完全体现在数据库内核中,用户对分区表的DQL/DML与非分区表相比,在语法上没有任何区别。出于分区表的易用性考虑,GaussDB支持指定分区的DQL/DML操作,指定分区可以通过PARTITION (partname)或者PARTITION FOR (partvalue)来进行。对于二级分区,可以通过SUBPARTITION - [分区表静态剪枝](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0496.md): 对于检索条件中分区键上带有常量的分区表查询语句,在优化器阶段将对indexscan、bitmap indexscan、indexonlyscan等算子中包含的检索条件作为剪枝条件,完成分区的筛选。算子包含的检索条件中需要至少包含一个分区键字段,对于含有多个分区键的分区表,包含任意分区键子集即可。静态剪枝只支持常量。部分非常量条件会在计划生 - [PBE动态剪枝](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0498.md): 对于检索条件中分区键上带有参数的分区表查询语句,在优化器阶段只能判定“具备分区剪枝条件”,在执行启动完成绑参后,再进行动态剪枝。动态剪枝的触发行为与静态剪枝一致,只是触发阶段不同。对于部分stable函数,如to_timestamp等类型转换函数,可能会受GUC参数变化,影响剪枝结果。为了保持性能优化,此情况可以通过analyze表重新生 - [参数化路径动态剪枝](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0499.md): 当分区表的分区键所在列生成参数化路径(分区键所在列和其他表的列进行关联,且分区表作为内表生成NestLoop索引扫描)时,会触发参数化路径动态剪枝。参数化路径动态剪枝会在每次外表扫描完成后,驱动内表扫描时进行一次。参数化路径动态剪枝在多数情况下不支持子查询表达式(剪枝算子选择参数化路径且分区键上包含了一个InitPlan子查询条件除外), - [Partition Iterator算子消除](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0501.md): 在当前分区表架构中,执行器通过Partition Iterator算子去迭代访问每一个分区。当分区剪枝结果只有一个分区时,Partition Iterator算子就失去了迭代器的作用,在此情况下消除Partition Iterator算子,可以避免执行时一些不必要的开销。由于执行器的PIPELINE架构,Partition Iterato - [Merge Append](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0502.md): 当对分区表进行全局排序时,通常SQL引擎的实现方式是先通过Partition Iterator + PartitionScan对分区表做全量扫描,然后进行Sort排序操作,这样难以利用分区局部有序性加速排序过程。针对这类问题,目前分区表支持分区归并排序执行策略,利用Merge Append的执行机制改进分区表的排序机制。分区表Merge - [Max/Min](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0503.md): 当对分区表使用Max/Min函数时,通常SQL引擎的实现方式是先通过Partition Iterator + PartitionScan对分区表做全量扫描,然后进行Sort + Limit操作。如果扫描分区时使用索引扫描,可以先对每个分区进行Limit操作,计算Max/Min值,最后在分区表上做Sort + Limit操作。此时在分区表上 - [分区导入数据性能优化](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0504.md): 当向分区表插入数据的时候,如果插入的数据为常量/参数/表达式等简单类型,会自动对INSERT算子进行执行优化(FastPath)。可以通过执行计划来判断是否触发了执行优化,触发执行优化时Insert计划前会带有FastPath关键字。只支持INSERT VALUES语句下的执行优化,且VALUES子句后的数据为常量/参数/表达式等类型。不 - [动态剪枝性能优化](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0505.md): 当分区键带有等值查询条件时,扫描的分区数量可以裁剪到单分区中,数据库引擎可直接通过分区路由映射到目标分区获取分区信息,实现精确分区定位,提升动态剪枝的性能,从而降低扫描算子初始化的底噪。动态剪枝性能优化不会在计划上体现。仅支持分区键带等值条件,且裁剪到单分区的场景。仅支持gplan使用动态剪枝,cplan不支持动态剪枝。仅支持单列分区键, - [分区索引](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0506.md): 分区表上的索引共有三种类型:Global Non-Partitioned Index,如图1所示。Global Partitioned Index,如图2所示。Local Partitioned Index,如图3所示。Global Non-Partitioned Index,如图1所示。Global Partitioned Index, - [级联收集统计信息-非透明多写](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0508.md): 在对分区表执行ANALYZE | ANALYSE语法时,系统会根据用户指定的或默认的PARTITION_MODE,自动收集分区表中所有符合语义的分区级统计信息,PARTITION_MODE的相关信息请参见《参考》中“SQL参考 > SQL语法 > A > ANALYZE | ANALYSE”章节中的PARTITION_MODE参数。分区级 - [分区级统计信息](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0510.md): 当前分区表支持指定单分区统计信息收集,已收集统计信息的分区会在再次收集时自动更新维护。该功能适用于列表分区、哈希分区和范围分区。优化器优先使用指定分区的统计信息。如果指定分区未收集统计信息,优化器使用改写分区子句剪枝优化,请参见通过改写分区子句剪枝优化。当没有分区级统计信息时,在优化器行数估算模块,通过在逻辑上对分区子句进行伪谓词的改写, - [非SMP场景下的Partition-wise Join](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0512.md): 在非SMP场景下,Partition-wise Join的路径是基于规则生成的,即只要符合条件,即可生成Partition-wise Join路径,而无需对比路径代价。其开关为GUC参数enable_partitionwise。非SMP场景下的Partition-wise Join的使用规格:只支持一级RANGE分区。支持Hash Joi - [SMP场景下的Full Partition-wise Join](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0513.md): SMP场景下的Partition-wise Join计划是基于代价选择的,在路径生成的过程中,会对比Partition-wise Join和非Partition-wise Join路径的估算代价,选择代价较低的路径。其开关参数为GUC参数enable_smp_partitionwise。SMP场景下的Partition-wise Join - [SMP场景下的Partial Partition-wise Join](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0514.md): Partial Partition-wise Join是指相互Join的两张表中有一张表是分区表,另一张表可以为任意类型,在任意类型的这张表的上层需要增加一个Stream Redistribute算子,将数据分发后与分区表一侧进行匹配。Partial Partition-wise Join路径生成的条件是分区表的分区键是一个Join ke - [二级分区模板](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0516.md): 二级分区模板是一组自定义的二级分区定义,在二级分区表下创建一级分区且未声明二级分区定义时,会使用二级分区模板进行自动创建二级分区。基于模板创建的二级分区,二级分区名由一级分区名拼接模板对象名组成,当已存在重名的分区名时,基于模板创建二级分区时会执行报错。模板的分区定义继承分区表的分区创建相关约束,即分区名互不重复,分区范围满足二级分区键约 - [一级分区表自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0518.md): 开启一级范围分区的自动扩展功能,需要在创建一级范围分区表时指定INTERVAL子句。一级范围分区表自动扩展只支持单列分区键。例如,创建一个支持自动扩展的范围分区表。当插入数据无法匹配到已有的任意分区时,会自动创建一个新的分区,新分区的范围定义由上一个分区范围和INTERVAL值决定。 - [二级分区表自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0519.md): 创建二级分区表时,可以在创建范围分区定义上指定INTERVAL子句,实现支持二级分区表的一级自动扩展以及二级自动扩展。二级分区表的范围分区自动扩展行为受INTERVAL子句的指定位置影响:若在一级分区后指定了INTERVAL子句,则仅支持一级分区自动扩展,不支持二级分区的自动扩展,且不能定义存在一级分区键值为MAXVALUE的分区。若在二 - [一级分区表自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0521.md): 开启列表分区的自动扩展功能,需要在创建一级列表分区表时指定AUTOMATIC关键字。一级列表分区表自动扩展支持多列分区键。例如,创建一个支持自动扩展的列表分区表。当插入数据无法匹配到已有的任意分区时,会自动创建一个新的分区,新分区的范围定义为单key。这一功能与如下命令等价:清理示例。 - [二级分区表自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0522.md): 创建二级分区表时,可以在创建列表分区定义上指定AUTOMATIC关键字,以支持二级分区表的一级自动扩展/二级自动扩展。创建二级分区表时,在创建一级分区定义上指定AUTOMATIC,以支持一级自动扩展。gaussdb=# CREATE TABLE autolist_range (c1 int, c2 int) PARTITION BY LI - [开启/关闭一级范围分区自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0524.md): 使用ALTER TABLE SET INTERVAL可以开启/关闭一级范围分区自动扩展。例如:开启范围分区自动扩展。gaussdb=# CREATE TABLE range_int (c1 int, c2 int) PARTITION BY RANGE (c1) ( PARTITION p1 VALUES LESS THAN (5 - [开启/关闭二级范围分区自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0525.md): 使用ALTER TABLE SET SUBPARTITIONING可以开启/关闭二级范围分区自动扩展功能。例如:开启二级范围分区自动扩展。gaussdb=# CREATE TABLE range_range (c1 int, c2 int) PARTITION BY RANGE (c1) SUBPARTITION BY RANGE (c2 - [开启/关闭一级列表分区自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0526.md): 使用ALTER TABLE SET PARTITIONING 可以开启/关闭一级列表分区自动扩展。例如:开启一级列表分区表自动扩展。gaussdb=# CREATE TABLE list_int (c1 int, c2 int) PARTITION BY LIST (c1) ( PARTITION p1 VALUES (1, 2, - [开启/关闭二级列表分区自动扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0527.md): 使用ALTER TABLE SET SUBPARTITIONING可以开启/关闭二级列表分区自动扩展功能。例如:开启二级列表分区自动扩展。gaussdb=# CREATE TABLE range_list (c1 int, c2 int) PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2) - [自动扩展分区的创建策略](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0528.md): 分区自动扩展是一个自动提交的过程,当DML插入的数据无法匹配到已有的任意分区或创建分类索引指定的分区不存在时,会触发自治事务执行分区自动扩展。这一过程会对分区表施加短暂的锁定,与其他分区DDL命令相互阻塞。阻塞周期极为短暂,对系统运行或用户操作基本无影响。自动扩展分区原理如图1所示。分区自动扩展的行为表现如下:通过DML业务自动扩展的分区 - [向范围分区表新增分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0531.md): 使用ALTER TABLE ADD PARTITION可以将分区添加到现有分区表的最后面,新增分区的上界值必须大于当前最后一个分区的上界值。例如,对范围分区表range_sales新增一个分区。gaussdb=# CREATE TABLE range_sales ( product_id INT4 NOT NULL, cu - [向间隔分区表新增分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0532.md): 不支持通过ALTER TABLE ADD PARTITION命令向间隔分区表新增分区。当用户插入数据超出现有间隔分区表范围时,数据库会自动根据间隔分区的INTERVAL值创建一个分区。例如,对间隔分区表interval_sales插入如下数据后,数据库会创建一个分区,该分区范围为['2020-07-01', '2020-08-01'),间 - [向列表分区表新增分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0533.md): 使用ALTER TABLE ADD PARTITION可以在列表分区表中新增分区,新增分区的枚举值不能与已有的任一个分区的枚举值重复。例如,对列表分区表list_sales新增一个分区。ALTER TABLE list_sales ADD PARTITION channel5 VALUES ('X') TABLESPACE tb1;当列表 - [向二级分区表新增一级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0534.md): 使用ALTER TABLE ADD PARTITION可以在二级分区表中新增一个一级分区,这个行为可以作用在一级分区策略为RANGE或者LIST的情况。如果这个新增一级分区下声明了二级分区定义,则数据库会根据定义创建对应的二级分区;如果这个新增一级分区下没有声明二级分区定义,则数据库会自动创建一个默认的二级分区。例如,对二级分区表rang - [向二级分区表新增二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0535.md): 使用ALTER TABLE MODIFY PARTITION ADD SUBPARTITION可以在二级分区表中新增一个二级分区,这个行为可以作用在二级分区策略为RANGE或者LIST的情况。例如,对二级分区表range_list_sales的date_202004新增一个二级分区。ALTER TABLE range_list_sales - [对一级分区表删除分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0537.md): 使用ALTER TABLE DROP PARTITION可以删除指定一级分区表的任何一个分区,这个行为可以作用在范围分区表、间隔分区表、列表分区表上。例如,通过指定分区名删除范围分区表range_sales的分区date_202005,并更新Global索引。ALTER TABLE range_sales DROP PARTITION d - [对二级分区表删除一级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0538.md): 使用ALTER TABLE DROP PARTITION可以删除二级分区表的一个一级分区,这个行为可以作用在一级分区策略为RANGE或者LIST的情况。数据库会将这个一级分区,以及一级分区下的所有二级分区都删除。例如,通过指定分区名删除二级分区表range_list_sales的一级分区date_202005,并更新Global索引。AL - [对二级分区表删除二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0539.md): 使用ALTER TABLE DROP SUBPARTITION可以删除二级分区表的一个二级分区,这个行为可以作用在二级分区策略为RANGE或者LIST的情况。例如,通过指定分区名删除二级分区表range_list_sales的二级分区date_202005_channel1,并更新Global索引。ALTER TABLE range_li - [对一级分区表交换分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0541.md): 使用ALTER TABLE EXCHANGE PARTITION可以对一级分区表交换分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001和普通表exchange_sales进行交换,不进行分区校验,并更新Global索引。ALTER TABLE range_sales EXCHANGE PARTITIO - [对二级分区表交换二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0542.md): 使用ALTER TABLE EXCHANGE SUBPARTITION可以对二级分区表交换二级分区。例如,通过指定分区名将二级分区表range_list_sales的二级分区date_202001_channel1和普通表exchange_sales进行交换,不进行分区校验,并更新Global索引。ALTER TABLE range_li - [对一级分区表清空分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0544.md): 使用ALTER TABLE TRUNCATE PARTITION可以清空指定一级分区表的任何一个分区。例如,通过指定分区名清空范围分区表range_sales的分区date_202005,并更新Global索引。ALTER TABLE range_sales TRUNCATE PARTITION date_202005 UPDATE GL - [对二级分区表清空一级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0545.md): 使用ALTER TABLE TRUNCATE PARTITION可以清空二级分区表的一个一级分区,数据库会将这个一级分区下的所有二级分区都进行清空。例如,通过指定分区名清空二级分区表range_list_sales的一级分区date_202005,并更新Global索引。ALTER TABLE range_list_sales TRUNC - [对二级分区表清空二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0546.md): 使用ALTER TABLE TRUNCATE SUBPARTITION可以清空二级分区表的一个二级分区。例如,通过指定分区名清空二级分区表range_list_sales的二级分区date_202005_channel1,并更新Global索引。ALTER TABLE range_list_sales TRUNCATE SUBPARTIT - [对范围分区表分割分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0548.md): 使用ALTER TABLE SPLIT PARTITION可以对范围分区表分割分区。例如,假设范围分区表range_sales的分区date_202001定义范围为['2020-01-01', '2020-02-01')。可以指定分割点'2020-01-16'将分区date_202001分割为两个分区,并更新Global索引。ALTER - [对间隔分区表分割分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0549.md): 对间隔分区表分割分区的命令与范围分区表相同。对间隔分区表的间隔分区完成分割分区操作之后,源分区之前的间隔分区会变成范围分区。例如,创建如下间隔分区表,并插入数据新增三个分区sys_p1、sys_p2、sys_p3。CREATE TABLE interval_sales ( prod_id NUMBER(6), - [对列表分区表分割分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0550.md): 使用ALTER TABLE SPLIT PARTITION可以对列表分区表分割分区。例如,假设列表分区表list_sales的分区channel2定义范围为('6', '7', '8', '9')。可以指定分割点('6', '7')将分区channel2分割为两个分区,并更新Global索引。ALTER TABLE list_sales - [对*-RANGE二级分区表分割二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0551.md): 使用ALTER TABLE SPLIT SUBPARTITION可以对*-RANGE二级分区表分割二级分区。例如,假设*-RANGE二级分区表list_range_sales的二级分区channel1_customer4的定义范围为[1000, MAXVALUE)。可以指定分割点1200将二级分区channel1_customer4分割为 - [对*-LIST二级分区表分割二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0552.md): 使用ALTER TABLE SPLIT SUBPARTITION可以对*-LIST二级分区表分割二级分区。例如,假设*-LIST二级分区表hash_list_sales的二级分区product2_channel2的定义范围为DEFAULT。可以指定分割点将其分割为两个分区,并更新Global索引。ALTER TABLE hash_list - [对一级分区表合并分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0554.md): 使用ALTER TABLE MERGE PARTITIONS可以将多个分区合并为一个分区。例如,将范围分区表range_sales的分区date_202001和date_202002合并为一个新的分区,并更新Global索引。ALTER TABLE range_sales MERGE PARTITIONS date_202001, dat - [对二级分区表合并二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0555.md): 使用ALTER TABLE MERGE SUBPARTITIONS可以将多个二级分区合并为一个分区。例如,将二级分区表hash_list_sales的二级分区product1_channel1、product1_channel2、product1_channel3合并为一个新的分区,并更新Global索引。ALTER TABLE hash - [对一级分区表移动分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0564.md): 使用ALTER TABLE MOVE PARTITION可以对一级分区表移动分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001移动到表空间tb1中。ALTER TABLE range_sales MOVE PARTITION date_202001 TABLESPACE tb1;或者,通过指定分区值将 - [对二级分区表移动二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0565.md): 使用ALTER TABLE MOVE SUBPARTITION可以对二级分区表移动二级分区。例如,通过指定分区名将二级分区表range_list_sales的二级分区date_202001_channel1移动到表空间tb1中。ALTER TABLE range_list_sales MOVE SUBPARTITION date_2020 - [对一级分区表重命名分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0567.md): 使用ALTER TABLE RENAME PARTITION可以对一级分区表重命名分区。例如,通过指定分区名将范围分区表range_sales的分区date_202001重命名。ALTER TABLE range_sales RENAME PARTITION date_202001 TO date_202001_new;或者,通过指定分区 - [对二级分区表重命名一级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0568.md): 使用ALTER TABLE RENAME PARTITION可以对二级分区表重命名一级分区。具体方法与一级分区表相同。例如,通过指定分区名将范围分区表range_sales的分区date_202001重命名。ALTER TABLE range_sales RENAME PARTITION date_202001 TO date_20200 - [对二级分区表重命名二级分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0569.md): 使用ALTER TABLE RENAME SUBPARTITION可以对二级分区表重命名二级分区。例如,通过指定分区名将二级分区表range_list_sales的二级分区date_202001_channel1重命名。ALTER TABLE range_list_sales RENAME SUBPARTITION date_202001 - [对Local索引重命名索引分区](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0570.md): 使用ALTER INDEX RENAME PARTITION可以对Local索引重命名索引分区。具体方法与一级分区表重命名分区相同。 - [分区表行迁移](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0571.md): 用户可以使用ALTER TABLE ENABLE/DISABLE ROW MOVEMENT来开启/关闭分区表行迁移。开启行迁移时,允许通过更新操作将一个分区中的数据迁移到另一个分区中;关闭行迁移时,如果出现这种更新行为,则业务报错。如果业务明确不允许对分区键所在列进行更新操作,建议关闭分区表行迁移。例如,创建列表分区表,并开启分区表行迁移 - [索引重建/不可用](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0573.md): 使用ALTER INDEX可以设置索引是否可用。例如,假设分区表range_sales上存在索引range_sales_idx,可以通过如下命令设置其不可用。ALTER INDEX range_sales_idx UNUSABLE;可以通过如下命令重建索引range_sales_idx。ALTER INDEX range_sales_id - [Local索引分区重建/不可用](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0574.md): 使用ALTER INDEX PARTITION可以设置Local索引分区是否可用。使用ALTER TABLE MODIFY PARTITION可以设置分区表上指定分区的所有索引分区是否可用。这个语法如果作用于二级分区表的一级分区,数据库会同时对这个一级分区下的所有二级分区进行设置。使用ALTER TABLE MODIFY SUBPARTI - [常规锁设计](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0576.md): 分区表通过表锁+分区锁两重设计,在表和分区上分别施加不同级别的常规锁,保证DQL、DML以及DDL并发过程中的合理行为控制。不同级别锁的相容行为如表1所示,表中标记为“√”的两种常规锁互不阻塞,可以并行。分区表的不同业务最终都是作用于目标分区上,数据库会给分区表和目标分区施加不同级别的表锁+分区锁,来控制并发行为。表2给出了不同业务的锁粒 - [DQL/DML-DQL/DML并发](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0577.md): DQL/DML操作会给表和分区施加1~3级别的常规锁,DQL/DML操作自身互不阻塞。分区表支持DQL/DML-DQL/DML并发。支持自动扩展的分区表由于INSERT、UPDATE、UPSERT、MERGE INTO、COPY等业务导致的新增分区行为视为一个分区DDL操作。 - [DQL/DML-DDL并发](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0578.md): 表级DDL会给分区表施加8级锁,阻塞该分区表全部的DQL/DML操作。分区级DDL会给分区表施加4级锁,并给目标分区施加8级锁。当DQL/DML与DDL作用不同分区时,支持二者执行层面的并发;当DQL/DML与DDL作用相同分区时,后触发业务会被阻塞。业务在进行自动扩展分区时,应避免同时进行分区DDL操作,避免触发死锁问题。业务在进行分区 - [分区表相关系统视图](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0580.md): 分区表系统视图根据权限分为3类,具体字段信息请参考《参考》中“系统表和系统视图 > 系统视图”章节。所有分区视图:ADM_PART_TABLES:所有分区表信息。ADM_TAB_PARTITIONS:所有一级分区信息。ADM_TAB_SUBPARTITIONS:所有二级分区信息。ADM_PART_INDEXES:所有Local索引信息。A - [分区表相关内置工具函数](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0581.md): 前置建表:CREATE TABLE test_range_pt (a INT, b INT, c INT) PARTITION BY RANGE (a) ( PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN (3000), PAR - [静态编译架构](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0585.md): 从整个数据库服务的组成架构来看,存储引擎向上对接SQL引擎,为SQL引擎提供或接收标准化的数据格式(元组或向量数组)。向下对接存储介质,按照特定的数据组织方式,以页面、压缩单元(Compress Unit)或其他形式为单位,通过存储介质提供的特定接口,对存储介质中的数据完成读写操作。GaussDB通过静态编译使数据库专业人员可以为特定的应 - [通用数据库服务层](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0586.md): 从技术角度来看,存储引擎需要一些基础架构组件,主要包括:并发:不同存储引擎选择正确的锁可以减少开销,从而提高整体性能。此外提供多版本并发控制或“快照”读取等功能。事务:均需满足ACID的要求,提供事务状态查询等功能。内存缓存:不同存储引擎在访问索引和数据时一般会对其进行缓存。缓存池允许直接从内存中处理经常使用的数据,从而加快了处理速度。检 - [设置存储引擎](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0587.md): 存储引擎会对数据库整体效率和性能存在巨大影响,请根据实际需求选择适当的存储引擎。用户可使用WITH ( [ORIENTATION | STORAGE_TYPE] [= value] [, ... ] )为表或索引指定一个可选的存储参数。参数的详细描述如表1所示:如果ORIENTATION指定为ROW,且STORAGE_TYPE为空的情况下 - [GaussDB内核505版本](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0589.md): Ustore支持柔性字段高效存储。Ustore支持Toast规模商用。Ustore增加页面恢复与逃生技术。Ustore支持SMP技术。 - [GaussDB内核503版本](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0590.md): Ustore适配分布式/并行查询/Global Temp Table/Vacuum full/列约束DEFERRABLE以及INITIALLY DEFERRED。Ustore增加在线重建索引。Ustore增加增强版本B-tree空页面估算,提升优化器代价估算准确度。Ustore增加存储引擎可靠性验证框架,Diagnose Page/Pag - [GaussDB内核R2版本](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0591.md): Ustore增加新的基于原位更新的行存储引擎Ustore,首次实现新、旧版本记录的分离存储。Ustore增加回滚段模块。Ustore增加回滚过程,支持同步/异步/页内模式。Ustore增加支持事务的增强版本B-tree。Astore增加闪回功能,支持闪回表/闪回查询/闪回Drop/闪回Truncate。Ustore不支持的特性包括分布式并 - [Astore简介](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0593.md): Astore与Ustore的多版本实现最大的区别在于最新版本和历史版本是否分离存储。Astore不进行分离存储,而Ustore当前也只是分离了数据,索引本身没有分开。Astore存储引擎采用追加(Append)存储方式,即数据以追加的方式存储到现有数据的末尾,而不是覆盖旧的数据。这种方式使得写入操作非常高效,因为数据只是简单地追加到末尾。 - [特性约束](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0597.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [存储规格](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0598.md): 数据表最大列数不能超过1600列。init_td(TD(Transaction Directory,事务目录)是Ustore表独有的用于存储页面事务信息的结构,TD的数量决定该页面支持的最大并发数。在创建表或索引时可以指定初始的TD大小init_td)取值范围[2, 128],默认值4。单页面支持的最大并发不超过128个。Ustore表( - [使用Ustore进行测试](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0599.md): 创建Ustore表使用CREATE TABLE语句创建Ustore表。删除Ustore表为Ustore表创建索引Ustore当前仅支持BTree类型的多版本索引。在一些场景中,为了区别于Astore的BTree索引,也会将Ustore表的多版本BTree索引称为UBTree(Ustore BTree,UBTree介绍详见UBTree章节) - [怎么配置init_td大小](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0601.md): TD(Transaction Directory,事务目录)是Ustore表独有的用于存储页面事务信息的结构,TD的数量决定该页面支持的最大并发数。在创建表或索引时可以指定初始的TD大小init_td,默认值为4,即同时支持4个并发事务修改该页面,最大值为128。用户需要结合业务并发度分析是否需要手动配置init_td。另外也可以结合业务 - [怎么配置fillfactor大小](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0602.md): fillfactor是用于描述页面填充率的参数,该参数与页面能存放的元组数量、大小以及表的物理空间直接相关。Ustore表的默认页面填充率为92%,预留的8%空间用于更新的扩展,也可以用于TD列表的扩展空间。fillfactor的配置和详细描述参见《参考》中“SQL参考 > SQL语法 > C > CREATE TABLE”章节。用户需要 - [在线校验功能](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0603.md): 在线校验是Ustore特有的,在运行过程中可以有效预防页面因编码逻辑错误导致的逻辑损坏,ustore_attr参数默认开启UPAGE:UBTREE:UNDO三个模块校验。业务现网请保持开启,性能场景除外。ustore_attr参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 开发人员选项”章节。 - [怎么配置回滚段大小](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0604.md): 一般情况下回滚段大小的参数使用默认值即可。为了达到最佳性能,部分场景下可调整回滚段大小的相关参数,具体场景与设置方法如下。保留给定时间内的历史版本数据。当使用闪回或者支撑问题定位时,通常希望保留更多历史版本数据,此时需要修改undo_retention_time(guc参数在gaussdb.conf文件修改)。undo_retention - [RCR Uheap多版本管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0607.md): Ustore对其使用的heap做了如下重要的增强,简称Uheap。Ustore RCR(Row Consistency Read)的多版本管理是基于数据行的行级多版本管理,不过Ustore将XID记录在了页面的TD(Transaction Directory)区域,区别于常见的将XID存储在数据行上,节省了页面空间。事务修改记录时,会将历 - [RCR Uheap可见性机制](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0608.md): Ustore可见性判断是通过构建数据行的一致性版本获得的,老快照可通过Undo记录获取历史版本。举例如下:图中描述了三种使用MVCC快照查询的场景,其中Reader为查询线程,持有csn = 300的快照,需要查询某行数据的可见版本:该行数据指向的td槽位记录事务xid已经提交,并且td csn < 快照csn,说明td xid对快照可见 - [RCR Uheap空闲空间管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0609.md): Ustore使用Free Space Map(FSM)文件记录了每个数据页的潜在空闲空间,并且以树的结构组织起来。每当用户想要对某个表执行插入操作或者是非原位更新操作时,就会从该表对应的FSM中进行快速查找,查看当前FSM上记录的最大空闲空间是否可以满足插入所需的空间要求。如果满足则返回对应的blocknum用于执行插入操作,否则执行拓展 - [RCR UBTree](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0611.md): RCR(Row Consistency Read) UBtree的多版本管理是基于数据行的行级多版本管理,将XID记录在了数据行上,会增加Key的大小,索引会有5-20%左右的膨胀。最新版本和历史版本均在btree上,索引没有记录Undo信息。插入或者删除key时按照key + TID的顺序排列,索引列相同的元组按照对应元组的TID作为第 - [PCR UBTree](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0612.md): 相比于RCR版本的UBTree,PCR版本的UBTree有以下特点。索引元组的事务信息统一由TD槽进行管理。增加了Undo操作,插入和删除前需要先写入Undo,事务abort时需要进行回滚操作。支持闪回。索引元组的事务信息统一由TD槽进行管理。增加了Undo操作,插入和删除前需要先写入Undo,事务abort时需要进行回滚操作。支持闪回。 - [回滚段管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0614.md): 回滚段管理如图1所示:回滚段管理每个undo zone除了管理部分transaction page(用于存储事务回滚的元数据)外,还管理undo page。Undo页面中存储undo row,对数据的修改会将历史版本记录到Undo中。Undo记录也是数据,因此对Undo页面的修改同样会记录Redo。 - [文件组织结构](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0615.md): 如需查询当前回滚段使用的存储方式是页式或段页式,可以查询系统表。当前仅支持页式。示例:当回滚段使用的存储方式为页式:txn page所在文件组织结构:$node_dir/undo/{permanent|unlogged|temp}/$undo_zone_id.meta.$segnoundo row所在文件组织结构:$node_dir/un - [空间管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0616.md): Undo子系统依赖后台回收线程进行空闲空间回收,负责主机上Undo模块的空间回收,备机通过回放Xlog进行回收。回收线程遍历使用中的undo zone,对该zone中的txn page扫描,依据xid从小到大的顺序进行遍历。回收已提交或者已回滚完成的事务,且该事务的提交时间应早于$(current_time-undo_retention_ - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0618.md): Enhanced Toast是一种用于处理超大字段的技术。首先,减少了Toast Pointer中的冗余信息,存储支持单表超长字段列数超过500列。其次,优化了主表与线外存储表之间的映射关系,无需通过pg_toast_index来存储主表数据与线外存储表数据的关系,降低了用户存储空间。最后,Enhanced Toast技术通过让分割数据自 - [Enhanced Toast存储结构](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0619.md): Enhanced Toast技术使用自链接的方式来处理元组间的依赖关系。线外存储表把超长数据按照2K分割成链表块,主表的Toast Pointer指向线外存储表的对应数据链表头,如图1所示。这样极大简化了主表与线外存储表间的映射关系,有效地提升了数据写入与查询的性能。 - [Enhanced Toast使用](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0620.md): 新增的GUC参数enable_enhance_toast_table用于控制线外存储结构。enable_enhance_toast_table参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > Enhanced Toast”章节。“enable_enhance_toast_table=on”表示使用Enhanced - [Enhanced Toast增删改查](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0621.md): Insert操作:触发Enhanced Toast的写入条件保持与原有Toast一致,除了数据写入时增加了数据间的链接信息之外,插入基本逻辑保持不变。Delete操作:Enhanced Toast的数据删除流程不再依赖Toast数据索引,仅依靠数据间的链接信息将对应的数据进行遍历删除。Update操作:Enhanced Toast的更新流 - [Enhanced Toast相关DDL操作](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0622.md): Enhanced Toast表的创建建表时指定Toast表的存储类型为Enhanced Toast或者Toast:建表时不指定线外存储表的类型,则创建线外存储表类型依赖于GUC参数enable_enhance_toast_table:线外存储表结构的升级当GUC参数“enable_enhance_toast_table=on”时,线外存储 - [Enhanced Toast运维管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0623.md): 通过gs_parse_page_bypath解析主表中的ToastPointer信息。解析文件1663_13113_17603_0.page中存储了ToastPointer的相关信息,具体如下:Enhanced Toast数据查询,通过直接查询到的Enhanced Toast表数据可以判断其链式结构的完整性。 - [事务提交](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0625.md): 针对隐式事务和显式事务,其提交策略如下所示:隐式事务。单条DML/DDL语句自动触发隐式事务,这种事务没有显式的事务块控制语句(START TRANSACTION/BEGIN/COMMIT/END),DML语句结束后自动提交。显式事务。显式事务由显式的START TRANSACTION/BEGIN语句控制事务的开始,由COMMIT/END - [事务回滚](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0626.md): 回滚是在事务运行的过程中发生了故障等异常情形下,事务不能继续执行,系统需要将事务中已完成的修改操作进行撤销。Astore、Ubtree没有回滚段,自然没有这个专门的回滚动作。Ustore为了性能考虑,它的回滚流程结合了同步、异步和页面级回滚等3种形式。同步回滚有三种情况会触发事务的同步回滚:事务块中的ROLLBACK关键字会触发同步回滚。 - [闪回查询](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0628.md): 闪回查询可以查询过去某个时间点表的某个snapshot数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于MVCC多版本机制,通过检索查询旧版本,获取指定老版本数据。整体方案分为三部分:旧版本保留、快照的维护和旧版本检索。旧版本保留:新增undo_retention_time配置参数,用来设置旧版本保留的时间,超过该时 - [闪回表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0629.md): 闪回表可以将表恢复至特定时间点,当逻辑损坏仅限于一个或一组表,而不是整个数据库时,此特性可以快速恢复表的数据。闪回表基于MVCC多版本机制,通过删除指定时间点和该时间点之后的增量数据,并找回指定时间点和当前时间点删除的数据,实现表级数据还原。整体方案分为三部分:旧版本保留、快照的维护和旧版本检索。旧版本保留:新增undo_retentio - [闪回DROP/TRUNCATE](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0630.md): 闪回DROP:可以恢复意外删除的表,从回收站(recyclebin)中恢复被删除的表及其附属结构如索引、表约束等。闪回drop是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已drop表的恢复。闪回TRUNCATE:可以恢复误操作或意外被进行truncate的表,从回收站中恢复被truncate的表及索引的物理数据。闪回trun - [闪回库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0631.md): 可以恢复意外删除的库,从库级回收站(database recycle bin)中恢复被删除的库及其关联对象。闪回库DROP是基于回收站机制,通过还原回收站中记录的库的物理文件,实现已DROP库的恢复。开启enable_db_recyclebin参数,启用回收站,参数使用请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 闪回相关 - [常用视图工具](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0632.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [长事务阻塞Undo空间回收](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0635.md): gs_log中打印如下错误:snapshot too old! the undo record has been forcibly discardedxid xxx, the undo size xxx of the transaction exceeds the threshold xxx. trans_undo_threshold_s - [大量回滚事务拖慢Undo空间回收](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0636.md): 使用gs_async_rollback_xact_status视图查看有大量的待回滚事务,且待回滚的事务数量维持不变或者持续增高。调大异步回滚线程数量,即调大max_undo_workers参数值。max_undo_workers参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 回滚相关参数”章节。 - [storage test error](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0637.md): 业务执行过程中,数据页、索引或者Undo页面发生变更后,该页面放锁之前会主动进行逻辑损坏检测,发现页面损坏问题后会输出包含“storage test error”关键字的日志信息到数据库运行日志(gs_log文件),执行事务回滚,页面会恢复到修改前的状态。gs_log中打印“storage test error”关键字。请联系华为技术支持 - [备机读业务报错:"Index scan conflicts with replay. Try again later. The original maxoff is , but now it is ."](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0638.md): 业务在使用备机读时,出现报错(错误码43244),错误信息中包含“Index scan conflicts with replay. Try again later.”关键字。在开启并行回放或串行回放的情况下(查询GUC参数recovery_parse_workers和recovery_max_workers均是1为串行回放;recove - [长查询执行期间大量并发更新偶现写入性能下降](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0639.md): 执行全表扫描类型的长查询,扫描期间页面发生大量并发更新,部分DML写入性能较没有长查询时出现性能下降。对于全表扫描场景下的长查询(例如持续两小时以上),在扫描到某个页面前,该页面发生大量集中并发更新(例如十万次以上更新),后续扫描到该页面时,需要访问大量历史版本获取可见元组(MVCC机制),由于单页扫描期间持有页面读锁,若此时刚好需要写入 - [特性简介](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0641.md): OLTP表压缩是GaussDB高级压缩中的一个特性。该特性基于全新的压缩算法、细粒度的自动冷热判定和支持块内压缩、跨页压缩等技术创新,可以在提供合理压缩率的同时大幅度降低对业务的影响、增加后台调度、增加查询Job执行状态以及节约空间,能够在支持关键在线业务的容量控制中发挥重要价值,当前版本支持堆表压缩、跨页透明压缩、索引压缩和copy批量 - [特性约束](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0642.md): 对于高级压缩(ADVANCED):不支持系统表、内存表、全局临时表、本地临时表和序列表,不支持Ustore段页式表,不支持unlogged表,不支持压缩toast数据。支持用户为普通表、分区、二级分区设置ILM策略。支持普通表、分区、二级分区的Astore/Ustore用户表和透明加密表。特性仅在A兼容模式、PG兼容模式以及B兼容模式下有 - [特性规格](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0643.md): 对于高级压缩(ADVANCED):TPCC只开启策略、不开调度对原有业务无影响。TPCC不开启压缩策略对原有业务无影响。TPCC.bmsql_order_line设置ILM策略(只识别完成派送的订单为冷行)不调度,TPmC劣化不高于2%(56核CPU370GB内存+3TB SSD硬盘,350GB SharedBuffer)。TPCC.bm - [使用说明](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0644.md): 使用高级压缩的功能,用户必须申请License才能使用。具体情况请联系华为工程师。执行“ALTER DATABASE SET ilm = on”语句需要拥有public权限。检查当前数据库的public schema中是否存在gsilmpolicy_seq和gsilmtask_seq。或者:生成异常会报warning:新建带策略的表:ga - [维护窗口参数配置](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0645.md): RETENTION_TIME:评估与压缩记录的保留时长,单位天,默认值30。用户可根据自己存储容量自行调节。EXECUTION_INTERVAL:评估任务的执行频率,单位分钟,默认值15。用户可根据自己维护窗口期间业务与资源情况调节。该参数与ABS_JOBLIMIT相互影响。单日单线程最大可产生的I/O为WIND_DURATION/EXE - [运维TIPS](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0646.md): 高级压缩特性使用前必须先联系工作人员申请License,否则执行相关命令会报错。手动触发一次压缩(示例中一次压缩102400MB)。给表加上冷热分离策略:gaussdb=# DROP TABLE IF EXISTS ILM_TABLE; gaussdb=# CREATE TABLE ILM_TABLE(a int); gaussdb=#A - [内存管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0647.md): 物理内存物理可见的硬件,即内存条。物理可见的硬件,即内存条。虚拟内存进程运行时所有内存空间的总和,以32位系统为例,每个进程有4GB的内存空间,各进程的内存空间具有类似的结构,如图1所示。Linux内存机制一个新进程建立的时候,将会建立起自己的内存空间,并将此进程的数据、代码等在需要被读写时从磁盘复制到自己的内存空间。进程中每一条数据的地 - [多线程架构](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0648.md): GaussDB采用单进程多线程架构,这是其高性能和高并发处理能力的关键因素。通过有效的线程调度和管理,GaussDB能够在单个进程中实现高效且稳定的数据处理。线程的种类和功能丰富多样,包括用户线程、系统线程、I/O 线程、日志线程等,线程之间协同工作,共同完成数据库的各项任务。在多线程架构下,更容易实现多个线程资源的共享,例如并行查询和线 - [原生DB4AI引擎](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0755.md): GaussDB当前版本支持了原生DB4AI能力,通过引入原生AI算子,简化操作流程,充分利用数据库优化器、执行器的优化与执行能力,获得高性能的数据库内模型训练能力。更简化的模型训练与预测流程、更高的性能表现,让开发者在更短时间内能更专注于模型的调优与数据分析上,而避免了碎片化的技术栈与冗余的代码实现。当前版本的DB4AI新增支持算法如下: - [使用向量场景](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0757.md): 本示例演示在Python驱动下使用向量类型的场景。代码运行的前提条件:设置GUC参数enable_vectordb=on。示例运行结果如下: - [DB4AI-Snapshots数据版本管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0758.md): DB4AI-Snapshots是DB4AI模块用于管理数据集版本的功能。通过DB4AI-Snapshots组件,开发者可以简单、快速地进行特征筛选、类型转换等数据预处理操作,同时还可以像git一样对训练数据集进行版本控制。数据表快照创建成功后可以像视图一样进行使用。DB4AI-Snapshots的状态包括published、archive - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0761.md): 在金融行业风控与营销、制造业用户数据分析等关键业务场景中,企业中对智能应用的需求日益迫切。用户期待将数据库中的数据与模型能力深度融合,实现风险评估、报告生成与智能分析等功能。然而,传统方案依赖用户手动编写SQL提取数据,并在库外调用模型进行分析,存在开发门槛高、效率低、性能调优难等痛点。为此,数据库模型语义算子通过构建库内语义分析能力,将 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0762.md): 本特性在GaussDB中复用系统表GS_MODEL_WAREHOUSE,记录创建的外部模型服务相关信息。通过新添加的CREATE LLM和DROP LLM命令,实现对模型服务的管理。系统表GS_MODEL_WAREHOUSE具体描述请参见《参考》中“系统表和系统视图 > 系统表 > AI > GS_MODEL_WAREHOUSE”章节。在 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0763.md): 创建模型服务:删除模型服务:模型服务创建详细语法如下:参数说明如下表所示:USING语句下包括下面五个参数:EXTRA_PARAMS选项的典型参数如下表所示:EXTRA_PARAMS选项的参数说明参数名类型是否必选描述取值范围temperaturetext可选OpenAI v1/chat/completions API中输入的temper - [注意事项](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0764.md): 本功能依赖于LLM/embedding/rerank模型服务正常运行。CREATE LLM/DROP LLM命令需要拥有sysadmin的用户权限。QUERY MODEL中调用的大语言模型需通过兼容OpenAI开放API中 v1/chat/completions API格式提供服务。EMBED MODEL中调用的embedding模型需通 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0766.md): 基于创建的模型服务,用户可通过该方式使用模型能力,实现库外模型功能调用。本特性依赖于大语言模型、embedding模型和rerank模型服务正常运行。 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0767.md): 特性在SQL引擎中添加新的系统函数llm_query/llm_embed/llm_rerank,当用户在SQL中使用上述函数时,GaussDB内核进行的处理如下图所示:GaussDB的SQL引擎执行的步骤如下:功能在执行器执行线程里执行模型调用的请求,为避免模型服务的高延时造成对执行的阻塞,其通过如下两个优化方式提升系统的吞吐率并控制资源 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0768.md): 创建模型服务:使用大语言模型服务,其语法为:其中llm_query即为SQL中标准的标量函数。在该函数中可以在提示词字段中将提示词文本与表格中字段结合生成提示词。model_name为已注册的模型服务,参数含义如下:使用示例:使用embedding模型,其语法为:该函数调用向量模型,将input中的文本内容生成对应的向量。非透明多写下输出 - [注意事项](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0769.md): 本功能依赖于LLM/embedding/rerank模型服务正常运行。CREATE LLM/DROP LLM命令需要拥有sysadmin的用户权限。在select语句中使用llm_query/llm_embed/llm_rerank,需要调用该语句的用户对涉及的表有访问权限。在insert/update/delete语句中使用llm_qu - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0779.md): 智能基数估计通过利用库内贝叶斯网络模型,对多列数据样本的联合分布进行建模。这一过程使得它能够为多列等值查询提供更为精准的基数估算结果。在此基础上,又能显著提高优化器对于计划和算子选择的准确性。最终,优化器准确性的提升会带来数据库整体吞吐量的提高。在大型企业核心系统和云数据库等高负载业务环境中,复杂查询(尤其是涉及多列组合条件)常因优化器代 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0780.md): 模型创建本功能通过用户提交ANALYZE命令或者auto-analyze触发,通过样本采集器获取内存中数据样本结构并且包装成数据源结构体,如下图1所示。数据源结构体包含两部分信息,一部分是可能存在的高频值统计信息,另一部分是全量数据样本信息。高频值信息包含频度大于1的值(如果等于1,则不认为是高频值),而全量样本信息则是压平为序列一条一条 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0781.md): 软件版本:内核版本≥GaussDB Kernel 503.1.0.B038。数据库运行正常。GUC参数enable_ai_stats设置为on。multi_stats_type设置为'BAYESNET'或者'ALL'。其他使用的方法详见《参考》中“SQL参考 > SQL语法 > A > ALTER TABLE”和“SQL参考 > SQL语 - [最佳实践](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0782.md): 以下表及数据来源TPC-H 50X。生成如下数据表:插入10,000,000行数据:在数据表上创建四种不同的多列索引:针对数据表生成一批包含多列等值条件的查询,如下:分别测试不创建多列统计信息和创建ABO统计信息场景下的执行计划:通过上述操作可以看出,在该场景下,ABO基数估计使查询速度得到了有效提升。受环境、版本及部署形态差异影响,示例 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0783.md): 问题:训练报错。Model training failed, error XXX.处理方法:根据具体的error信息检查训练对象,并重试训练。处理方法:根据具体的error信息检查训练对象,并重试训练。问题:gs_ai_stats_explain报错。Cannot find table XXX.处理方法:检查传参是否为正确的表名。处理方法 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0785.md): 自适应代价估计是505.1版本引入的智能优化器增强特性,包含反馈基数估计与自适应代价参数调整两个模块。该特性持续收集历史查询的实际执行结果(查询计划中算子级别的实际行数基数及执行时间),并基于这些数据自动训练和更新反馈基数估计模型,同时根据实际运行结果动态校准代价模型参数。反馈基数估计模型可以建立查询条件与真实基数之间的映射关系,训练完成 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0786.md): 反馈基数估计反馈基数估计首先需要为每个待预测算子动态匹配对应的预测模型,其匹配逻辑基于算子特征的唯一哈希编码,该编码综合了算子所涉及的表、属性及查询条件等信息。同时,另一个机制为利用算子级别的历史数据,训练并应用UMM (Unified Mixture Model) 和 KNN (K-Nearest Neighbors) 模型,建模查询条 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0787.md): 数据库运行正常。反馈基数功能开启。数据库查询解析正常进入计划优化阶段。打开参数enable_adaptive_cost,其他参数使用默认设置即可开启本功能。反馈基数功能需要先收集基数才能修正统计偏差,只有通过explain (analyze)执行或执行时间超过adaptive_cost_min_time的SQL才会收集基数信息。当设置ad - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0788.md): 使用本特性进行计划生成,对于同一种查询前几次的计划不同,属于正常现象,收敛之后会获得更优计划。使用缓存计划不会触发本特性属于正常现象,无参数优化不会查找任何反馈模型。对于未通过explain (analyze)执行的sql语句,若生成计划的时间大于执行时间,则不会使用反馈基数。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0790.md): 优化器是SQL引擎的重要组成部分。在SQL引擎中,原始SQL语句通常会先经过解析器解析生成一棵查询树(QueryTree),然后由优化器对查询树进行逻辑优化和物理优化,最终生成执行器可以实际执行的查询计划(Plan)。其中,逻辑优化主要发生在优化器的规则模型中,因此也称为Rule-Based Optimizer(简称RBO),其主要功能是 - [单列统计信息](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0793.md): 行数和页面数描述整表的统计信息,reltuples表示该表包含多少行元组,relpages表示该表包含多少个页面。普通表从pg_class中查询,分区表的分区从pg_partition中查询。行数和页面数用于估算查询结果的大小,通常会结合其他统计信息(如NDV、MCV、直方图等)一起使用,以便更全面地了解数据的分布和存储情况。行数和页面数 - [多列统计信息](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0794.md): 多列统计信息是把一张表中的多个列看作一个整体,计算并获取其在整张表中的数据分布信息,统计信息种类主要包括NDV(distinct值数目)、MCV(most common value)、空值比例(nullfrac)、空值高频值(NULL_MCV)等。如果一条sql引用了多个列的约束条件,这些列之间相互独立,用单列统计信息计算时,会把这些约束 - [扫描路径生成](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0796.md): 扫描路径主要包括:顺序扫描路径(SeqScanPath)、索引扫描路径(IndexScanPath)、位图扫描路径(BitmapScanPath)等几种类型,本节主要针对这几类扫描路径进行说明。顺序扫描(SeqScan)顺序扫描即全表扫描,是GaussDB中最基础的一种扫描方式。这种扫描方式直接从磁盘中按顺序读取基表相关页面,将表中的所有 - [连接路径生成](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0797.md): 前面章节介绍了几类常用的基表扫描路径,包括:顺序扫描路径、索引扫描路径和位图扫描路径,但在实际的SQL查询场景中并非只涉及基表查询,而是经常需要对多个表做各种连接操作来生成最终查询结果,SQL查询中常用的连接操作包括:INNER JOIN、LEFT JOIN、SEMI JOIN等,因此针对这些连接运算GaussDB会在CBO优化器阶段生成 - [代价估算](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0799.md): 对于优化器来说,为了能够选出最优的执行计划,需要有可以衡量执行计划的标准。一个直观的比较不同查询计划优劣的标准即执行时间,一般而言,执行时间越短的查询计划越优,反之越差。然而同一个查询计划的执行时间会随着环境变量的不同而变化,如:机器配置(CPU 的频率、内存的大小和磁盘的介质等)会对实际执行性能产生影响,那么就需要一个无量纲的值来代替时 - [计划选择](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0800.md): 前面的章节介绍了数据库中几类常用的路径生成方式以及优化器的代价估算模型原理,在此基础上CBO优化器可以选择生成最终的执行计划。在路径生成阶段,优化器利用动态规划、遗传算法等尝试不同的连接路径,并且为这些路径标记了代价信息,优化器只需要根据代价进行比较把更小代价的路径选择出来,这样就得到了一棵最优路径树。路径选择过程中,主要关注如下几个因素 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0801.md): 本节将结合示例展示优化器基本的计划选择过程,使用如下建表语句:下面示例通过对同一个SQL的过滤条件取不同的常量值来展示代价模型对CBO优化器进行计划选择时的影响。首先,执行如下SQL语句并查看其选择的计划(过滤条件取值:t2.b <= 100):当过滤条件取值变为t2.b <= 3000时,优化器选择生成计划如下所示:上述SQL中,t1表 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0802.md): 场景一:为什么不能生成索引扫描路径?gaussdb=# CREATE TABLE t1(a INT, b INT, c INT, d INT); CREATE TABLE gaussdb=# CREATE INDEX idx_t1_a ON t1(a); CREATE INDEX gaussdb=# INSERT INTO t1 (a, - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0804.md): 自适应计划选择作用于使用通用缓存计划进行计划执行的场景。通过使用范围线性扩张进行缓存计划探索,通过范围覆盖匹配进行计划选择。自适应计划选择弥补了传统单一缓存计划无法根据查询条件参数进行变化带来的性能问题,并且避免了频繁调用查询优化。PBE方式执行的情况下,GaussDB中的查询计划可能会有以下三种来源:单个缓存计划(generic pla - [前置条件](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0805.md): 数据库运行正常。设置GUC参数enable_cachedplan_mgr = on,即可启动自适应计划选择功能。 - [使用指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0806.md): 现网环境下,对存在缓存计划问题的query可使用hint开启计划自适应管理能力:上述hint为可选,仅用于优先倾向生成aplan。不加hint时,只要满足条件(即enable_cachedplan_mgr = on且查询类型、执行次数等条件符合),aplan同样生效。JDBC客户端默认会将以上带hint的SQL转换为PBE模型,并建立查询 - [最佳实践](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0807.md): 多索引自适应选择支持,举例如下:性能对比:随机参数:c1~ random(1, 20); c2~ random(1, 20); c3~ random(1, 20); c4 ~ random(2, 10000)线程数50,客户端50,执行时长60s。 - [常见问题处理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0808.md): 对于过于复杂的慢查询由于特征范围限制,可能无法使用本特性正确进行计划选择。建议直接使用CPLAN进行查询计划生成。 - [AutoHint:智能HINT推荐](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0809.md): AutoHint(智能HINT推荐)将自动识别慢SQL执行计划树中耗时较长的算子,生成候选HINT进行替换,并通过贪心策略进行探索,最终生成能够提升当前慢SQL执行性能的HINT组合推荐给用户。在提升慢SQL性能的同时可以为用户节约人工调优所带来的人力与时间成本。数据库运行正常。确保当前用户拥有super权限。若反馈基数估计与自适应代价估 - [file_fdw](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0811.md): file_fdw模块提供了外部数据封装器file_fdw,可以用来在服务器的文件系统中访问数据文件。数据文件必须是COPY FROM可读的格式,具体请参见《参考》中“SQL参考 > SQL语法 > C > COPY”章节。使用file_fdw访问的数据文件是当前可读的,不支持对该数据文件的写入操作。当前GaussDB会默认编译file_f - [DSL规则引擎整体流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0813.md): DSL规则引擎使用DSL语言对SQL的查询改写规则进行描述,通过统一的原子化接口,形成特定语法,利用这些语法的灵活编排组合,符号化的描述能力,使得查询改写规则可以插件化集成,动态加载,从而增强查询改写的易开发、易部署、灵活可扩展性。DSL规则引擎处于SQL引擎中,且主要在运行态利用加载的DSL规则对SQL进行等价改写,从而帮助数据库在优化 - [DSL规则语法组件介绍](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0815.md): DSL规则引擎定义了一套语言语法规范,DSL语法可以描述为:"原模板 "=>"目标模板"的形式,用于将QueryTree与原模板匹配的节点 ,改写成根据目标模板构建的节点。其中模板由:语法关键词 、符号、变量 、函数和约束组成,其组成方式如图1所示。 - [DSL规则示例与说明](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0816.md): 本章节内容为DSL规则匹配的示例与说明,执行结果不为实际执行结果。简要描述:两个包含Count聚集函数的表达式子链接进行等值比较时,如果其中一个子链接可以表示为另一个子链接的子结构,且过滤条件仅相差一个EXISTS子链接条件时,可以对其进行优化。因为在此场景下,实际是想找到EXISTS条件返回FALSE的情况,在这种情况下两个count值 - [DSL规则引擎最佳实践](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0817.md): 基于DSL的规则引擎的使用受GUC参数控制,所以需要打开相关的参数才可以生效(enable_dsl_ruleengine = ON)。下面给出最佳实践样例。最佳实践中系统函数的调用权限请查看以下章节的相关说明:非透明多写特性:请参见《参考》中“SQL参考 > 函数和操作符 > DSL规则管理函数”章节。场景一:拥有权限的合法用户可以通过调 - [常见问题处理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0818.md): 场景一:关键字使用错误示例。gaussdb=#SELECT dsl_add_rule( 'compute_const', 'JOIN<> {ARGS: $expr: *} => FILTER<> {ARGS: (expr_compute $expr) }', 3, true); ERROR: syntax error at 'JOIN' - [SPM计划管理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0819.md): 业务数据变动或数据库版本升级等情况可能导致SQL执行计划的改变,这种改变可能提升SQL执行性能,也可能导致性能显著下降。为了确保这种变化始终朝着积极的方向发展,需要增加一个SPM(SQL Plan Management)组件来达成此目的。SPM处于SQL引擎中,且处于SQL引擎的两大核心组件优化器和执行器之间,用于完成对计划的固化,如图1 - [敏感数据发现](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0820.md): 敏感数据发现功能提供函数gs_sensitive_data_discovery()和gs_sensitive_data_discovery_detail(),通过调用的不同函数,指定扫描对象和敏感数据分类器,得到对应扫描对象不同明细级别的敏感数据信息。调用gs_sensitive_data_discovery()函数,扫描目标数据,返回统 - [动态数据脱敏](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0821.md): 数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0904.md): HTAP(Hybrid Transactional/Analytical Processing,混合事务/分析处理)在传统交易型数据库采用磁盘行存与火山模型执行器高效支持交易型查询负载基础上,通过引入列式存储、向量化执行、混合负载透明路由,在单个交易数据库内同时实现高效的交易型和分析型查询负载处理能力。集中式主机HTAP架构在包含原有的行 - [参数设置](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0906.md): HTAP混合负载功能。HTAP混合负载功能由参数enable_htap控制,开启为on,关闭为off。enable_htap为实例级别参数,详情请参见《参考》中“数据库运行参数说明 > GUC参数说明 > HTAP混合负载”章节。HTAP混合负载功能由参数enable_htap控制,开启为on,关闭为off。enable_htap为实例级 - [内存管控](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0907.md): HTAP的数据全部存放于GaussDB的内存上,配备对应的内存管控功能,避免内存占用过多影响行存查询或导致数据库内存溢出。HTAP的内存同时包含动态共享内存和非动态共享内存两部分。非动态共享内存部分为加载/重建/扫描等临时内存上下文等。动态共享内存为三层结构:第一层挂载在顶级动态内存上下文上,用于存放IMCV元信息以及HTAP必要的辅助数 - [创建和卸载IMCV](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0909.md): 语法HTAP通过ALTER方式对普通表创建IMCV的语法如表1所示。ALTER方式创建IMCV语法和相关影响语法加载列ALTER TABLE ... COLVIEW全部列。ALTER TABLE ... NOCOLVIEW无,IMCV信息被删除。ALTER TABLE ... NOCOLVIEW COLVIEW(col_list)col_ - [其他DDL](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0910.md): TRUNCATE表时会清除行存数据,同时级联处理加载的IMCV列存数据,不删除IMCV元信息。TRUNCATE分区时会清除行存表分区数据,同时级联处理该分区的IMCV列存数据,不删除IMCV元信息。示例:gaussdb=# CREATE TABLE htap_test( id int, dept_id int, salary int, n - [DML](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0912.md): HTAP由实时事务单元TMU记录DML操作带来的增量数据变更,并维护IMCV列查询时的数据新鲜度,保证与行存实时数据的一致性。示例: - [DQL](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0913.md): 在正确设置参数以及对目标表创建IMCV后便可进行DQL查询。在htap_router_mode为'auto'时,HTAP透明路由会根据数据和SQL特征选择最优执行计划,因此即使对目标表加载了IMCV,透明路由仍有可能会根据代价计算选择行存计划,具体执行计划可通过EXPLAIN查看。如果预期SQL执行时走IMCV列存计划更优,可以设置hta - [列回行混合扫描](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0914.md): 列回行混合扫描,是一种特殊的列存扫描方式。当查询所访问的列并非全部创建了列存,而且查询谓词涉及的所有列均创建IMCV,基于代价可生成列回行混合扫描计划。该特性可在内存有限、仅部分列创建IMCV的情况下,利用创建IMCV的列加速查询。示例: - [混合负载透明路由](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0915.md): 混合查询负载支持多种路由模式:自动路由、强制列存、强制行存,通过设置htap_router_mode='auto'、'column'、'row'来选择。创建一个包含几行数据的小表(test_small)以及包含3千行数据的大表(test_large)并插入数据。小表执行行存扫描更快,大表执行列存扫描更快。示例:通过设置htap_route - [列存数据维护](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0916.md): 列存数据加载是指首次根据行存数据生成该表对应的列存数据。在启用异步加载模式后,通过DDL命令为表创建IMCV时,系统仅会建立列存的元数据结构,并不会立刻生成实际的列存数据。系统提供两种列存数据的加载方式:后台HTAP Worker自动加载系统会在后台调度HTAP Worker,对目标表自动完成列存数据的构建。该方式无需人工干预,但其执行时 - [备机能力](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0917.md): HTAP备机能力可通过htap_deploy_mode参数设置。当设置htap_deploy_mode='primary',支持仅主机开启HTAP功能;当设置htap_deploy_mode='standby',支持仅备机开启HTAP功能;当设置htap_deploy_mode='all',支持主备机同时开启HTAP功能。主备机HTAP能 - [列存数据磁盘扩展](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0918.md): HTAP提供列存数据磁盘扩展功能,即当实际列存数据空间占用大于HTAP内存上限时,超出部分通过磁盘空间管理。该功能可通过设置参数htap_memctl_policy='swap'开启。该功能同时配套冷热数据管理来尽可能减少访问数据的磁盘I/O开销。列存元数据始终存储在内存中,当HTAP可用内存不足时,后台将访问频次较低的列存数据持久化到磁 - [列存数据压缩](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0919.md): HTAP提供数据压缩能力,提升内存资源使用率。该功能可通过htap_compression_methods参数开启。由于列存扫描需要对压缩数据进行解压,因此开启压缩功能后,相较于未开启压缩时,对列存扫描性能有一定影响。针对不同的数据类型,支持自适应选择更高效的压缩算法,当前支持的算法类型有Dict、Delta+RLE、LZ4。示例: - [在线DDL](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0931.md): 在线DDL支持对正常业务影响较小的情况下进行DDL,减少对业务的影响,提高业务运行的连续性和数据库的可用性。部分在线DDL只需要修改元数据,不涉及重建数据,操作时长较快,对业务影响较小。传统DDL操作若涉及重建数据,例如修改列类型、移动表空间、VACUUM FULL等操作,会对操作的表加长时间的排他锁,阻塞对该表的并发读写操作,影响用户业 - [按需构建阶段同步日志清单](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0933.md): 回放Xlog日志构建日志链时,普通DML语句产生的日志回放可以并行化,而由于DDL引起的如删除文件等操作的日志,需要由事务线程进行串行回放,这时,日志链构建线程需要等待事务线程回放完成才可以继续回放。类似的同步日志,都需要等待回放线程、事务线程和日志链构建线程达到同步点,才可以继续回放。表1 按需构建阶段同步日志类型列出了所有同步日志类型 - [按需读SQL语法白名单](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0934.md): 按需读阶段,由于页面尚未真正回放完成,仅提供有限且基础的SQL语法支持。表1 按需读SQL语法白名单是当前SQL语法支持白名单,在此范围以外的默认按照不支持处理。当全部页面回放完毕,SQL语法白名单限制会自动取消。系统函数gs_stat_ondemand_waiting_queue()可用于查询待回放队列实时状态,当查询结果每一行的que - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0936.md): 失效重编译是指在数据库中,当某个对象(如存储过程、触发器、视图、包等)失效后,进行的重新编译操作。它的目的是恢复失效对象的功能,确保这些对象能够正确执行。失效可能由多种原因引起,尤其是在数据库架构或依赖的对象发生变化后,比如表结构的修改、依赖对象的删除或更新等。失效重编译主要涉及以下几个功能模块:一次性入库:创建视图或存储过程,不满足编译 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0937.md): 依赖关系记录记录数据库对象间的依赖关系,用于数据库对象间的级联失效。记录数据库对象间的依赖关系,用于数据库对象间的级联失效。级联失效当依赖对象发生变更时,基于对象的依赖关系,沿依赖链路级联失效。当依赖对象发生变更时,基于对象的依赖关系,沿依赖链路级联失效。重编译通过自动重编译、手动重编译将数据库对象刷为有效。通过自动重编译、手动重编译将数 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0938.md): 控制PACKAGE、函数和存储过程的级联失效:设置ddl_invalid_mode为invalid。控制视图的级联失效:设置enable_view_invalidation为on。控制支持一次性入库:设置enable_force_create_obj为on。支持通过下面的语法对存储过程、PACKAGE、视图重新编译:ALTER PACKA - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0939.md): Q:怎么检查失效重编译特性是否可用?A:参考执行下面的命令,ddl_invalid_mode值为invalid表示支持PACKAGE、函数和存储过程的级联失效,enable_view_invalidation值为on表示支持视图的级联失效,enable_force_create_obj值为on表示支持一次性入库。Q:怎么查看包和包体的失效 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0943.md): pg_stat_activity系统视图的query字段显示该会话当前正在执行的SQL语句,在R2C10版本后,扩展支持查看存储过程内正在执行的SQL语句。会话执行存储过程阻塞时间较长,存储过程仍在执行未结束,需要确认当前会话执行到了存储过程的所处阶段,执行的语句,可以通过pg_stat_activity直观地看到相关的信息。必须开启GU - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0944.md): pg_stat_activity系统视图支持显示当前正在执行的语句,在语句解析期间会调用接口,将语句信息写到query字段。为了记录存储过程内正在执行的语句,当前的实现机制是在存储过程内语句解析期间,按照"query string: 最顶层的执行语句, current level: 当前语句的直接调用语句, lineno: 当前语句在执行 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0945.md): 需要开启track_activities和track_procedure_sql参数,参数值都设置为on。不涉及。pg_stat_activity系统视图中query字段显示长度受GUC参数track_activity_query_size控制,默认1024字节,语句过长会被截断显示不完整。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0947.md): 在505.2以后的版本中支持了trace存储过程正在执行的SQL语句能力,开启功能后,数据库会在存储过程执行期间将执行的每条语句记录下来,方便实时查看存储过程内正在执行的语句。存储过程执行期间,通过pg_stat_activity可以查看该存储过程的执行状态,通过开启trace功能,可以对存储过程执行实时监测,结合语句的执行计划,进一步分 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0948.md): trace存储过程中正在执行的语句的实现依赖于存储过程期间设置的回调函数,完成语句和统计信息的记录与收集。在存储过程执行前,执行dbe_perf.pl_trace_func_start接口,数据库会设置trace参数以及回调函数,启用trace功能;存储过程执行期间,语句前后的回调函数会把相应语句的记录和信息存放到链表中;存储过程执行完成 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0949.md): 需要在线程池模式(enable_thread_pool = on)下执行。不涉及。PL_TRACE_FUNC_CLEAN不可清理正在执行TRACE的session上的数据;TRACE功能不支持DBE_PERF模式下的存储过程;非透明多写特性下,TRACE功能和DBE_PROFILER功能不支持同时使用,若同时使用会报错。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0952.md): 503.1.SPC1800版本以后,支持存储过程慢SQL相关特性,可以通过DBE_PERF.STATEMENT_HISTORY、DBE_PERF.STATEMENT分析存储过程内执行慢的语句。当出现执行慢的存储过程语句时,如果不确定该语句是被哪个存储过程调用,可以借助慢SQL相关特性查找最外层调用语句、单次执行产生的指标,单条语句累计执行 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0953.md): 当前支持语句执行前生成unique_query_id,并在DBE_PERF.STATEMENT插入一条记录,供后续归一、上报刷新使用;语句执行期间,在DBE_PERF.STATEMENT中刷新相应语句的产生的指标;语句执行完,执行记录会判断是否是慢SQL,结合track_stat_stmt_level的值,决定是否需要记录到DBE_PER - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0954.md): 需要设置instr_unique_sql_track_type值为all。不涉及。DBE_PERF.STATEMENT表记录上限受instr_unique_sql_count控制,instr_unique_sql_track_type默认值为all,默认记录存储过程内语句,会使该表记录的语句条数更容易达到阈值,达到阈值后不会产生新的记录, - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0956.md): 505.0 版本以后,支持了DBE_PROFILER高级包,支持用户对目标存储过程进行profiling,以存储过程为单位,向使用者提供一个方便、直观、友好的界面去识别存储过程执行期间各个语句产生的消耗。在识别到慢语句是被哪个存储过程调用的情况下,只想确认存储过程内每个语句执行耗时信息,可以借由plprofiler工具实现。DBE_PRO - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0957.md): DBE_PROFILER工具提供两个系统函数DBE_PROFILER.PL_START_PROFILING,DBE_PROFILER.PL_CLEAR_PROFILING。用户调用DBE_PROFILER.PL_START_PROFILING函数通知数据库准备进行profiling,设置回调函数;数据库执行待profiling的存储过程, - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0958.md): 无。不涉及。无。 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0959.md): Q: 当遇到执行慢的存储过程,需要怎么分析?A: 遇到慢存储过程,可以参考下面的流程,分析执行慢的原因:如果该存储过程正在执行,可以通过pg_stat_activity查询存储过程的执行状态;通过pg_stat_activity获取session_id后,可以调用trace接口,实时监测执行信息,语句执行计划,进一步分析执行慢的原因;在非 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0962.md): JDBC(Java Database Connectivity,Java数据库连接)为多种关系型数据库提供统一访问接口,使Java应用程序能够与各种不同的数据库进行交互,从而实现数据的持久化和管理。JDBC允许Java应用程序通过SQL语句来执行数据库操作,包括查询、插入、更新和删除数据等。GaussDB库提供了对JDBC 4.2特性的支 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0963.md): JDBC架构主要包括三个组件:JDBC API(Interface Layer)JDBC驱动管理程序(Driver Manager)JDBC驱动程序(Driver Layer)Java应用程序发起数据库操作请求(如查询、更新),通过JDBC API接口与JDBC驱动管理程序通信,而JDBC驱动管理程序负责加载和管理JDBC驱动程序。JDB - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0965.md): 采用JDBC开发应用程序的流程,请参见图1。具体包含获取驱动jar包并配置JDK环境、连接数据库、执行SQL语句、处理结果集、关闭连接等几个部分。 - [获取驱动jar包并配置JDK环境](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0966.md): 环境准备包括获取驱动jar包、配置JDK环境。解压发布包,并从中获取对应的驱动jar包:Jdk8发布包提供支持JDK1.8环境的驱动包;Jdk17发布包提供支持JDK17环境的驱动包;Jdk21发布包提供支持JDK21环境的驱动包。Jdk8发布包目录结构(以X86为例)如下:GaussDB-Kernel_数据库版本号_Jdbc_X86_J - [连接数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0967.md): 加载驱动后,才能调用DriverManager.getConnection方法创建数据库连接。本章节介绍了DriverManager.getConnection(String url, String user, String password)方法和DriverManager.getConnection(String url, Prope - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0968.md): 应用程序通过执行SQL语句来操作数据库。本章节通过示例介绍CREATE TABLE、INSERT、UPDATE、SELECT等操作。执行普通SQL语句:创建表。执行批量插入处理语句:批量插入数据。执行预处理更新语句:更新数据。执行查询语句:返回ResultSet。前置条件:已连接数据库,连接对象为conn。执行普通SQL语句,创建cust - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0969.md): 执行查询语句后,需要对返回的结果集进行处理。 - [关闭数据库连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0970.md): 使用数据库连接完成相应的数据操作后,需要调用close()方法关闭数据库连接。Connection、Statement和ResultSet接口都有close()方法,在使用完对象后应把它们关闭。 - [最佳实践](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0971.md): GaussDB为用户提供JDBC的最佳实践。具体请参见《最佳实践》中“JDBC最佳实践”章节。 - [batchMode设置错误](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0973.md): 设置url参数batchMode=on且reWriteBatchedInserts=true,使用JDBC批量插入数据后,提示绑定参数数量与语句需要的参数数量不一致:示例:// conn是已经创建的Connection对象,创建该Connection的url参数包含batchMode=on&reWriteBatchedInserts=tr - [Hibernate框架插入数据开启校验时报错](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0974.md): 客户从A兼容模式数据库迁移到GaussDB数据库,表结构使用DRS工具进行迁移,迁移后客户原业务代码不可用,Hibernate框架校验表结构报错。示例:原A兼容模式数据库中Student表结构为如下格式:id number(15,0) sid number(15,0) age number(10,0)使用DRS工具迁移到GaussDB数据 - [使用SSL方式建连报错或阻塞](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0975.md): JDBC使用SSL方式建立连接时,会在客户端获取强随机数,建立连接过程中可能出现以下场景的报错。场景1:出现如下图所示报错。场景2:建连阻塞。如果url连接串中配置了loginTimeout后,会报Connection attempt timed out,如果不配置该参数,会一直阻塞。客户端环境随机数产生的速度太慢,无法满足产品要求,熵源 - [概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0977.md): ODBC(Open Database Connectivity,开放数据库互连)是由Microsoft公司基于X/OPEN CLI提出的数据库访问应用程序编程接口,采用C/C++语言实现。该技术通过提供标准化的数据访问接口,使应用程序能够以统一的方式访问异构数据库管理系统(DBMS),有效实现了数据库访问与具体DBMS类型及操作系统平台之 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0978.md): ODBC的架构包括三个主要组件:应用程序、ODBC驱动管理程序和ODBC驱动程序。应用程序使用ODBC API与ODBC驱动管理程序通信,而ODBC驱动管理程序负责加载和管理ODBC驱动程序。ODBC驱动程序则负责与特定的数据库通信,执行SQL查询并返回结果。操作系统分为UNIX/Linux和Windows两种,所以ODBC的架构也主要分 - [开发流程](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0980.md): ODBC开发流程如图1所示。具体包含获取源码包、ODBC包以及依赖库、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [获取源码包、ODBC包以及依赖库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0981.md): 基于ODBC开发用户需要获取unixODBC源码包、ODBC包以及依赖库。unixODBC源码包获取参考地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz。MD5文件下载地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz.md5。下载后需使用M - [连接数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0982.md): ODBC连接数据库之前需要准备好所需资源。连接数据库是通过配置ODBC数据源,使用ODBC API或者相应的驱动程序,实现应用程序与数据库之间的通信和交互。本章节介绍如何在Linux/Windows系统下配置数据源并连接到数据库。以unixODBC-2.3.7版本为例,在客户端执行如下命令安装unixODBC。tar zxvf unixO - [执行SQL语句](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0983.md): ODBC为应用程序与数据库的中心层,负责把应用程序发出的SQL指令传到数据库当中,自身并不解析SQL语法。故在应用程序中写入带有保密信息的SQL语句时(如明文密码),保密信息会被暴露在驱动日志中。数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。执行SQL - [处理结果集](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0984.md): ODBC处理结果集是从数据库中获取数据并将其提供给应用程序进行处理,作用包括但不限于:检索数据、数据展示、数据处理、数据传输和业务逻辑实现等。操作示例如下(完整示例请参见获取和处理数据库中的数据章节)。 - [关闭连接](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0985.md): 关闭数据库连接操作示例如下(完整示例请参见获取和处理数据库中的数据章节)。 - [最佳实践](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0986.md): GaussDB为用户提供ODBC的最佳实践。具体请参见《最佳实践》中“ODBC最佳实践”章节。 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0987.md): 可能的原因及确认方法:odbcinst.ini文件中配置的路径不正确。确认的方法:执行ls命令查询错误信息中的路径,以确保该gsqlodbcw.so文件存在,同时具有执行权限。确认的方法:执行ls命令查询错误信息中的路径,以确保该gsqlodbcw.so文件存在,同时具有执行权限。gsqlodbcw.so的依赖库不存在,或者不在系统环境变 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0989.md): 开启备机读功能后,备机将支持只读事务并满足数据一致性要求,有效缓解主机负载压力。系统需处理高并发访问请求,同时要求高可靠性与可用性,通常部署多个副本。通过设置数据库备机为可读模式,可以将部分查询请求分散到备机上执行,降低主数据库负载,充分利用备机硬件资源,减少硬件投入成本。配置备机读功能需启用参数:hot_standby=on。通过gsq - [三种回放模式](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0991.md): Redo Log(本章节统一称Xlog)是用于恢复已确认但未写入数据库的数据,记录数据修改后的值。GaussDB备机通过同步Xlog并进行回放实现主备机数据同步。主机会话线程在数据更新时优先确保Xlog写入磁盘。walsender线程持续将已落盘的本地Xlog传输至备机的walreceiver进程。备机walwriter进程将接收的Xlo - [串行回放备机读](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0992.md): 备机读线程在首次打开Relation时,会获取备机当前回放完成的最新Global XMin作为本地Snapshot XMin,并基于此快照执行读操作。事务状态变更通过两条Xlog记录实现:CSN Committing记录事务进入提交阶段。CSN Committed标记事务提交完成。仅当备机完成CSN Committed日志回放后,该事务对 - [并行回放备机读](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0993.md): 查询与回放冲突处理机制与串行回放备机读保持一致。由于并行回放采用文件级并行机制,某一时刻可能出现索引与表回放速度差异导致的两种异常场景:索引回放比表快,索引Tuple指向的Heap Tuple尚未写入Heap。索引回放比表慢,指向Heap的索引Tuple尚未写入索引。索引回放比表快,索引Tuple指向的Heap Tuple尚未写入Heap - [极致RTO回放备机读](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0994.md): 引入多版本读机制:当页面回放导致历史版本数据被覆盖时,日志系统将记录历史版本页面的base page,其余Xlog以LSN链形式持久化存储。读操作根据快照LSN判断应读取最新页面或历史版本页面。极致RTO备机读原理如下图所示。读线程select backend1执行涉及多个页面的读操作时,在打开relation阶段会获取当前极致RTO快照 - [容灾读](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0995.md): 容灾读功能与单数据库实例原理相同。仅与不同的回放模式相关。 - [环境规格与回放类型选择](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0997.md): 当 recovery_parse_workers = 1、recovery_redo_workers = 1、recovery_max_workers = 1 时,回放模式为串行回放。当 recovery_parse_workers = 1、recovery_redo_workers = 1、recovery_max_workers > - [操作步骤](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0998.md): recovery_parse_workers,recovery_redo_workers,recovery_max_workers:请参考环境规格与回放类型选择进行选择。日志回放级别需大于或等于hot_standby。备机读模块开关需设置为on。回放查询冲突时,备机在取消查询前会等待的时间;此参数会影响RTO。极致RTO场景需同时设置以下 - [注意事项](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-0999.md): 备机读设计思路是在保证回放RTO正常的前提下,通过提供只读功能分担主机压力并降低成本。其设计与实现过程中,始终优先保障备机回放功能不受影响。可通过配置优化或使用方法提升备机读成功率,但在实际业务场景中,难以保证备机上读操作100%成功,故对读要求极高的业务场景,仍建议部署在主机执行。备机读功能存在长查询保持时间与备机RTO延迟的矛盾。开启 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1000.md): 问题现象:当检测到查询与回放冲突时,回放线程将等待参数max_standby_streaming_delay设定的延迟时间,超时后向冲突线程发送取消指令,导致查询被终止并返回报错信息。报错详情如下:User was holding shared buffer pin for too long. 触发场景:备库在回放VACUUM相关类型日志 - [NVMe缓存](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1001.md): NVMe缓存主要针对数据写入量大,I/O易成为瓶颈的场景,通过添加一块高速NVMe盘作为数据库缓冲区,例如:EVS云盘之间的高速缓存。同时,支持SPDK模式的高速读写,跳过文件系统,以进一步降低NVMe缓存的读写延迟,提高读写速度。安装集中式数据库实例,设置nvme_cache_seg_num>0,local_storage_direct - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1004.md): 在数据库系统运行过程中,时常会遇到突发的业务请求流量过高、或者某些SQL占用资源过高的情况。SQL限流功能可以限制此类SQL的执行,阻止其耗尽数据库资源从而影响正常业务SQL的执行。本特性可以实现多种规则的SQL限流能力,限制DN进程级别的某类SQL语句或全部SQL语句的最大并发数,包括:根据Unique SQL ID进行限流:在明确某条 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1005.md): GaussDB启动时,会将SQL限流规则从系统表加载到内存中。SQL限流的流程如下:用户执行任意SQL语句时,GaussDB会根据该SQL语句去内存中匹配满足条件的限流规则。如果匹配到限流规则,将内存中该规则的dop字段值加1。dop字段用于记录限流规则的实时并发度。如果匹配到的限流规则的dop字段值大于或等于该规则允许的最大并发度,则进 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1006.md): GaussDB版本 ≥ 505.0.0。需要具有sysadmin权限的用户执行以下操作。 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1007.md): 问题:找不到gs_workload_rule系统表。解决:SQL限流特性是自505.0.0版本开始引入的,请确定您的数据库版本大于等于此版本。问题:设置了SQL限流规则,然后执行SQL语句,但没有触发SQL限流。解决:可以按下面步骤排查:查看GUC参数enable_workload_rule的取值是否为on?当该参数取值为off时,SQL - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1009.md): 名词解释一类SQL:unique sql id相同的SQL为一类SQL。异常SQL:一类因计划跳变或其他原因导致其执行所需CPU时间激增的SQL。一类SQL:unique sql id相同的SQL为一类SQL。异常SQL:一类因计划跳变或其他原因导致其执行所需CPU时间激增的SQL。功能分类识别异常SQL:自动识别GaussDB运行过程中 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1010.md): 本特性功能由以下三个线程配合实现,各线程核心功能如下:Throttler线程更新异常SQL的最大CPU可用时间(更新throttle异常Cgroup组CPU使用率控制上限百分比,可通过abnormal_sql_cpu_limit()查看)。判断GaussDB进程整体CPU时间是否紧张(CPU使用时间占总运行时间的比重是否超过abnorma - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1011.md): 依赖项:无。权限要求:执行系统函数需要对应的权限,详见技术原理。识别异常SQL功能依赖于DBE_PERF.STATEMENT中的SQL信息,若DBE_PERF.STATEMENT的条目数量达到上限(上限由GUC参数instr_unique_sql_count设置),后续未记录于DBE_PERF.STATEMENT的SQL无法被自动识别为异 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1012.md): 问题:手动添加进入异常SQL管控名单DBE_PERF.ABNORMAL_SQL的SQL没有立刻被管控?解答:未通过AbnormalSqlCpuWorker线程的校验,建议根据AbnormalSqlCpuWorker线程的检查条件进行排查,AbnormalSqlCpuWorker线程的检查条件详见技术原理。问题:调用clean_abnorm - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1014.md): 数据库内存出现过载问题时,快速关闭会话并禁止新连接接入,待内存恢复正常状态后恢复对外服务能力。当数据库由于I层异常使得SQL执行时延显著上升,导致大量会话积压,进一步引发内存资源耗尽,最终使数据库无法对外提供服务时,能够快速实现逃生,短时间内恢复对外提供服务的能力。I层指的是IaaS(Infrastructure as a Service - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1015.md): GUC参数resilience_memory_reject_percent会设置两个阈值:"recover_memory_percent, overload_memory_percent",具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。wlm_monitor线程定时检查动态内存使用率是否大 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1016.md): GUC参数use_workload_manager及enable_memory_limit参数打开,这两个参数默认是打开的,resilience_memory_reject_percent需要手动设置。 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1017.md): 问题:过载逃生不生效,导致数据库动态内存使用率高于逃生阈值。解决:查看use_workload_manager、enable_memory_limit是否打开,若关闭则无法生效。查看resilience_memory_reject_percent参数是否成功设置,如果设置时恢复阈值大于触发逃生的阈值,会导致参数设置失败,仍为默认值,通过系 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1019.md): 数据库线程池出现过载问题时,快速关闭会话并禁止新连接接入,待线程池恢复正常状态后恢复对外服务能力。当数据库由于I层异常导致SQL执行时延显著上升,导致大量会话积压,进一步引发线程池资源耗尽,最终使数据库无法对外提供服务时,能够快速实现逃生,短时间内恢复对外提供服务的能力。I层指的是IaaS(Infrastructure as a Serv - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1020.md): GUC参数resilience_threadpool_reject_cond会设置两个阈值:“recover_threadpool_percent, overload_threadpool_percent”,wlm_monitor线程定时检查线程池使用率是否大于overload_threadpool_percent %,条件满足时触发过载 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1021.md): GUC参数use_workload_manager及enable_thread_pool参数打开,这两个参数默认打开,resilience_threadpool_reject_cond需要手动设置。 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1022.md): 问题:频繁触发过载逃生。解决:查看resilience_threadpool_reject_cond设置的过载阈值是否过小,将过载的阈值增大。问题:过载逃生不生效,线程池使用率高于逃生阈值。解决:查看use_workload_manager和enable_thread_pool参数是否打开,若关闭则过载逃生功能无法生效。如果均已打开,查询 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1024.md): 在数据库系统运行过程中,经常出现由于并发建连数量大,建连任务抢占线程池,导致业务缺少线程池资源,出现业务吞吐量大幅下降的情况。增加建连线程池可以减少连接的接入对已建连业务执行SQL性能的影响,防止业务执行缓慢或吞吐量大幅跌落。通过在已有线程池中拆分出一个独立线程池,专门用于数据库处理建连流程,将业务与建连进行解耦,不在同一个线程池中争抢资 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1025.md): 打开建连线程池功能后,建连流程会发生变化,GaussDB收到建连事件时,会将任务派发到建连线程池中,由该线程池中的worker线程绑定到此连接对应的session执行初始化,初始化完成后,继续执行建连阶段的sql语句,建连结束后,将session派发到业务线程池中执行后续业务,详细流程如下:客户端(gsql或jdbc等)触发建连操作。Ga - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1026.md): GUC参数enable_connect_thread_pool和enable_thread_pool取值都为on。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1029.md): 将执行时间超过一定时间的SQL识别为慢SQL,限制慢SQL占用线程池总线程数的百分比及限制慢SQL的IOPS。慢SQL过多导致无空闲线程池线程供给正常SQL使用。功能约束:需要GUC参数enable_thread_pool取值为on。仅对非sysadmin、monitoradmin用户执行的SELECT类型的语句生效。限制IOPS功能需要 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1030.md): 设置GUC参数resilience_ctrlstmt_detect_timelimit或wlmrule Plan Hint,业务线程会在执行过程中设置对应时间的定时器,定时器到期后将当前业务线程标识为执行慢SQL的线程,对于执行慢SQL的线程将执行以下管控:当执行慢SQL的线程数量超过resilience_ctrlslot_availab - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1031.md): GUC参数enable_thread_pool取值为on,若需要对慢SQL限制IOPS则需设置GUC参数use_workload_manager取值为on。GUC参数全局生效,wlmrule Plan Hint仅对设置的SQL语句生效。GUC参数resilience_ctrlstmt_detect_timelimit、resilience - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1032.md): 问题:设置resilience_ctrlstmt_control_iopslimit后IO管控未明显生效?解答:检查GUC参数use_workload_manager取值是否为on,由于执行慢SQL的线程睡眠0~1秒内的随机值,无法将IOPS完全控制在resilience_ctrlstmt_control_iopslimit以下。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1034.md): GaussDB提供的应急链路,客户端可以通过接入该链路进行应急命令下发,本功能后简称“应急通道”。极端负载场景下,如CPU过载、内存过载、线程池满,连接池满,CM(集群管理组件)通过网络建连(libpq)连接数据库探活可能失败,进而触发主备倒换,通过应急通道可以避免此场景下的主备倒换。运维人员通过运维端口连接数据库也可能失败,导致一些关键 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1035.md): 进程间通信内核与CM交互链路不应受制于网络问题、高负载问题,采用进程间通信方式交互,具体使用了Unix domain socket(后简称UDS)实现。分析CM探活的场景,需考虑以下几点:指标时效:CM探活指标获取频率较高,部分指标采集周期为1次/s,采用共享内存具有滞后性,且需要额外考虑对指标时效性的判断;使用UDS的实时性较高,较符合 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1036.md): 应急通道需要打开GUC参数enable_emergency_access,另外生成mem_log的运维能力依赖于wlm_monitor线程及内存管理功能,需要打开GUC参数use_workload_manager和enable_memory_limit,参数均默认打开。GUC参数enable_emergency_accessr具体描述请参 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1037.md): 问题:执行gsql -O "{port} mem_log"后没有生成mem_log文件。解决:生成mem_log的运维能力依赖于wlm_monitor线程,及内存管理功能,需要打开use_workload_manager及enable_memory_limit参数,查看use_workload_manager及enable_memory_ - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1039.md): CM模块分为CMServer和CMAgent两个模块。CMServer是整个数据库实例的大脑,负责实例中各DN实例状态的监控,以及每一对DN主备HA角色的仲裁,根据CMAgent上报的各实例节点状态信息来仲裁实例是否需要状态变更,以及需要哪种变更。正常场景下,数据库实例需要有且只有一个CMServer主进行相关仲裁动作,CMServer会 - [DN仲裁](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1042.md): CM支持的DN仲裁模式主要分为Quorum模式和DCF模式,默认模式为Quorum模式。Quorum模式DN仲裁选主流程如下图所示:DN主实例故障(心跳超时6s/进程down/磁盘故障/端口故障/僵死)。CM检测到无主,即开始给正常节点发送lock1命令尝试锁住备DN。如果Redo回放完并且主备通信断开,则lock1成功,DN会处于pro - [CMServer仲裁](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1043.md): CMServer负责整个数据库实例中实例的仲裁及命令下发,相当于实例的大脑。当某个实例出现故障时,CMServer会进行实例仲裁,尝试恢复实例的可用状态;但当CMServer自身面临故障时,由于缺乏上层组件进行仲裁,其依靠的是自身的自仲裁机制来保障数据库实例的可用性。CMServer自仲裁选主如下图所示:CMServer会持续往ETCD中 - [ETCD仲裁](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1044.md): ETCD是一种开源分布式键值库,用于共享配置和服务发现,负责保存数据库实例的拓扑信息。它提供存储以及获取数据的接口,并通过协议保证ETCD实例中的多个节点数据的强一致性。ETCD可用于存储元信息以及共享配置信息,同时提供监听机制,允许客户端监听特定key或某些key的变更,实现变更的实时监听与推送。此外,ETCD提供key的过期以及续约机 - [磁盘检测](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1046.md): 规格:只检测DN、CM(CMA、CMS)的数据盘、日志盘以及DN的表空间所在盘。在默认参数下,读写磁盘的hang故障的RTO时间为60秒,其他操作(例如open)的hang故障的RTO时间为3分钟。可通过修改cm_agent参数disk_check_hung_timeout、disk_check_block_timeout(请参见《参考》 - [DN僵死检测](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1047.md): 当DN进程处于D、T、Z或者连接超时等僵死状态时,DN无法及时处理业务请求,导致业务中断,影响业务正常功能。CM支持根据配置值定时检测DN是否处于僵死状态,若DN连续处于僵死状态的次数达到设定值,将自动执行重启恢复操作。 - [急救室能力](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1048.md): 急救室是一个高度抽象的框架模型,由于故障存在假阳性和假阴性情况,因此需要框架更加的灵活,以应对不同场景和需求下的高可用。当前具备线程心跳自检、检测磁盘I/O hang(由于磁盘故障,导致无法进行数据写入和读取等)问题并自动隔离主DN的能力、系统资源监控能力、网络探测能力和支持异步日志功能。 - [硬件故障处理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1049.md): 硬件故障处理属于端到端全栈高可用能力。 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1050.md): 仲裁和故障检测均为自动进行。 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1051.md): Q:多数派故障后数据库实例无主。A:请参见《最佳实践》中“多数派故障最佳实践”章节。Q:DN发生主备倒换。A:在原主节点CMAgent日志中搜索killing xxx by force、inst(xxx) data(xxx) killed,或在CMServer主日志中搜索KEY_EVENT_RESTART;若存在相关记录,则表明是CM仲裁 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1054.md): 实现数据库实例内主DN与备DN角色的计划内切换(switchover),保障业务连续性。在安装数据库实例、升级、扩容等相关流程中,均包含实例内switchover流程。主DN无业务,备DN无日志积压的场景下(备DN RTO<10秒),switchover超时时间为120秒。在使用switchover前,应提前检查升主备DN的RTO值,如果 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1055.md): switchover执行流程分为以下核心阶段:使用cm_ctl下发switchover命令后,备DN会向主DN发送降备请求。主DN收到降备请求后,退出所有业务线程并进行销毁共享内存等相关操作。主DN更新节点状态为备DN,通知备DN主降备已完成。备DN收到主降备完成消息后,完成本地日志的回放并更新节点状态为主DN。完成switchover流 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1056.md): 在进行switchover操作之前,需要先确保数据库状态正常、所有业务结束,并使用pg_get_senders_catchup_time视图查询无主备追赶后,再进行switchover操作。switchover前主动执行一次CHECKPOINT,保证脏页刷盘完成,避免switchover执行超时。指定AZ的数据库主备倒换:cm_ctl s - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1057.md): 主降备超时导致switchover超时:主降备超时主要是因为后台线程或者关键线程的退出超时。需要查看日志定位($GAUSSLOG/gs_log/dn_xxxx/gaussdb-*.log)。主降备超时主要是因为后台线程或者关键线程的退出超时。需要查看日志定位($GAUSSLOG/gs_log/dn_xxxx/gaussdb-*.log)。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1059.md): 在确保数据零丢失的前提下,通过计划内切换主数据库实例和灾备数据库实例的角色(Switchover),实现在数据库维护升级与容灾演练等场景中对系统可用性的保证。倒换原理如下图所示。银行核心交易系统需定期验证容灾能力,通过主动switchover将主数据库实例切换至同城或者异地的灾备数据库实例,验证RPO=0(零数据丢失)且RTO(业务恢复时 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1060.md): 用户在管控平台下发数据库实例倒换命令后,管控会对主备实例同时发送倒换请求。灾备数据库实例收到切换命令后,暂停实例内仲裁,开启首备DN只读。灾备数据库实例的首备DN通过主备实例数据传输链路向主实例的主DN发起倒换请求,并接收增量日志进行回放。完成回放后,灾备数据库实例升为主实例。主数据库实例在收到灾备实例的倒换请求后,会退掉所有业务线程并清 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1064.md): 主备重建是GaussDB数据库服务高可用(HA)体系中的核心修复特性,它通过从主节点或完整备节点进行全量或增量同步数据的方式,解决因备节点数据延迟、磁盘损坏、日志断裂等原因导致其与主节点数据不一致的问题,从而实现备节点的快速纳管与数据库实例可用性的恢复。该特性是实现数据库实例高可用性、保证数据最终一致性的关键技术保障。通过基于WAL日志的 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1065.md): 一致性快照同步(Establish Snapshot)重建开始时,主节点上的WAL Sender线程首先会获取一个当前的一致性点(Checkpoint),并将该点的LSN(Log Sequence Number)和时间线(Timeline)信息发送给备节点。此快照点确保了重建数据的起点是一致的。重建开始时,主节点上的WAL Sender线 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1066.md): 软硬件要求:主备节点间网络互通,且防火墙已开放数据库端口和高可用通道端口。备节点磁盘空间充足,至少能容纳一份完整的数据副本。主备节点间网络互通,且防火墙已开放数据库端口和高可用通道端口。备节点磁盘空间充足,至少能容纳一份完整的数据副本。依赖项:主备节点GaussDB软件版本必须完全一致。主节点状态正常。主备节点GaussDB软件版本必须完 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1067.md): Q1:重建任务启动失败,报错“could not connect to server: Connection timed out”。问题现象:执行gs_ctl build命令后,长时间等待后返回连接超时错误。原因分析:主备节点之间的网络不通。主节点的监听地址(listen_addresses)未配置为备节点可访问的IP或*。防火墙或安全组 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1070.md): 就地升级是一种离线升级方式,需停止业务并中断服务,一次性完成数据库实例所有节点的升级。根据升级过程中是否涉及系统对象修改,现有升级工具的应用场景可分为两类:小版本(二进制)升级:适用于补丁安装、漏洞修复等场景。大版本升级:适用于新特性、新功能和新模块发布等场景。通过停止数据库实例运行、更新系统对象及切换二进制文件,实现数据库的离线就地升级 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1071.md): 支持两类升级模式:小版本升级:内核版本号保持不变,适用于补丁或漏洞修复。大版本升级:内核版本号变更,适用于新特性或功能发布。小版本升级:内核版本号保持不变,适用于补丁或漏洞修复。大版本升级:内核版本号变更,适用于新特性或功能发布。内核版本号在升级文件压缩包中的version.cfg的第二行查看。升级路径版本跨度不超过2个C版本。业务空载。 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1072.md): 环境要求:所有服务器操作系统运行状态正常。网络环境稳定无异常。所有服务器操作系统运行状态正常。网络环境稳定无异常。依赖项:已成功执行前置脚本gs_preinstall完成环境预配置。权限要求:需要使用执行gs_preinstall时指定的数据库实例用户进行安装操作。显示帮助信息。gs_upgradectl -? | --help显示版本号 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1073.md): 问题现象:新数据库实例与旧数据库实例的Commit ID完全一致。新数据库实例与旧数据库实例的Commit ID完全一致。原因分析:升级包版本与基线包版本相同,不允许升级。未执行升级操作直接发起Commit请求,违反操作流程规范。升级包版本与基线包版本相同,不允许升级。未执行升级操作直接发起Commit请求,违反操作流程规范。处理方法:更 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1075.md): 灰度升级是一种支持优先升级部分节点的在线升级方式。通过先选择部分节点进行灰度升级,进入灰度观察期观察新版本稳定性,再升级剩余节点的方式,实现全部升级操作。其核心实现包含以下三个维度:系统表与函数兼容性针对大版本升级导致的系统表变更,将新/旧版本系统表结构及系统函数固化于二进制内。确保新旧版本二进制均能解析并使用新旧系统表元组。针对大版本升 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1076.md): 灰度升级通过分阶段实施可达成以下目的:备DN优先升级:优先升级部分备DN节点,升级失败不影响业务连续性。按业务影响优先级升级组件:先升级业务影响小的组件节点(如ETCD、CMS),即使升级失败也可将对业务影响控制在最小范围。观察期验证机制:每批节点升级后均提供升级观察期窗口,验证升级状态,动态评估升级风险。备DN优先升级:优先升级部分备D - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1077.md): 环境要求:所有服务器操作系统运行状态正常。网络环境稳定无异常。所有服务器操作系统运行状态正常。网络环境稳定无异常。依赖项:已成功执行前置脚本gs_preinstall完成环境预配置。权限要求:需要使用执行gs_preinstall时指定的数据库实例用户进行安装操作。显示帮助信息。gs_upgradectl -? | --help显示版本号 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1078.md): Q:从A版本升级至B版本未执行提交操作,继续升级至C版本时触发Commit ID校验拦截。A:请在A版本升级到B版本提交后,再从B升级到C。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1080.md): 滚动升级允许用户指定部分AZ分片先升级,进入滚动观察期观察新版本是否运行正常,再升级剩余分片,实现全部升级操作。也可以一次升级所有分片。滚动升级支持全业务操作。采用滚动升级AZ分片的方式对数据库实例进行升级,要求输入的节点必须是一个AZ或者多个AZ的所有节点。升级每个分片时,都会产生不超过10s的业务中断。 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1081.md): 数据库升级体系向上对接数据库运维管理平台,通过标准化升级接口及专用工具gs_upgradectl对接DN和gsql,最终依托升级脚本完成数据库升级。指定auto_script参数升级脚本在切换二进制之后自动生成,小版本升级也会生成脚本并执行。该参数为内部升级方式过度使用参数,故未对数据库运维管理平台开放使用。为最小化二进制切换对节点业务的 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1082.md): 环境要求:所有服务器操作系统运行状态正常。网络环境稳定无异常。所有服务器操作系统运行状态正常。网络环境稳定无异常。依赖项:已成功执行前置脚本gs_preinstall完成环境预配置。权限要求:需要使用执行gs_preinstall时指定的数据库实例用户进行安装操作。显示帮助信息。gs_upgradectl -? | --help显示版本号 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1083.md): Q:A版本升级到B版本没有进行提交,继续升级到C,导致校验commitId拦截问题描述。A:请在A版本升级到B版本提交后,再从B升级到C。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1085.md): 随着企业数据规模持续扩大,节点数量急剧增长,硬件损坏概率相应攀升,物理节点替换修复已成为日常运维的常规操作。传统离线节点替换方案难以满足业务连续性需求,频繁的业务中断将给客户造成重大损失。当前主流数据库产品在节点替换过程中,普遍存在需中断业务或仅支持有限操作的局限性,无法适应海量数据场景下常态化物理节点替换需求。在线节点替换特性解决了上述 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1086.md): 节点修复与节点替换操作可在线完成,无需中断业务,主要依赖于数据库配置的动态加载生效及数据build后实例正常启动。具体流程步骤如下: - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1087.md): 节点修复若参数enable_synclist_single_inst值为off,则在一主多备场景下,每组DN中至少保证多数派实例正常工作,仅允许少数派实例故障。此时通过gs_replace修复故障DN不影响业务。数据库实例中至少存在一个正常运行的CM Server。若数据库实例中部署有ETCD,则正常的ETCD数量必须大于ETCD总数量的 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1088.md): Q:某实例故障,优先选择节点替换还是节点修复?A:实例故障建议优先选择节点修复,因为节点修复只针对故障的实例,正常实例不会受影响。节点替换主要用于服务器宕机或系统故障后,使用一个新节点对老节点进行替换,流程相对复杂。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1091.md): 用户可指定相同的SQL模板语句,重复执行该语句时可以跳过解析和计划生成操作,复用上次执行时生成的计划缓存,从而提升执行速度。用户可以在SQL语句上设置绑定参数,每次执行时绑定不同参数,复用计划模板。可分为以下步骤:预编译阶段:发送一个SQL语句(可绑定参数),并提供一个语句名作为键Key。执行阶段:指定语句名Key,并提供参数值以执行已编 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1092.md): SQL执行流程中,预编译计划缓存可复用从词法、语法分析到计划生成的完整流程,其中计划缓存复用效果受计划类型影响,复用成功后,每次执行仅需处理计划执行模块。预编译阶段,将对词法语法解析、语义分析及查询重写结果进行缓存,并启动查询优化与计划生成操作,生成计划时选择Generic Plan或Custom Plan。两种计划类型具有不同特性:Ge - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1093.md): JDBC示例调用Connection接口的prepareStatement方法创建预编译语句对象pstmt。PreparedStatement pstmt = conn.prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1" - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1094.md): 问题现象:为什么计划缓存没有复用?原因分析:preparethreshold等url参数设置不当会引发计划无法缓存复用。解决办法:请参见连接参数参考章节。预计在第prepareThreshold次发送SQL时才会指定语句Key,在会话上缓存计划并等待后续复用。在第prepareThreshold次前,发送的是不带语句Key的unnamed - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1096.md): 相同语句计划复用:是一项通过缓存执行计划优化查询性能的技术。其核心原理是缓存SQL语句及已生成的执行计划,当后续遇到相同SQL文本的SQL语句(包括所有字面值、大小写、空格等都需相同)时,直接复用缓存计划,从而跳过重复的解析、优化等耗时阶段。该功能支持GSQL发送的简单查询和PBE(包含batch)场景,SQL文本中可以包含用户指定的绑参 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1097.md): 相同语句计划复用相同语句计划复用流程原理图用户SQL语句经词法解析与语法解析后,对于相同的SQL语句计划实现复用。当用户第一次执行某SQL语句时,数据库对SQL语句进行语义解析及计划生成,同时将语义解析结果及计划根据SQL等关键信息作为键(Key)构建计划缓存哈希表,进行缓存。当后续遇到相同SQL文本的SQL语句(包括所有字面值、大小写、 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1098.md): cursor_sharing = exact,仅启用相同语句计划复用功能。建表及设置参数。gaussdb=# CREATE TABLE cursor_sharing_exact_tbl(col1 int, col2 int); CREATE TABLE gaussdb=# INSERT INTO cursor_sharing_exact_ - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1099.md): Q:自动参数化是否存在计划跳变问题?A:在自动参数化下,部分语句计划可能会发生变化。由于自动参数化将语句中的常量替换为参数,再进行绑参执行。在计划生成的过程中,部分场景下对常量及参数的处理有区别,因此导致设置cursor_sharing = force后,出现部分计划跳变的问题。如下示例中,SELECT * FROM cursor_sha - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1101.md): 全局共享计划缓存(Global Plan Cache, GPC)功能可共享不同会话间的执行计划。GPC在预编译计划缓存、自动参数化和相同语句计划复用的基础上生效,将缓存在会话内的计划存入GPC,使其在全局可见,其他会话可根据实际的SQL语句在全局计划缓存中获取所需的计划,并复用共享计划缓存进行执行操作。GPC可通过GUC参数enable_ - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1102.md): 以预编译PreparedStatement为例,计划缓存在当前会话上时,内存位置如图1所示,开启GPC全局共享计划后,内存位置如图2所示。用户指定预编译计划缓存,在会话上基于指定键Key(SQL语句和会话级GUC参数)生成预编译语句,通过Key在共享计划缓存中进行匹配并直接引用已匹配的缓存计划。自动参数化、相同语句计划复用、存储过程中计划 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1103.md): JDBC用例准备数据。gaussdb=> CREATE TABLE test_gpc_jdbc(col_a int, col_b int); CREATE TABLE gaussdb=> INSERT INTO test_gpc_jdbc VALUES(generate_series(1,1000), generate_series(1, - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1104.md): 为什么计划无法存入共享缓存?如果计划没有选择Generic Plan,或SQL中包含临时表或全局临时表时,会导致计划无法共享。具体约束请参见规格约束。如果共享计划缓存达到内存上限,且无法淘汰,也会无法存入共享。请参见计划缓存内存上限管控。 - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1106.md): 在数据库系统中,对于PBE场景以及启用cursor_sharing功能时,会话级和全局共享级计划缓存机制可能面临内存溢出风险。具体而言,若客户端频繁提交差异化SQL语句,会导致内核持续生成新的计划缓存条目。在缺乏有效清理机制的情况下,这些缓存条目会在内存中无限制累积,最终可能引发内存资源耗尽、系统不可用的严重故障。为解决此隐患,Gauss - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1107.md): 会话级计划缓存控制GaussDB接收到SQL语句后,首次执行该SQL时,对其进行词语法解析、查询重写等操作后生成执行计划,并在会话中对执行计划进行缓存并计算其占用的内存大小,并将生成执行计划必要的上下文信息进行保存,用于该执行计划触发淘汰机制后的重建操作。具体流程如图1所示。会话级计划缓存控制流程会话级的计划缓存管控通过一个LRU链表,根 - [会话级计划缓存管控](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1109.md): 启用逻辑内存管理模块,将enable_memory_limit参数设置为on,具体设置请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。设置成功后,重启数据库实例。设置成功后,重启数据库实例。打开会话级计划缓存管控。将GUC参数max_plancache_memory_ratio设置为大于0的取值。将 - [会话级存储过程内计划缓存管控](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1110.md): 开启GUC参数。新增GUC参数local_plsqlcache_threshold与GUC参数max_execute_functions同时生效,两者同时开启且设置过小时,可能存在互相干扰,导致无法达到上限值。GUC参数local_plsqlcache_threshold设置过小时,可能会导致内存频繁释放,影响性能。创建两个会话(sess - [全局共享级计划缓存管控](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1111.md): 开启PBE查询和存储过程中语句的执行计划进行缓存共享,将enable_global_plancache参数设置为on,具体设置请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 查询规划 > 其他优化器选项”章节。启用逻辑内存管理模块,将enable_memory_limit参数设置为on,具体设置请参见《参考》中“数据库运行参 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1112.md): 问题现象:打开计划缓存管控功能后执行业务语句,仍出现内存不可用问题。解决办法:请通过以下手段尝试解决:确认内存管控参数max_plancache_memory_ratio和global_plancache_memory_ratio是否为0,0表示关闭功能。查看参数enable_memory_limit是否为off,该参数受max_proc - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1114.md): DBLink功能是一种跨数据库访问的功能,用户可以在本地数据库利用DATABASE LINK(数据库连接)与远程数据库建立连接,通过DATABASE LINK实现访问远程数据库的目标。用户需要访问远程数据库表,提供查询,修改等操作。具体请参见规格约束。数据库连接(DATABASE LINK)通过创建DATABASE LINK对象,允许以对 - [技术原理](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1115.md): DATABASE LINK查询远程表基本流程的时序图如图1所示。语法解析阶段用户通过使用DATABASE LINK查询远程对象时,解析器会识别@dblink语法标识符,并生成对应的DBLink关系节点,标记远程对象属性。用户通过使用DATABASE LINK查询远程对象时,解析器会识别@dblink语法标识符,并生成对应的DBLink关系 - [操作指导](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1116.md): 连接GaussDB数据库时,需要在远程数据库节点机器上设置允许DATABASE LINK进行访问,并配置远程连接。DATABASE LINK连接Oracle数据库前,需要安装配置OCI(Oracle Call Interface)库。OCI配置步骤如下:以下以Version 19.24.0.0.0 (Requires glibc 2.14 - [常见问题](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1117.md): Q1:DATABASE LINK连接Oracle数据库查询远程数据时出现乱码,怎么解决?问题现象:DATABASE LINK连接Oracle数据库查询远程数据时,查询结果为?或¿。原因分析:存储在Oracle数据库中的字符不能转换为GaussDB数据库所支持的编码。处理方法:GaussDB数据库与Oracle数据库字符集保持一致以保证字符 - [SQL异常行为感知](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1122.md): SQL异常行为检测功能提供无条件删改、大规模影响、大规模返回、永真式、时间盲注异常行为的检测,并将异常行为记录至审计日志。设置并查看SQL异常行为检测功能是否已开启。将autonomy_risky_operation参数设置为“large_affected,large_return,no_where,tautology,inference - [特性概述](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1131.md): ROWID表是指包含ROWID/ROWNO系统列的表,ROWID不是普通的数据库列,而是一个伪列,表示表中每一行的唯一标识符。ROWID提供了对表中行的物理位置的直接访问,不需要在表中定义,每行数据自动拥有,不同表的ROWID可能重复,不支持通过INSERT/UPDATE/DELETE操作修改。本特性支持的ROWID表相关功能包括:ROW - [DDL](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1133.md): ROWID表创建和删除(astore+非段页式+非分区表为例):非ROWID表转换为ROWID表(astore+非段页式+非分区表为例):DDL语法的详细介绍请参见《参考》中“SQL参考 > SQL语法”章节 - [ROWID类型](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1134.md): ROWID包含定位表中某一行数据所需的关键信息,可用于快速定位指定数据行。ROWID类型由BASE64编码的字符串组成,包含如下信息:节点的分片编号,说明数据存储节点位置。hashbucket表的bucket编号。表的oid信息。行的编号,每一行数据的编号是唯一的。ROWID类型的详细介绍请参见《参考》中“SQL参考 > 数据类型 > R - [DML](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1135.md): ROWID系统列支持在DML语句中使用,包括INSERT/SELECT/UPDATE/DELETE语句,示例如下:在DML语句中使用ROWID系统列时,若打开GUC参数opt_behavior_knob的ROWID_OPT选项(详情请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 查询规划 > 其他优化器选项”章节内容),则支 - [数据库对象](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1137.md): 数据库对象是数据库逻辑结构的集合,常见的数据库对象有:表、视图、索引、序列、存储过程、包、用户等。数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。在GaussDB中,表空间是一个目录,实例中可以 - [模式(Schema)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1138.md): 模式(Schema)是数据库的对象之一,用于组织数据库中的表、视图、索引、函数和操作符等对象,其作用如下:逻辑隔离:将数据库对象组织成易于管理的逻辑组,不同的模式可以包含同名的对象而不冲突。权限控制:通过模式可以更细粒度地控制用户对数据库的访问权限。可以在模式级别授予或撤销权限,确保数据的安全性和隔离性。便于管理:模式使得数据库对象管理更 - [约束(Constraint)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1139.md): SQL约束用于规定表中的数据规则。如果一个用户试图在表中插入违反约束的数据,会抛出错误。约束分为以下几类:非空约束唯一约束主键约束检查约束外键约束含有非空约束的字段不能包含NULL值。只能创建字段级非空约束。在同一个表中可以定义多个非空约束。唯一约束的字段中不能包含重复值。在同一个表中可以定义多个非空约束。在定义唯一约束后,数据库会自动为 - [序列(Sequence)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1140.md): 序列(Sequence)是一种数据库对象,用于生成数字队列。序列的值可以按照设定的增量递增或者递减。Sequence默认最大值为2^63-1,如果使用了Large标识则最大值可以支持到2^127-1。序列的创建和使用--创建序列。 gaussdb=#CREATE SEQUENCE seq_test START WITH 1 - [系统列](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1141.md): 系统列是指数据库表中由数据库系统自动创建和维护的列,这些列用于存储表相关的元数据信息。系统列包含以下几种:oid:对象标识符,是数据库中每个表的唯一标识。ctid:行标识符,用于标识表中的行,每行都有一个唯一的ctid。xmin:事务标识符,表示表中插入该行的最小事务ID。xmax:事务标识符,表示表中删除或者更新该行的最大事务ID。cm - [分区表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1142.md): 数据库表分区是一种数据库优化的技术,可以将大表物理上分割成多个较小的部分以提高查询性能。每个部分称为一个分区,这些分区可以存储在不同的存储设备上。优点:提高查询性能:通过减少扫描的数据量使查询性能有显著地提升。优化存储:通过把不同分区存放到不同的存储介质上,来平衡性能和成本。增加可维护性:分区表的维护操作(数据清理、重建索引)可以从分区的 - [索引](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1144.md): 索引是数据库中用于加速数据检索的一种数据结构,通过创建指向表中数据的指针,使得数据库可以快速定位和访问特定的行,而无需扫描整个表。索引类似于书籍的目录,帮助用户快速定位所需要的内容,从而显著提高查询性能。虽然索引可以提高数据访问速度,但同时也增加了插入、更新、和删除操作的处理时间。所以是否要为表创建索引、索引建立在哪些字段上,是创建索引前 - [物化视图](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1145.md): 物化视图是一种特殊的物理表,与视图的区别是物化视图存储了查询结果,而不是查询的定义。相比视图物化视图在查询时有更高的速度,但物化视图无法实时更新,对于需要实时响应的业务不够灵活。物化视图又分为增量物化视图和全量物化视图。全量物化视图:全量物化视图需要刷新时,会对视图进行全量更新,即重新执行查询并将结果替换到当前视图中。适用于数据更新频率较 - [事务](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1146.md): 事务(Transaction)是数据库管理系统执行过程中的最小逻辑单位,由一个有限的数据库操作序列构成(通常由事务开始与事务结束之间执行的全部数据库操作组成)。这些操作要么全部成功执行,要么全部不执行,是一个不可分割的执行单位。当事务提交时,数据库管理系统必须确保事务中的所有操作都成功完成。如果事务中的任何一部分操作未成功,系统会将数据库 - [锁](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1147.md): 数据库对公共资源的并发控制是通过锁实现的,使用锁的一般流程操作可以简述为3步:加锁、临界区操作、放锁。当对表进行DDL/DML操作时,数据库会对表进行加锁操作,在事务结束时释放。GaussDB提供了8个级别的锁分别用于不同语句的并发,各操作对应的锁以如下表所示:当两个事务的锁产生冲突时,未获取到锁的线程会等待锁。如果等待时间超过了系统设置 - [PL/SQL简介](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1149.md): PL/SQL 提供了一种服务器端的存储过程语言,它易于使用,具备安全性且可移植。通过该语言,可以创建对象以访问和操作数据库数据。PL/SQL子程序是一个命名的PL/SQL块,它允许调用方提供只输入、只输出或者输入和输出的参数。子程序主要包括四种类型:过程、函数、包和触发器。子程序创建子程序结构如下:声明部分(可选)声明部分包括类型、变量、 - [游标(Cursor)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1150.md): 游标(Cursor)用于处理SQL影响的结果集,允许逐行地访问和操作这些结果集。它是指向查询结果集的一个指针,可以对每一行数据进行单独的处理。游标主要分为显示游标和隐式游标。%FOUND:用于测试对游标进行FETCH的操作是否检索到行,如果FETCH检索到行,则返回TRUE。%NOTFOUND:与%FOUND相反,如果FETCH操作没有检 - [存储过程(Procedure)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1151.md): 存储过程是预编译并存储在数据库中的程序,由一组SQL语句组成,用于执行一系列数据库操作。存储过程可以被多个应用程序调用,从而提高代码的复用性和维护性。存储过程的特点:复杂数据操作简化:执行需要多步操作的复杂业务逻辑,如批量数据处理、数据转换等。性能优化:通过预编译和减少网络通信,提高数据库操作的执行效率。安全性增强:将业务逻辑封装在存储过 - [函数(Function)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1152.md): 函数是一种数据库对象,用来返回单个值或表对象。函数必须有一个返回值,并且定义了返回值的类型。适用于需要返回单个值的情况,如进行计算、数据转换或返回表数据。如下示例中创建了一个名为add_num()的函数,入参是两个整数参数,并返回它们的和。 - [触发器(Trigger)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1153.md): 触发器是一种特殊的函数,当某个数据变更事件(INSERT、UPDATE、DELETE 或者 TRUNCATE)或者数据库事件(DDL语句)发生时自动执行,而不是由用户或者应用程序进行调用。创建触发器--创建COMPANY表。 gaussdb=#CREATE TABLE COMPANY( ID INT PRIMARY KEY - [包(Package)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1154.md): 包(Package)是一组相关的子程序,包括包所使用的游标和变量,一起存储在数据库中,以便作为一个单元继续使用。打包的子程序可以由应用程序或用户显式调用。具有以下特点:促进模块化编程:通过将相关的函数和存储过程封装在一个Package中,可以更容易地实现模块化编程。模块化可以提高代码的可读性和可维护性。断开依赖链:对某个数据库对象的修改( - [TOAST表](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1157.md): TOAST(The Oversized-Attribute Storage Technique)是一种特殊的存储机制。只有一些具有变长表现形式的数据才会支持TOAST,比如text类型。TOAST机制的主要目的是为了解决数据库中单个字段过大,无法直接存储在标准数据页中的问题。由于在GaussDB存储方式中,一条数据所有的字段组合在一起称为 - [HTAP](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1158.md): HTAP(Hybrid Transactional/Analytical Processing,混合事务分析处理)数据库架构是一种突破传统的处理事务型工作负载(OLTP)与分析型工作负载(OLAP)系统分离模式的技术创新方案。该架构通过统一数据存储引擎和计算资源调度机制,实现OLTP与OLAP在同一个技术架构内的协同运作,有效消除传统架构 - [全密态数据库](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1159.md): 全密态数据库是指能够解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态,同时密钥掌握在授权用户手中的数据库管理系统。全密态数据库使用多级加密模型,加密模型中涉及3个对象:数据、列密钥和主密钥,其关系如图1所示:以下是对3个对象的介绍数据:指SQL语法中包含的数据,比如 - [DDL](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1161.md): 数据库的 DDL 功能用于数据库对象的变更。GaussDB支持如下DDL功能:索引操作主键操作列操作生成列操作外键操作表操作分区操作模式操作数据库实例操作表空间操作索引操作主键操作列操作生成列操作外键操作表操作分区操作模式操作数据库实例操作表空间操作按照是否涉及 DDL 目标对象数据的处理,DDL 语句可以划分为两种类型:逻辑 DDL 语 - [预写式日志](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1162.md): 预写式日志(Write Ahead Log,缩写为WAL,也称为Xlog)是一种用于保证数据可靠性和系统可恢复性的技术。其核心思想是:在对数据文件进行修改之前,必须先将这些修改的操作记录写入日志文件,并将日志文件刷新到持久化存储器中。在系统崩溃时,可以使用WAL日志对集群进行恢复操作。WAL日志记录的详细程度分为几个级别,由GUC参数wa - [极致RTO](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1163.md): 极致RTO(Recovery Time Objective,恢复时间目标)功能是通过充分利用服务器的多核CPU资源,建立多级日志回放流水线,使备机日志回放的并发度提高到页面级,实现回放加速的高可用功能。GaussDB数据库的主机通过发送WAL日志给备机回放,实现主备同步。当业务压力过大时,如果备机的回放速度跟不上主机的速度,在系统长时间的 - [DCF](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1164.md): 概念DCF(Distributed Consensus Framework)分布式一致性框架,是一款自研的高性能、高度成熟可靠、易扩展、易使用的独立基础库,其他系统通过API接口可方便地集成DCF组件。DCF基于Paxos协议实现,解决分布式一致性问题,提升数据库实例高可靠高可用能力。作用和价值DCF常用于数据库高可用场景,保证数据库多副 - [CM](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1165.md): CM(Cluster Manager)是一款数据库资源管理与监控组件,提供高可用、自动化的实例管理和故障恢复能力,保障数据库的稳定运行。GaussDB提供了cm_ctl工具用来控制数据库服务。核心组件CMS(cm_server)是用来进行实例管理和实例仲裁的组件。功能:接收各个节点上CMA发送的各实例状态。监控实例的状态变化并进行仲裁命令 - [调用堆栈](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1166.md): 调用堆栈(Call Stack)是程序运行时由操作系统和编译器协同管理的核心机制,基于栈帧(Stack Frame)结构与硬件级栈指针实现,用于动态追踪函数调用层次与执行状态。在数据库运维场景中,调用堆栈的全链路可视化能力(如GaussDB的gs_stack()函数)可实时捕获线程级函数调用链,精确定位死锁、事务阻塞等高复杂度问题,相较于 - [等待事件](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1167.md): 等待事件是指数据库中的进程或线程在执行过程中,由于某些资源不可用或需要等待某些条件满足而暂时无法继续执行的状态。当一个事务或查询需要获取某个锁、读写磁盘、等待远程节点响应或访问共享内存结构时,就会进入“等待”状态。这些等待虽然短暂,但如果频繁发生或单次耗时过长,就会显著拖慢整体吞吐量。传统的性能监控往往只能看到某条 SQL 执行较慢,却无 - [备份恢复](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1168.md): 备份是通过复制数据库文件到指定的备份位置的过程,主要为了防止因硬件故障、人为误删、勒索攻击等场景数据丢失,从而可以更好地保护数据安全。恢复是将备份数据还原到数据库系统的过程。备份方式分类:物理备份:是指复制数据库的物理文件到指定的备份位置,不涉及数据库内部逻辑结构,备份速度快,但备份文件不可读,适合大规模数据库。逻辑备份:是指将数据库中的 - [GaussDB单表支持的最大列数?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1170.md): 答:1600列,但具体数值会因字段类型不同而变化。建表时不校验字段类型,数据存入时进行校验。例如bigint类型字段每个占用8字节数据,1600列总占用12800字节,超过单页容量8KB时插入会报错。字段超长时,可能存储到toast表,具体逻辑如下:元组总长度超过2KB时,优先尝试压缩最长列。压缩后仍超限且字段长度超过toast元信息开销 - [如何查询分区表分区信息和索引信息?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1171.md): 答:可以使用如下两种方式来确认:使用pg_get_tabledef()函数查看表的定义,返回信息包含建表SQL、注释、索引、约束等。例如:gaussdb=#SELECT pg_get_tabledef('table_name');分区信息可以查询视图pg_partition,索引信息可以查询视图pg_indexes。使用pg_get_ta - [什么是OID?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1172.md): 答:对象标识符(OID,Object identifiers),是数据库对象的唯一标识,这个对象可以是数据库、表、索引、视图等。 - [什么是UDF?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1173.md): 答:用户自定义函数(User Defined Function),用户可以根据自己的需求自定义一个函数嵌入到GaussDB中来实现特定的功能,以满足不同的业务场景。 - [GaussDB都有哪些通配符,如何使用?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1174.md): 答:GaussDB数据库支持以下三种通配符:%:表示任意数量的字符,包括0个,用于LIKE和NOT LIKE语句中。_:表示一个字符,用于LIKE和 NOT LIKE语句中。*:表示任意数量字符,包括0个,在部分元命令中使用。示例:--任意数量字符的通配符使用,查询tbl_test表中col1字段以ab开头任意多个字符结尾的数据。 gau - [数据库对象名称的长度是否有限制?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1175.md): 答:在创建数据库对象时,命名长度不可超过63个字节,超过数据库对象命名长度限制(63字节)时,数据库会将最后一个字节(而不是字符)截断,可能造成出现半个字符的情况。 - [如何查看某张表的创建时间?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1176.md): 答:在系统视图PG_TABLES里created字段的取值为表的真实创建时间。 - [如何并行创建索引?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1177.md): 答:参考如下方法: - [如何创建自动递增列?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1178.md): 答:GaussDB数据库支持创建自动递增列,可以在创建表时,指定SERIAL数据类型。示例:gaussdb=#CREATE TABLE table_name(id serial, name varchar(20));也可以使用如下方式: - [连接介绍](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1179.md): 通过psycopg2.connect函数建立数据库连接。函数的各参数说明,请参见psycopg2.connect()。使用psycopg2.connect函数连接数据库时,可以使用dsn参数传入一个字符串,也可以使用**kwargs传入多个关键字参数。方式1:psycopg2.connect(dsn)。该方式使用dsn参数传入一个字符串( - [LIMIT 2、LIMIT 2,3、LIMIT 2 OFFSET 3的区别?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1180.md): 答:LIMIT和OFFSET是用于限制SELECT语句中查询数据返回结果数量的关键字。LIMIT 2:表示查询结果只返回前2行数据。LIMIT 2,3:表示查询结果从第3行开始返回,一共返回3行数据。LIMIT 2 OFFSET 3:表示查询结果从第4行开始返回,一共返回2行数据。 - [如何创建默认为当前时间的列?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1181.md): 答:建表时设置字段默认值为CURRENT_TIMESTAMP。 - [如何判断字段是否为NULL?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1182.md): 答:使用IS NULL和IS NOT NULL来判断字段是否为NULL,例如: - [如何获取当前连接数据库的用户名?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1183.md): 答:执行以下命令查询当前用户名。gaussdb=#SELECT current_user; - [cursor.fetchmany(size)](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1184.md): 执行SQL查询后,调用fetchmany(size)会从游标的未读取结果中返回指定数量的行。每次调用会从上一次结束的位置继续读取,直到结果集耗尽。返回“最多size行”,但可能更少。具体返回结果,如表2所示。无 - [SQL语言分为哪几类?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1185.md): 答:SQL语言分为3类,分别为:DDL(Data Definition Language,数据定义语言),用于定义或修改数据库中的对象,如:表、索引、视图等。DML(Data Manipulation Language,数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。DCL(Data Control Langu - [触发器的作用是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1186.md): 答:触发器是一种特殊的存储过程,主要是通过事件来触发而被执行的。可以强化约束,维护数据的完整性和一致性。可以跟踪数据库内的操作,不允许未经许可的更新和变化。可以联级运算。 - [数据库事务正确执行的四个特性是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1187.md): 答:数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)正确执行,必须具备的四个特性ACID,Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。Atomicity(原子性):又称为不可分割性。一个事务中的所有操作,要么全部完成, - [GaussDB的DROP、TRUNCATE、DELETE这三种删除数据的方式主要区别是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1188.md): 答:DROP、TRUNCATE、DELETE这三种删除方式的区别主要体现在删除的速度和删除的范围上,具体如下:DROP语句的删除速度最快,可以删除整个表,包括表结构、数据、索引和权限。TRUNCATE语句的删除速度中等,可以删除表中的所有数据,但不删除表结构。DELETE语句的删除速度最慢,可以根据条件删除表中的数据,但不包括表结构。 - [GaussDB数据库一个汉字占几个字节?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1189.md): 答:取决于数据库的字符集编码,GBK字符集一个汉字占2个字节,UTF8字符集一个汉字占3个字节。 - [唯一约束和唯一索引有什么区别?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1191.md): 答:唯一约束和唯一索引的主要区别如下:唯一约束和唯一索引概念不同。唯一约束确保一列或者一组列中包含的数据对于表中所有的行都是唯一的。 唯一索引用于限制索引字段值的唯一性,或者是多个字段组合值的唯一性。CREATE UNIQUE INDEX创建唯一索引。唯一约束确保一列或者一组列中包含的数据对于表中所有的行都是唯一的。 唯一索引用于限制索引 - [GaussDB如何创建弱口令?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1192.md): 答:在GaussDB数据库中,弱口令字典默认为空,用户可以手动向系统表gs_global_config中新增一条或多条弱口令。示例如下: - [什么是脏读、幻读、不可重复读?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1193.md): 答:脏读、幻读、不可重复读都是事务并发存在的问题。脏读:A事务读取到B事务修改过但是没有提交的数据,B事务回滚。幻读:在前后两个时间段内执行对同一个数据的读取,可能出现不一致的结果。不可重复读:在同一事务中两次查询数据的内容不同。 - [什么是MVCC?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1194.md): 答:MVCC,即Multi-Version Concurrency Control(多版本并发控制)。MVCC是数据库并发控制协议的一种,写事务不会立即修改元组内容,每次操作都会在旧的版本之上创建新的版本,并且会保留旧的版本。当某个事务要读取数据时,数据库系统会从所有版本中选取出符合该事务隔离级别要求的版本。MVCC的主要优点是:读数据的 - [日期/时间类型哪些带时区,哪些不带时区?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1195.md): 答:date、time、timestamp、smalldatetime、datea等类型不带时区,timetz、timestamptz等类型带时区。 - [count(*)和count(column)的区别是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1196.md): 答:count()函数用于计算行数的聚合函数,区别如下:count(*)统计包括了所有列的行数,在统计结果时不会忽略值为NULL的数据。count(column)只包括列名那一列,在统计结果时会忽略值为NULL的数据。 - [空字符串和NULL的关系是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1197.md): 答:GaussDB中对空字符串是否为NULL和数据库的兼容模式有关。A兼容模式中空字符串判断为NULL。gaussdb=#CREATE DATABASE db_test1 DBCOMPATIBILITY = 'A'; gaussdb=#\c db_test1 db_test1=# SELECT '' IS NULL; ?column? - [GaussDB中模式、用户和角色如何理解?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1199.md): 答:模式是对数据库做一个逻辑分割,所有的数据库对象都建立在模式下面。模式和用户是弱绑定的,弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。用户和角色是用来控制对数据库的访问。一个数据库可能有很多的用户需要访问,为了方便管理这些用户,将用户组成一个数据库角色。根据角色自身的设置不同,一 - [同城双中心计划内倒换switchover流程异常](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1200.md): 现象一:主降备出现流程失败,查看日志primary_demote超时失败。主降备出现流程失败,查看日志primary_demote超时失败。现象二:备升主出现等待数据库实例状态恢复为normal状态超时,数据库实例状态Unavailable,无主DN。备升主出现等待数据库实例状态恢复为normal状态超时,数据库实例状态Unavailab - [以pg_temp或pg_toast_temp开头的SCHEMA是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1201.md): 答:在查询SCHEMA的时候,发现查询结果中存在以pg_temp或pg_toast_temp开头的SCHEMA如下所示。以pg_temp或者pg_toast_temp开头的表是在创建临时表时,通过每个会话以pg_temp开头的SCHEMA来保证只对当前会话可见。因此,不建议用户在日常操作中手动删除以pg_temp、pg_toast_tem - [函数和存储过程的区别是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1202.md): 答:函数和存储过程是数据库中常见的两种对象,两者都可以封装一系列的SQL语句,以完成某些特定的操作。两者区别见表1: - [为什么REVOKE某个用户的CONNECT ON DATABASE权限后还可以登录数据库?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1203.md): 答:使用REVOKE CONNECT ON DATABASE dbname FROM u1命令撤销u1的权限后,因为数据库的CONNECT权限授予了public,需要指定public来实现。GaussDB提供了一个隐式定义的拥有所有角色组public,所有创建的用户和角色默认拥有public所拥有的权限。需要撤销或重新授予用户和角色pub - [使用LIKE进行模糊查找时如何忽略大小写?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1205.md): 答:可以将LIKE改为ILIKE,也可以使用upper或者lower函数。具体示例如下:--前置操作创建表和插入数据。 gaussdb=#CREATE TABLE tbl_test1(c1 varchar); gaussdb=#INSERT INTO tbl_test1 VALUES ('EEE'),('ABC'),('abc'),(' - [在使用了字符串处理函数后查询就不使用索引,该如何处理?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1206.md): 答:在索引列上使用函数处理后就不会走标准的索引,可以创建一个表达式索引,以lpad()函数为例。 - [为什么查询中无法识别表名或者列名?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1207.md): 答:无法识别名称最常见的原因是创建过程中表名或者列名使用了双引号引入了大小写。使用双引号时,表名和列名(称为标识符)在存储是区分大小写的,所以在查询时必须使用双引号且大小写需要与创建时匹配。因为某些接口或应用程序在创建时会自动引入双引号,所以建议创建时统一使用小写。示例: - [存储过程嵌套调用的深度是多少?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1208.md): 答:存储过程调用存储过程的调用深度是没有限制的,但是不能超过最大栈深度,最大栈深度由GUC参数max_stack_depth控制,限制了会话中的存储过程嵌套调用的最大深度。 - [如何查看当前会话ID以及登录时间?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1209.md): 答:执行如下SQL可查看当前会话ID以及登录时间。 - [如何查看外表信息?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1210.md): 答:通过pg_get_tabledef()函数可以查看外表信息,具体如下示例: - [如何查看数据库用户的创建时间?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1211.md): 答:通过系统表PG_AUTH_HISTORY中的passwordtime字段查看用户密码的初始设置时间,即该用户的创建时间。 - [TOAST是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1212.md): 答:TOAST(The Oversized-Attribute Storage Technique)是GaussDB中的一个特殊表,主要用于存储超长数据字段。当一个元组的完整结构(包括字段)的长度超过了一个页面的大小限制时,GaussDB会启动TOAST机制,将这些字段压缩或切片成多个物理行存到另一张表(TOAST表)。 - [透明加密和全密态有什么区别?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1213.md): 答:透明加密和全密态都可以加密数据,但这是两种不同的加密模式,具体区别如下:加密位置不同:透明加密在数据库存储模块后加密,全密态在数据库驱动中加密。加密对象不同:透明加密数据页中的全部数据,全密态加密SQL语句中的某几列数据。加密性能不同:透明加密一次可以处理8k的数据页,全密态一次仅可以处理SQL语句中的一条数据,透明加密性能高于全密态 - [沙箱的作用是什么?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1214.md): 答:沙箱是一种安全机制。主要作用是给不受信任的程序提供一个隔离和受限的运行环境,使得高风险程序只能访问它需要访问的资源,其它不需要访问的资源禁止其访问,降低高风险程序自身的漏洞危害系统、危害其它进程、访问系统机密数据、隐私数据等风险。 - [如何查询数据库最近一次重启时间?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1216.md): 答:查询数据库最近一次重启时间,可以使用如下SQL查询语句: - [如何查询会话数?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1217.md): 答:查询会话数,可以使用如下SQL查询语句:说明:state值为空表明是其它用户的会话。 - [如何查询数据库运行时间?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1218.md): 答:查询数据库运行时间,可以使用如下SQL查询语句: - [创建模型服务前,如何生成OBS传输密钥?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1219.md): 答:创建服务时会对API-KEY进行加密操作,原理是复用OBS传输使用的密钥文件,如果该文件不存在则需要参考如下命令生成:gs_guc generate -S username -D $GAUSSHOME/bin -o obsserver - [如何查看数据库参数值?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1220.md): 答:数据库参数可以通过SHOW命令查看,或者通过pg_settings视图查看。例如: - [如何查看指定用户的会话连接数上限?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1221.md): 答:查看指定用户的会话连接数上限,可以使用如下SQL查询语句: - [什么是向量数据库?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1222.md): 答:向量数据库是一种专门设计用于存储、管理和检索高维度向量数据的数据库系统。与传统关系型数据库相比,它们在数据模型、索引机制和查询处理上有显著的不同。向量数据库通过优化的索引技术来提高非结构化数据的检索效率,同时,它们也能够支持复杂的数据分析和机器学习模型,使得数据处理更加高效和智能。向量数据库的主要应用场景包括:推荐系统:例如,在视频推 - [什么是GIN索引?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1223.md): 答:GIN(Generalized Inverted Index)通用倒排索引。当处理索引项为组合值的情况,查询时需要通过索引搜索出出现在组合值中的特定元素值。例如,文档是由多个单词组成,需要查询出文档中包含的特定单词。GIN索引大大加速模糊查询。GIN索引使用满足以下条件:在同一个表的同一个列上建立了多个GIN索引。这些GIN索引使用了 - [存储过程可以调用触发器吗?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1225.md): 答:可以,存储过程可以通过执行SQL语句(如UPDATE)触发TRIGGER。 - [如何查询表中的随机几行?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1226.md): 答:可以使用如下方式查询表中随机几条数据: - [为什么SEQUENCE的编号存在间隙?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1227.md): 答:为了提高并发性,每个会话按照序列的CACHE参数大小,在用户的私有内存空间缓存一定数量的序列值。会话结束后会丢弃会话缓存的序列值,因此序列值会出现跳跃。 - [如何实现使用N**M的方式实现N的M次幂的计算?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1228.md): 答:要实现N的M次幂计算可以使用power()函数和N^M来计算,如果必须要通过N**M可以创建自定义函数来实现。--使用power()来计算。 gaussdb=#SELECT power(5,2); --使用N^M来计算。 gaussdb=#SELECT 5^2; --创建操作符。 gaussdb=#CREATE OPERATOR - [如何解决power()函数计算结果数值太大时的误差?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1229.md): 答:一般power()函数计算结果大数值时有误差,例如2的60次方,准确值为1152921504606846976,使用SELECT power(2,60)的值为1.15292150460685e+18存在误差。具体解决办法如下:gaussdb=#SELECT power(2,60); power --- - [什么是CTID?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1230.md): 答:CTID通过表中的块和位置来标识特定的物理行。格式(blockid,itemid):比如(0,1)中的0标识块id,表示在0块的第一条记录。索引使用CTID来指向物理行。行的CTID会在更新时候变化,因此CTID不能用作长期标识符。 - [如何查询当前数据库中有哪些触发器,以及触发器的定义?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1231.md): 答:可以使用如下方式查询出当前数据库中的触发器信息。前置操作:创建表和触发器。--建表。 gaussdb=#CREATE TABLE test(c1 int); --创建触发器函数。 gaussdb=#CREATE OR REPLACE FUNCTION func_test() RETURNS TRIGGER AS $$ DECLARE - [为什么自增列插入0后无法通过该字段查询到该数据?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1232.md): 答:自增列插入值为0的数据后,表示自动为该字段分配下一个值。通过sql_mode参数增加no_auto_value_on_zero可以控制该机制(一般不建议在自增字段中插入值为0的数据)。 - [如何查询一个表涉及到的所有触发器?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1233.md): 答:通过如下SQL查询(请根据实际情况修改表名)。 - [如何查询表中某列第N大的数据?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1234.md): 答:可以使用窗口函数来实现。请根据实际情况选择row_number()、rank()和dense_rank()三个窗口函数其中之一。--建表插入数据。 gaussdb=#CREATE TABLE tbl_test(name varchar(20),tamo int); gaussdb=#INSERT INTO tbl_test VALUE - [如何保证数据的安全性?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1236.md): 答:GaussDB通过多种安全措施来保证数据的安全性,包括:加密技术:对敏感数据进行加密存储和传输,防止数据泄露。访问控制:通过用户认证和权限管理,控制不同的用户对数据的访问权限。备份和恢复:定期备份数据,并在需要时能够迅速恢复数据,防止数据丢失。审计和监控:可通过记录用户的操作行为,并进行实时监控和告警,以便及时发现和处理安全事件。 - [如何删除重复的行?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1237.md): 答:可以用如下两种方式。方式一:--建表和插入数据。 gaussdb=#CREATE TABLE tbl_del(c1 varchar,c2 int); gaussdb=#INSERT INTO tbl_del VALUES ('a',1),('a',1); gaussdb=#INSERT INTO tbl_del VALUES ('b' - [如何查询字段中包含非数字的数据?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1238.md): 答:可以通过如下SQL来查询。 - [如何修改列的顺序?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1239.md): 答:可通过如下方式修改列的顺序。场景一:在B兼容模式下,可以使用如下方式来修改表中列的顺序。--创建数据库。 gaussdb=#CREATE DATABASE test DBCOMPATIBILITY = 'B'; gaussdb=#\c test --建表并插入数据。 test=# CREATE TABLE tbl_test( - [M-Compatibility数据库不支持的GaussDB特性有哪些?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1240.md): M-Compatibility数据库当前暂不支持如下特性:物化视图。全密态数据库相关特性,包括“设置密态等值查询”和“内存解密逃生通道”。SPM计划管理。DB4AI特性。存储过程。 - [GaussDB Xlog日志自动回收的频率是多久?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1278.md): 答:GaussDB后台自动回收Xlog日志的线程是每一分钟会检测一次,回收满足条件的Xlog日志。当日志量达到一定数量时,日志才会触发回收,该值的计算方式是:wal_keep_segments + checkpoint_segments * 2 + 3 ,假设checkpoint_segments设置128,wal_keep_segme - [什么是死元组?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1279.md): 答:GaussDB目前使用Astore存储引擎,数据的更新是通过追加方式实现的,即对数据执行UPDATE或DELETE操作只是被标识为删除状态,并未立即释放空间。这种处理对于多版本并发控制(MVCC)是必要的,如果一个元组的版本仍有可能被其它事务看到,那么就不能删除。当事务提交后,过期元组版本将对事务不再有效,这些元组就会被标记为死元组。 - [如何查询表的死元组?](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1280.md): 答:使用pg_stat_all_tables查询死元组。 - [java.sql.Array](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1304.md): java.sql.Array接口是JDBC对SQL集合类型的映射,提供了将SQL数据以数组或ResultSet对象的形式传输到客户端的方法。getArray和getArray(long index, int count)接口获取的数组类型可参考数据类型映射关系的JAVA变量类型列。例如:元素类型为varchar,getArray接口获取的 - [java.sql.Struct](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1305.md): java.sql.Struct接口是JDBC对SQL结构化类型的映射,Struct对象包含其所代表的SQL结构化类型的每个属性值,提供了将SQL数据以数组的形式传输到客户端的方法。getAttribute接口获取的对象类型为Object[],返回的数组中每个元素的类型可参考数据类型映射关系的JAVA变量类型列。例如:对于record(c1 - [存储引擎](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1307.md): 数据库存储引擎负责数据的存储、检索和管理。从整个数据库服务的组成架构来看,存储引擎向上对接SQL引擎,为SQL引擎提供或接收标准化的数据格式(元组或向量数组),向下对接存储介质,按照特定的数据组织方式,以页面、压缩单元(Compress Unit)或其他形式为单位,通过存储介质提供的特定接口完成读写操作。GaussDB通过静态编译使数据库 - [闪回恢复](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1308.md): 闪回恢复功能是数据库恢复技术的一环,可以有选择性地撤销一个已提交的事务,将数据从人为不正确的操作中进行恢复。按照恢复对象与底层机制的不同,GaussDB闪回恢复主要分为:闪回查询、闪回表、闪回DROP/TRUNCATE和闪回库。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪 - [VACUUM](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/gaussdb-42-1309.md): 在GaussDB中,当数据被更新或删除时,系统并不会立即释放物理空间,而是将其标记为“可重用”。随着时间推移,表中的死元组会越来越多。死元组(dead tuples)是指已被删除或因更新而被新版本覆盖,不再被任何活跃事务引用的历史数据行。上述情况不仅会导致存储空间利用率下降,也可能影响查询性能,因为查询需要遍历这些无用的元组。而VACUU ## 用户指南 - [数据库实例支持修改的参数](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_014.md): 本章节介绍GaussDB数据库实例支持修改的实例参数。V2.0-10.x支持修改的参数V2.0-8.x支持修改的参数V2.0-3.x支持修改的参数V2.0-2.x支持修改的参数支持修改的参数如下:支持修改的参数如下:支持修改的参数如下:支持修改的参数如下: - [手动扩容指定分片下的磁盘](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_0195.md): GaussDB实例使用一段时间后业务攀升,原申请磁盘空间大小不足以支撑储存完整业务量。内核监测到磁盘使用率超过阈值时(默认值为85%,可以通过修改实例参数"cms:datastorage_threshold_value_check"进行配置),会将实例设置为只读,无法再写入数据,实例进入盘满只读状态。此外,若主机磁盘使用率高于阈值但备机未 - [修改GaussDB实例安全组](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_029.md): GaussDB实例创建成功后,若当前使用的安全组无法满足用户的业务需求,GaussDB支持用户修改实例的安全组。为保证数据库可正常访问,请确保数据库使用的安全组开通了相关端口的访问权限,假设数据库的访问端口是1611,那么需确保安全组开通了1611端口的访问。如何设置安全组请参考设置GaussDB实例安全组规则。容灾场景下,修改安全组时需 - [为GaussDB绑定或解绑NAT网关地址](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_030.md): 在公网访问场景中,用户需要通过弹性公网IP实现外部网络对数据库实例的连接。然而,直接绑定弹性公网IP的传统方式存在安全风险,若安全策略配置不完善或存在安全漏洞,攻击者可能窃取访问凭证,进而对数据库资源实施恶意操作。为解决这一安全隐患,GaussDB提供绑定NAT网关地址的功能,通过引入NAT网关将EIP绑定逻辑升级为通过公网NAT网关创建 - [修改GaussDB实例的可维护时间段](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_031.md): 可维护时间段是用户允许启动某项对数据库实例运行有影响的任务的时间范围,例如重启实例的时间窗。默认可维护时间段为02:00~06:00,用户可以根据业务需求修改可维护时间段。修改可维护时间段,不影响原有可维护时间段内定时任务的执行时间。建议将可维护时间段设置在业务低峰期,避免业务在维护过程中异常中断。修改成功后,在实例概览页面查看可维护时间 - [GaussDB事件管理](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_033.md): 为了保障数据库云服务的可持续性,系统会定期检测GaussDB实例的底层软硬件故障,当无法自动规避风险时,会对受影响的实例生成事件并进行上报。GaussDB支持您对事件操作进行授权,授权时支持立即执行事件,也可以指定开始时间。授权完成后,若事件为“待执行”状态,也可以再次修改事件执行的开始时间。此外,您还可以查看事件涉及的实例ID、事件类型 - [Oracle OCI插件概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_034.md): OCI(Oracle Call Interface )是Oracle提供的官方编程接口,允许应用程序直接与Oracle数据库进行交互。云数据库GaussDB集中式形态(Oracle兼容模式)支持通过DBLink调用Oracle提供的OCI接口,实现与Oracle的通信。使用Oracle OCI插件时,用户可以通过GaussDB控制台进行便 - [购买GaussDB实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_080.md): GaussDB的最小管理单元是实例,一个实例代表了一个独立运行的数据库。用户可以在控制台创建和管理GaussDB实例。本章将介绍在GaussDB的管理控制台购买实例。目前,GaussDB支持“按需计费”和“包年/包月”计费方式购买。您可以根据业务需要定制相应计算能力和存储空间的GaussDB实例。注册华为账号并开通华为云。完成实名认证。个 - [GaussDB实例连接方式介绍](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_083.md): GaussDB提供使用gsql、DBeaver、Navicat和数据管理服务(Data Admin Service,简称DAS)连接实例的方式。连接方式如图1所示。ECS与GaussDB实例在同一VPC、同一安全组时,默认ECS与GaussDB实例内网互通,则通过内网IP地址连接实例。ECS与GaussDB实例在同一VPC、不同安全组时, - [通过数据管理服务DAS连接实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_084.md): 数据管理服务(Data Admin Service,简称DAS)是用来登录和操作华为云上数据库的Web服务,提供数据库开发、运维、智能诊断的一站式云上数据库管理平台,方便用户使用和运维数据库。本章节主要介绍通过DAS连接GaussDB实例的方法。可以在“实例管理”页面,单击目标实例名称,进入实例的“基本信息”页面,在页面右上角,单击“登录 - [通过Navicat连接实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_085.md): Navicat Premium 16.2.8 Windows版已支持对GaussDB的管理和开发。本章介绍如何通过Navicat连接GaussDB实例。本章节以Navicat 16.3.3版本为例提供连接指导。因Navicat不同版本的操作界面可能不同,如需了解其他版本的操作,请参考对应版本的Navicat产品文档。单击此处下载或购买N - [查看GaussDB实例总览](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_098.md): GaussDB提供了实例总览页面,帮助您查看当前登录账号下已创建数据库实例的相关信息,包括实例状态统计、告警统计。没有数据库实例时,总览页面没有数据库实例相关信息,只展示“开始创建数据库实例”功能,新用户可依据界面提示创建实例。已有实例可展示实例相关信息。实例状态统计实例状态统计也可以通过实例管理页签查看。实例状态统计实例状态统计类别说明 - [通过IAM角色或策略授予使用GaussDB的权限](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_150.md): 如果您需要对您所拥有的GaussDB进行角色与策略的权限管理,可以使用统一身份认证服务(Identity and Access Management,简称IAM),通过IAM,则可以:根据企业的业务组织,在华为云账号中,给企业中不同职能部门的员工创建IAM用户,让员工拥有唯一安全凭证,并使用GaussDB资源。根据企业用户的职能,设置不同 - [通过IAM身份策略授予使用GaussDB的权限](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_151.md): 如果您需要对您所拥有的GaussDB进行身份策略的权限管理,可以使用统一身份认证服务(Identity and Access Management,简称IAM),通过IAM,可以:根据企业的业务组织,在华为云账号中,给企业中不同职能部门的员工创建用户或用户组,让员工拥有唯一安全凭证,并使用GaussDB资源。根据企业用户的职能,设置不同的 - [修改GaussDB实例名称](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_156.md): GaussDB支持修改实例名称,以方便用户识别。实例名称修改中,以下操作不可进行:绑定弹性公网IP。删除实例。创建备份。修改实例名称时,允许和已有名称重复。数据库实例名称修改后,数据库实例的标签仍与实例关联在一起。数据库实例名称修改后,数据库实例的备份仍会保留。您也可以单击目标实例名称,进入实例的“基本信息”页面,在基础信息模块实例名称处 - [重启GaussDB实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_157.md): 当修改的实例参数需要重启生效时,可以重启实例。如果数据库实例未处于正常状态,则无法重启该实例。数据库可能会由于部分原因而不可用,例如,正在进行以前请求的修改操作。重启数据库实例将导致数据库业务短暂中断,在此期间,数据库实例状态将显示为重启中。重启过程中,实例将不可用。重启后实例会自动释放内存中的缓存,请注意对业务进行预热,避免业务高峰期出 - [删除GaussDB按需实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_158.md): 当您需要删除创建失败的数据库实例,或因业务调整需要释放实例时,可在“实例管理”页面手动执行删除操作。“按需计费”类型的实例删除后将不再产生费用,实例生成的自动备份会被同步删除,保留的手动备份会继续收取费用。实例删除后,不可恢复,请谨慎操作。如需保留数据,请务必确认完成数据备份后再删除实例。执行操作中的实例不能手动删除,只有在实例操作完成后 - [绑定和解绑GaussDB实例弹性公网IP](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_160.md): GaussDB实例创建成功后,支持用户绑定弹性公网IP,在公共网络来访问数据库实例,绑定后也可根据需要解绑。为保证数据库可正常访问,请确保数据库使用的安全组开通了相关端口的访问权限,假设数据库的访问端口是1611,那么需确保安全组的入方向规则开通了1611端口的访问。如何设置安全组请参考设置GaussDB实例安全组规则。对于已绑定弹性公网 - [主备分布均衡](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_161.md): 由于数据库的各种异常或者人为进行的主备倒换,实例中部分DN发生了主备倒换,导致一个虚机上存在多个主DN,如图1、图2所示。这种情况会造成三台主机的负载不均衡,影响数据库的响应速度,从而影响整个实例的性能。为了解决这一问题,GaussDB提供了主备分布均衡功能,可以使实例重新回到“平衡”状态。实例在创建、变更规格、异常等状态下不能执行该操作 - [扩容实例协调节点(分布式)](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_162.md): 随着实例部署时间及业务的增长,数据库在运行性能及存储上逐渐会达到瓶颈。此时,需要通过增加主机来提升实例的性能及存储能力。GaussDB分布式独立部署形态支持扩容协调节点操作。扩容时长与业务数据量有关,默认扩容操作超时时间为7天。若超过7天,请在管理控制台右上角,选择新建工单,联系客服处理。扩容中实例可正常使用,但不允许进行其他管理控制台操 - [缩容实例协调节点(分布式)](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_163.md): 随着业务下降,数据库协调节点利用率低,资源浪费严重。为提高资源利用率,需要对协调节点进行缩容。GaussDB分布式独立部署形态支持协调节点缩容操作。协调节点缩容操作不会中断业务。仅支持独立部署实例。协调节点至少需要保留一个。缩容前请确认该节点不在JDBC连接配置中,避免影响JDBC连接高可用性能。缩容过程中执行的DDL操作将被回滚。缩容过 - [手动扩容实例磁盘](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_165.md): GaussDB实例使用一段时间后业务攀升,原申请磁盘空间大小不足以支撑储存完整业务量。内核监测到磁盘使用率超过阈值时(默认值为85%,可以通过修改实例参数“cms:datastorage_threshold_value_check”进行配置),会将实例设置为只读,无法再写入数据,实例进入盘满只读状态。此外,若主机磁盘使用率高于阈值但备机未 - [修改GaussDB实例参数](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_166.md): 为确保GaussDB实例发挥出最佳性能,您可以根据业务需求修改GaussDB数据库实例参数,也可以通过该功能查看当前实例所使用的参数值。GaussDB提供如下两类参数类型:公共参数:GaussDB安装后,有一套默认的运行参数,为了使GaussDB与业务的配合度更高,用户需要根据业务场景和数据量的大小进行参数调整。扩容重分布参数:数据库扩容 - [变更GaussDB实例的CPU和内存规格](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_168.md): CPU/内存规格可根据业务需要进行变更。GaussDB实例支持规格升配,也支持降配。规格变更前,须确保实例状态正常。实例异常,节点异常,磁盘满均不允许进行规格变更。高可用(1主2备)部署形态下,规格变更过程中会进行主备倒换,主备倒换过程中会有1min左右的业务中断。单副本的部署形态下,规格变更过程中会进行中断重启,中断重启过程中会有5~1 - [导出GaussDB实例列表](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_169.md): 您可以导出实例列表,查看并分析实例信息。单租户最多支持同时导出3000个实例,具体导出耗时与实例数量有关。 - [修改DN切换策略](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_170.md): GaussDB提供了数据高可靠和业务高可用两种故障切换策略,并支持在实例基本信息页面对切换策略进行修改。数据高可靠适用于对数据一致性要求高的场景,业务高可用适用对业务在线时间要求高的场景。该功能仅针对特定用户开放,如需配置白名单权限,您可以在管理控制台右上角,选择“新建工单”,提交开通白名单的申请。仅支持分布式版实例。在业务高可用场景下需 - [设置GaussDB实例安全组规则](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_171.md): 安全组是一个逻辑上的分组,为同一个虚拟私有云内具有相同安全保护需求,并相互信任的弹性云服务器和GaussDB实例提供访问策略。如果账号已经申请创建时支持不指定安全组的白名单,则不需要执行本章节,而且在实例详情页也不会有内网安全组信息。为了保障数据库的安全性和稳定性,在使用GaussDB实例之前,您需要设置安全组,开通需访问数据库的IP地址 - [变更单副本实例部署形态(集中式)](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_173.md): GaussDB提供了将单副本实例部署形态变更为多副本实例部署形态的功能。目前支持的部署形态变更场景:集中式版单副本实例变更为1主2备。集中式版单副本实例变更为1主1备1日志。集中式版单副本实例变更为1主2备。集中式版单副本实例变更为1主1备1日志。变更部署形态前,确认实例状态为normal。变更部署形态时,不支持磁盘扩容、规格变更、备份、 - [下载GaussDB错误日志和慢日志](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_174.md): GaussDB提供慢日志和错误日志的下载功能,慢日志可以帮助您定位SQL语句执行慢的问题,错误日志可查看集群的日志信息。实例CN与DN节点没有异常。实例所有节点与OBS网络连接正常。底层网络正常。慢日志文件采集最近12小时内的日志。下载完成后,可在本地进行分析。慢日志包含的字段如表1所示。慢日志字段字段名称类型描述message_vers - [同步数据至单副本实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_175.md): GaussDB提供了同步数据至单副本实例的功能,同步完成后,目标单副本实例的数据将与原三副本实例在复制开始前的数据完全一致。如果您仅进行日常开发和测试活动,可以通过该功能将三副本实例的数据同步至单副本实例中。使用单副本实例可以在满足基本需求的同时,有效降低资源消耗成本。实例状态异常,或者存在节点状态异常时,不允许执行本操作。单副本实例若在 - [执行DN主备倒换](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_180.md): GaussDB实例状态正常时支持对分片内的DN做主备切换,可以选择同一分片内的备DN进行升主操作。实例节点状态为异常时不能执行该操作。同一分片内只能指定一个备节点升主。单节点实例不支持DN分片主备倒换操作。主备倒换过程中,以下操作不可进行:实例重启AZ切换规格变更节点修复节点替换节点扩容备份恢复实例重启AZ切换规格变更节点修复节点替换节点 - [重启GaussDB节点](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_181.md): GaussDB实例节点状态为非正常状态时,可通过执行重启节点操作尝试将节点状态恢复正常。当实例节点状态为正常状态时,也可执行重启节点操作。重启过程中,节点不可用。当数据库在以下操作过程中,可以执行重启节点操作:备份恢复失败按需转包周期中流容灾主实例容灾中流容灾主实例日志保持中流容灾灾备实例演练中流容灾灾备实例容灾中流容灾灾备实例升主完成备 - [版本升级概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_183.md): 云数据库GaussDB支持用户手动升级内核版本,可按需选择单个实例或批量实例进行升级,并提供就地升级、灰度升级、热补丁升级多种升级方式。通过内核版本升级,可获得性能优化、新功能支持以及已知问题修复,提升数据库运行效率与稳定性。当前实例的版本信息可在实例“基本信息”页面,配置信息模块的数据库引擎版本处查询。您可以参考内核版本说明查询内核版本 - [就地升级](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_184.md): 当涉及新功能或问题修复等需要进行版本升级时,您可使用就地升级的方式。就地升级会一次性升级所有节点,升级过程中需要全程中断业务,不提供任何服务。仅单副本实例支持就地升级。升级时应用新增加的规格参数,可能会导致实例重启。重启过程中,实例将不可用。重启后实例会自动释放内存中的缓存,请在业务低峰期进行该操作,避免对高峰期业务造成影响。DN磁盘使用 - [灰度升级](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_185.md): 当涉及新功能或问题修复等需要进行版本升级时,云数据库GaussDB提供了灰度升级的方式,灰度升级支持升级自动提交和升级待观察两种操作方式。升级自动提交是先升级所有备DN,再升级主DN,最后升级CN,升级完成后会自动提交升级。升级待观察又名滚动升级。升级待观察方式升级完成后进入观察状态,可以在此期间观察业务状态,根据业务情况选择提交或回退本 - [热补丁升级](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_188.md): 云数据库GaussDB提供了热补丁升级方式,仅用于产品问题修复。热补丁可以在业务不中断的情况下加载补丁,在不影响业务的前提下,在线解决一部分数据库的紧急问题。热补丁升级方式支持手动回退操作。热补丁升级操作须有可以升级的热补丁,当没有可以升级的热补丁时,不显示热补丁升级。升级涉及热补丁包的下载及解压流程,会占用一定的磁盘空间,建议DN磁盘使 - [GaussDB开启透明加密](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_189.md): 用户实例需要使用透明加密功能时候可以在实例页面选择开启透明加密。该章节仅提供透明加密的开启操作指导,具体透明加密使用指导请参考透明数据加密。透明加密开启依赖KMS服务。开启透明加密后,需要手动在页面重启实例后功能生效。不支持跨云容灾场景。透明加密开启后,不支持修改密钥。数据库引擎版本大于等于V2.0-8.200.0的实例,进行透明加密后支 - [启动GaussDB实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_190.md): GaussDB支持在停止数据库实例后,手动重新开启实例。仅支持启动实例状态是“已停止”的实例。启动实例过程中不支持磁盘扩容、规格变更、备份、重置密码、重启实例、删除实例等操作。当DN分片内停止状态的节点数量超过分片副本数的一半时,可能导致实例异常,建议停止所有节点后启动实例。 - [停止GaussDB实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_191.md): GaussDB支持对实例进行手动停止操作,停止实例时,会停止所有节点上对应的数据库进程,并将节点对应的虚拟机进行关机处理,但部分相关资源依旧保留,如弹性公网IP(EIP)、存储资源、备份。如果您仅使用数据库实例进行日常开发活动,当开发任务处于非活跃时段,您可以通过暂时停止按需实例以节省部分费用。停止实例过程中以及停止后不支持磁盘扩容、规格 - [启动GaussDB节点](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_192.md): GaussDB支持在停止节点后,手动重新启动节点。仅支持启动节点状态是“已停止”的实例。启动节点操作与磁盘扩容、规格变更、备份、重置密码、重启实例、删除实例等互斥,即执行启动节点时无法执行备份恢复等操作,备份恢复时也无法执行启动节点操作。启动节点后,实例可能处于主备分布不均衡状态,需要联系运维评估是否需要执行主备均衡操作。当DN分片内停止 - [停止GaussDB节点](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_193.md): GaussDB支持对节点进行手动停止操作,此功能会停止节点上对应的数据库进程,并将节点对应的虚拟机进行关机处理,但部分相关资源依旧保留,如弹性公网IP(EIP)、存储资源、备份。如果您仅使用数据库实例进行日常开发活动,当开发任务处于非活跃时段,您可以通过暂时停止按需实例的节点以节省部分费用。停止节点可能会降低集群承受风险的能力,请谨慎操作 - [设置GaussDB实例回收站策略](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_195.md): GaussDB支持将删除的实例自动加入回收站管理,本章节介绍如何设置回收站保留天数。回收站策略机制默认开启,默认保留时间为7天,且不可关闭。修改回收站保留天数,仅对修改后新进入回收站的实例生效,对于修改前已经存在的实例,仍保持原来的回收策略,请您谨慎操作。回收站中待重建的实例不会计费。重建GaussDB实例 - [创建GaussDB自定义参数模板](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_198.md): 数据库参数模板用于存放各类数据库相关的参数配置,可同时应用于一个或多个数据库实例。GaussDB提供两类参数模板:系统默认参数模板和自定义参数模板。如果您在创建实例或恢复到新实例时未指定自定义参数模板,系统将自动为您的实例适配默认的参数模板。但请注意,默认模板中的参数值不支持修改。如果默认模板中的参数值不满足您的业务需求,您可以创建一个自 - [导出GaussDB实例参数](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_200.md): 您可以将该实例对应的参数模板信息(参数名称,值,描述)导出到CSV中,方便查看并分析。仅V2.0-2.7.1及以上版本的集中式版实例,在1主2备部署形态下,支持只读节点参数导出。如何查看实例版本请参见查看数据库引擎版本。导出到文件。将该实例对应的参数模板信息(参数名称、值、描述)导出到CSV表中,方便用户查看并分析。文件名称在4位到81位 - [查看GaussDB实例参数修改历史](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_202.md): 实例参数修改完成后,您可以查看实例参数的修改历史。GaussDB支持查看当前实例所使用参数模板的修改历史,以及自定义参数模板的修改历史。用户创建或复制的新参数模板,在未进行参数修改前,无修改历史。当前仅显示7天之内的参数修改历史。仅V2.0-2.7.1及以上版本的集中式版实例,在1主2备部署形态下,支持查看只读节点参数修改历史。如何查看实 - [备份概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_214.md): GaussDB支持数据库实例的备份和恢复,以保证数据可靠性。备份目前将以未加密的方式存储。备份存放在OBS桶,OBS备份恢复规格如下:在华为云标准环境下全量备份恢复的性能规格为2T数据在8小时以内完成全量备份或全量恢复。备份期间xlog不回收。当数据库或表被恶意或误删除,虽然GaussDB支持高可用,但备机数据库会被同步删除且无法还原。因 - [设置GaussDB实例级自动备份策略](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_216.md): 创建GaussDB实例时,系统默认开启实例级自动备份策略。实例创建成功后,您可根据业务需要修改实例级自动备份策略。GaussDB按照用户设置的自动备份策略对实例进行备份。GaussDB单副本实例V2.0-3.0以下版本不支持设置实例级自动备份策略。如何查看实例版本请参见查看数据库引擎版本。为了满足时间点恢复的需求,超出备份保留天数最近的一 - [设置GaussDB表级自动备份策略](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_217.md): 创建GaussDB实例时,系统默认不会开启自动表级备份策略。实例创建成功后,不会触发表级全量备份,您可根据业务需要设置表级自动备份策略。设置完表级备份策略之后GaussDB按照用户设置的自动表级备份策略对数据库指定表进行备份。实例级恢复自身后,表级自动备份策略中设置的库表可能不存在,需要重新设置表级自动备份策略。为了满足时间点恢复的需求, - [创建GaussDB实例级手动备份](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_219.md): GaussDB支持对运行正常的实例创建实例级手动备份,用户可以通过手动备份恢复数据,从而保证数据可靠性。手动备份是由用户启动的数据库实例的全量备份,不会随实例的删除而自动删除,会一直保存,直到用户手动删除。备份操作需要在实例状态为正常时才可以进行。不支持实例在执行主备切换操作期间进行备份。同一用户在一个实例上,同一时间只能进行一次实例级备 - [创建GaussDB表级手动备份](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_220.md): GaussDB支持对运行正常的实例创建表级手动备份,用户可以通过表级手动备份恢复数据,从而保证数据可靠性。备份操作需要在实例状态为正常时才可以进行。同一用户在一个实例上,同一时间只能进行一次表级备份操作。账户余额大于等于0元,才可创建表级手动备份。不支持选择系统库(postgres,template0,template1,template - [下载GaussDB备份文件](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_221.md): 用户可以下载使用OBS备份介质进行的备份文件,包括实例级和表级的全量备份、差量备份,用于本地存储备份。快照备份不支持下载。仅支持使用OBS Browser+下载。您也可在实例管理页面,单击指定的实例名称,在左侧导航栏单击备份恢复,选择需要下载的可用备份,单击目标备份对应的操作列中的“下载”。下载客户端工具OBS Browser+。下载客户 - [导出GaussDB实例备份信息](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_222.md): GaussDB支持导出备份,用户可以通过导出备份功能将备份信息(ID,备份名称,实例名称,实例ID,引擎,备份类型,备份开始时间,备份结束时间,备份状态,备份大小,备份描述)导出到csv并下载,方便用户查看并分析备份信息。GaussDB单副本实例V2.0-3.0以下版本不支持导出备份信息。如何查看实例版本请参见查看数据库引擎版本。只可导出 - [删除GaussDB实例手动备份](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_224.md): GaussDB支持对实例级手动备份进行删除,从而释放相关存储空间。手动备份删除后,不可恢复。自动备份的文件不可手动删除。恢复中的备份不允许删除。要删除备份,您必须登录到拥有备份的账户。GaussDB单副本实例V2.0-3.0以下版本不支持删除手动备份。如何查看实例版本请参见查看数据库引擎版本。您也可以在“实例管理”页面,单击实例名称,进入 - [通过备份文件恢复GaussDB实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_228.md): GaussDB支持使用已有的实例级自动备份和手动备份,将实例数据恢复到备份被创建时的状态。该操作恢复的为整个实例的数据。当前支持恢复到新实例、已有实例和当前实例。账户余额大于等于0元,才可恢复到新实例。恢复时目标实例异常、实例磁盘满将会导致恢复失败。实例级恢复过程中不支持执行任何数据库操作,否则可能会导致恢复失败。不支持跨大版本恢复。例如 - [通过备份文件恢复GaussDB库/表](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_229.md): GaussDB支持使用已有的实例级自动备份和手动备份,将指定库、表数据恢复到备份被创建时的状态。该操作恢复的是指定库或指定表的数据。GaussDB支持使用已有的表级自动备份和手动备份,将指定表数据恢复到备份被创建时的状态。该操作恢复的是指定表的数据。当前支持恢复到新实例、已有实例和当前实例。账户余额大于等于0元,才可恢复到新实例。恢复指定 - [恢复GaussDB实例到指定时间点](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_230.md): GaussDB支持使用已有的实例级自动备份,恢复实例数据到指定时间点。GaussDB支持将备份恢复到新实例、当前实例和已有实例。账户余额大于等于0元,才可恢复到新实例。恢复到任意时间点仅支持V2.0-2.1版本以上实例,单副本实例暂不支持。如何查看实例版本请参见查看数据库引擎版本。节点扩容,版本升级,恢复自身期间,对应时间点无法恢复。实例 - [恢复GaussDB库/表到指定时间点](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_231.md): GaussDB支持使用已有的实例级自动备份,恢复库、表数据到指定时间点。GaussDB支持使用已有的表级自动备份,恢复表数据到指定时间点。GaussDB支持将备份恢复到新实例、当前实例和已有实例。恢复指定库或表仅支持V2.0-3.200及以上版本实例,暂不支持单副本实例。节点扩容,版本升级,恢复自身期间,对应时间点无法恢复。实例故障,发生 - [GaussDB支持的监控指标](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_238.md): 本节定义了GaussDB上报云监控的监控指标的命名空间,监控指标列表和维度定义,用户可以通过云监控服务提供管理控制台或API接口来检索GaussDB产生的监控指标和告警信息。云监控服务最大支持4个层级维度,维度编号从0开始,编号3为最深层级。例如监控指标中的维度信息为“gaussdbv5_instance_id,gaussdbv5_nod - [GaussDB支持的事件说明](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_239.md): 事件监控提供了事件类型数据上报、查询和告警的功能。方便您将业务中的各类重要事件或对云资源的操作事件收集到云监控服务,并在事件发生时进行告警。事件即云监控服务保存并监控的数据库资源的关键操作,您可以通过“事件”了解到谁在什么时间对系统哪些资源做了什么操作,如规格变更等。事件监控为您提供上报自定义事件的接口,方便您将业务产生的异常事件或重要变 - [创建GaussDB实例告警规则](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_240.md): 通过设置数据库告警规则,用户可自定义监控目标与通知策略,及时了解数据库运行状况,从而起到预警作用。设置的告警规则包括设置告警规则名称、资源类型、维度、监控对象、监控指标、告警阈值、监控周期和是否发送通知等参数。关于告警参数的配置,请参见《云监控用户指南》。 - [查看GaussDB监控指标](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_241.md): 云服务平台提供的云监控,可以对数据库的运行状态进行日常监控。您可以通过管理控制台,直观地查看数据库的各项监控指标。您可以查看实例监控。由于监控数据的获取与传输会花费一定时间,因此,云监控显示的是当前时间5~10分钟前的数据库状态。如果您的数据库刚创建完成,请等待5~10分钟后查看监控数据。您也可通过GaussDB监控大盘查看数据库的各项监 - [创建GaussDB事件监控的告警规则](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_242.md): 当您需要关注核心事件时,通过为指定的事件创建告警规则及告警通知,可以及时收到告警信息,处理异常情况。本章节指导用户创建事件监控的告警规则。单击开启发送通知,生效时间默认为全天,若没有您想要选择的主题,可以单击下一行的创建主题进行添加,触发条件勾选出现告警和恢复正常。该告警规则仅在生效时间段内发送通知消息。该告警规则仅在生效时间段内发送通知 - [在CTS查看GaussDB云服务操作日志](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_248.md): 通过云审计服务,您可以记录与GaussDB云服务相关的操作事件,便于日后的查询、审计和回溯。用户可以在云审计服务的管理控制台查询GaussDB服务的事件列表(即审计日志)。详情请参考查看审计事件。 - [对接LTS并查看数据库审计日志](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_250.md): 审计日志记录了用户对数据库的启停、连接、DDL、DML、DCL等操作,日志中包含事件的时间、类型、执行结果、用户名、数据库、连接信息、数据库对象、数据库实例名称和端口号等详细信息。数据库安全管理员可以利用这些审计日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等,从而有效增强数据库系统对非法操作的追溯及举证能力。开 - [调整企业项目下的GaussDB资源配额](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_251.md): GaussDB在华为云的管理控制台提供配额管理的功能,可以对租户下的企业项目进行配额管理。只有账号为企业账号,并配置白名单后,才可以使用配额管理功能。如需配置白名单权限,您可以在管理控制台右上角,选择“新建工单”,提交开通白名单的申请。可以在此界面查看每个项目的实例使用情况、CPU使用情况、内存使用情况、存储空间信息。首次进入配额管理页面 - [搭建容灾关系](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_292.md): GaussDB实例通常部署在单一Region内为业务提供数据库服务。当整个Region发生故障(如电力中断、自然灾害等)时,单Region部署的数据库服务将不可用,导致业务中断。您可以在不同Region间搭建容灾关系,将主实例的数据持续同步至灾备实例,当主Region发生故障时,灾备实例可快速接管服务,保障业务连续性。本章节指导您如何搭建 - [查询容灾任务](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_293.md): 主备实例搭建容灾关系后,可在“容灾任务详情”页面查看数据同步状态。当前可查看的灾备状态如下:主实例:全量同步中:首次搭建时,主实例向备实例进行数据全量同步状态。全量同步失败:首次搭建时,主实例向备实例进行数据全量同步失败状态。降备中:切换容灾关系的主备状态中。此时,主实例会显示为“降备中”。增量同步中:容灾关系中,主实例持续向备实例进行数 - [容灾升主](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_294.md): 当主实例发生异常时,需要手动执行容灾升主,将灾备实例转化为主实例,本章提供了灾备实例升主的注意事项和操作指导。对于灾备实例正常,容灾状态处于增量恢复中时,可对灾备实例进行容灾升主操作。升主成功的实例可对外提供读写访问,未能成功升主的实例无法正常使用。容灾升主前建议限制原主实例的数据库写入操作,以防止主集群数据库和存储均正常的情况下发生fa - [结束容灾](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_295.md): 搭建容灾关系后,主实例会持续将数据同步至灾备实例。当业务架构调整不再需要跨Region容灾,或灾备实例需要释放用于其他用途,或需要重新规划容灾拓扑时,需要断开主实例与灾备实例之间的容灾关系。本章节提供断开主实例与灾备实例的容灾关系的操作指导。灾备任务结束后将无法继续容灾,需重新创建新的灾备任务。灾备任务结束后将自动清理网络配置,如需重新搭 - [删除容灾任务](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_296.md): 当灾备任务结束之后或者创建失败时,可以在控制台上删除已经结束的灾备任务记录。 - [主实例故障后重建灾备任务](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_297.md): 实例A与实例B已经搭建容灾关系,其中A为主实例,B为灾备实例。此时若主实例A故障,需要手动执行容灾升主,将灾备实例B升为主实例。待实例A修复之后,将实例B与实例A重新搭建容灾关系,然后将实例A通过容灾倒换切换成主实例。此时,B实例提供业务,需要将业务切换到B实例。此时,业务和灾备关系回到故障前的状态。主备切换完成后,A实例提供业务,需要将 - [容灾主备关系切换](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_298.md): 在容灾关系中,主实例提供读写服务,数据持续同步至灾备实例。当主实例需要进行计划性维护(如容灾切换演练、硬件更换),或业务需要迁移至灾备Region运行时,需要在不破坏容灾关系的前提下将灾备实例提升为主实例接管业务。您可以通过容灾主备切换,在主备Region及实例状态均正常的情况下互换主备角色,使原灾备实例成为新的主实例。本章提供了主备切换 - [容灾加回](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_299.md): 灾备实例升主后选择支持加回,可等待原主实例修复之后。在灾备实例侧下发加回操作,完成容灾重建,重建后原主实例变为灾备实例,原灾备实例变为主实例。流式容灾要求数据库引擎版本在V2.0-3.200及以上。如何查看实例版本请参见查看数据库引擎版本。灾备实例侧下发加回操作,完成容灾重建,重建后原主实例变为灾备实例,原灾备实例变为主实例。 - [流式容灾演练](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_300.md): 搭建容灾关系后,灾备实例能否在主实例故障时快速接管服务,直接关系到业务连续性。然而,未经实际验证的容灾方案可能因配置问题或数据同步异常等原因无法在关键时刻生效,存在“容而不灾”的风险。您可以通过流式容灾演练,在不影响实际容灾关系的前提下,临时在灾备实例上验证服务可用性,演练结束后数据将恢复至演练前状态。本章提供了流式容灾演练的注意事项和操 - [主实例日志保持](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_301.md): 如果预期内主备Region因网络问题有长时间断连,可提前在主实例下发日志保持,暂存增量数据,当网络恢复时避免全量日志同步。仅支持流式容灾,并且数据库引擎版本要求在V2.0-3.200及以上。如何查看实例版本请参见查看数据库引擎版本。跨云容灾场景的日志保持期间,不允许直接解除容灾关系。启动日志保持完成后,主实例任务变为日志保持中,此时主实例 - [灾备实例限制说明](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_302.md): 当实例成为灾备实例后,部分基本功能将不可用,部分监控指标将无法上报。本章介绍灾备实例的限制。容灾关系搭建后,灾备实例仅支持磁盘扩容、规格变更、重启和参数修改功能,主实例的基本功能限制如下:容灾关系搭建后,灾备实例的部分监控将不可用,灾备实例的监控指标如下:部署形态是“1主1备1日志”时,日志节点不存在数据磁盘,不支持展示数据磁盘节点级别相 - [退订GaussDB包周期实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_307.md): 当您不再需要使用数据库实例时,GaussDB 支持通过“删除”或“退订”两种方式释放资源,具体说明如下:对于“包年/包月”模式的数据库实例,需要退订订单,从而删除数据库实例资源。目前仅支持退订单个实例,具体退订操作请参考退订单个实例。关于退订费用,请参见退订规则说明。对于“按需计费”模式的实例,需要在实例管理页面对其进行删除,更多操作请参 - [GaussDB标签管理](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_310.md): GaussDB已对接华为云标签管理服务(Tag Management Service,TMS),为您提供便捷的标签管理能力。通过标签功能,您可以:灵活分类管理:为不同的GaussDB实例添加自定义标签,实现数据库实例的分类管理。例如,可按业务线、项目、环境(开发/测试/生产)等维度进行标注。快速检索定位:利用标签快速筛选和查找目标数据库实 - [GaussDB任务管理](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_382.md): 您可以通过任务中心查看用户在控制台上提交的任务的执行进度和状态。对于不再需要展示的任务,您也可以进行任务记录删除操作。删除任务将无法恢复,请谨慎操作。通过任务名称/任务ID、实例名称/ID确定目标任务,或通过上方搜索框选择任务名称确定目标任务。支持查看某一时间段内的任务执行进度和状态,默认时长为7天。任务保留时长最多为30天。任务保留时长 - [配置SQL限流](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_462.md): GaussDB提供SQL限流功能,当存在异常SQL(如存在不优索引)、SQL并发量上升时,通过SQL限流功能控制异常SQL的访问量或者并发量,保障服务的可用性。GaussDB还支持基于SQL的执行时间和执行次数,识别出性能消耗最高的SQL语句,并生成限流推荐规则,您可以基于高负载SQL创建相应的限流任务。登录账号需要具备授权项“gauss - [自动扩容实例磁盘](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_471.md): GaussDB支持在磁盘达到一个阈值时,自动扩容磁盘,保障磁盘空间充足。分布式混合部署实例不支持自动扩容。仅支持实例下所有节点是正常可执行的状态。磁盘自动扩容操作与磁盘扩容、节点扩容、磁盘类型变更、删除实例、快照检查、agent更新、磁盘自动扩容等操作互斥,即在执行上述动作时,即使成功设置了自动扩容磁盘策略,也无法执行自动扩容磁盘操作。集 - [查看并修改高级特性](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_473.md): 用户实例需要使用高级压缩、动态数据脱敏、防篡改功能时可以在实例详情页面选择开启。企业版或基础版实例版本为V2.0-8.1.0及以上支持修改高级压缩特性。企业版实例版本为V2.0-8.0.0及以上支持动态数据脱敏、防篡改特性。如何查看实例版本请参见查看数据库引擎版本。 - [查看GaussDB监控大盘](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_485.md): GaussDB支持同时查看实例多个实时性能指标数据以及对比实例各组件性能指标历史趋势。实例和节点必须选择。每次最多只能选择9个节点 。每次最多只能选择9个组件。若需获取监控指标的ID、含义、测量对象、维度等信息,请参考GaussDB支持的监控指标。 - [缩容实例分片(分布式)](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_489.md): 实例进行读写分离或者业务冗余数据清理等操作后DN节点使用率会下降,此时可通过分片缩容避免成本浪费。GaussDB分布式独立部署形态支持分片缩容操作。缩容时长与业务数据量有关,默认缩容操作超时时间为7天,缩容中实例可正常使用,但不允许进行其他管理控制台操作,如需要进行操作,请在管理控制台右上角,选择新建工单,提交申请。缩容期间会清理被缩减的 - [实时会话](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_492.md): GaussDB支持查看实例组件维度下所有的实时会话,并支持结束指定会话。您还可以通过查询表定义功能识别出SQL文本中的表名信息,并根据表名、Schema名以及库名进行表定义的查询。数据库引擎版本大于等于V2.0-3.208.0,内核版本大于等于503.1.0.SPC1200的实例支持查询表定义。“表定义”为白名单开放,如需配置白名单权限, - [停止GaussDB实例备份](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_497.md): GaussDB支持对实例级的备份任务进行停止,包括自动全量备份、手动全量备份和差量备份。停止备份操作会停止该实例所有进行中的全量备份和差量备份。只有V2.0-2.8及以上引擎版本的实例支持停止备份,且在停止备份操作后可通过“任务中心”查看停止备份任务信息。如何查看实例版本请参见查看数据库引擎版本。以下场景可能无法停止备份任务:备份即将结束 - [通过gsql连接实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_503.md): 本章介绍在管理控制台购买GaussDB实例后,如何使用gsql客户端连接GaussDB实例。步骤一:购买ECS步骤二:查询需要连接实例的IP地址和端口号步骤三:测试连通性步骤四:获取驱动包步骤五:连接数据库非SSL连接SSL连接非SSL连接SSL连接GaussDB提供gsql工具帮助用户在命令行下连接数据库,用户需要提前创建一台弹性云服务 - [通过DBeaver连接实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_504.md): DBeaver是一个通用的数据库客户端,可以通过配置不同驱动连接各种不同的数据库。本章介绍如何通过DBeaver连接GaussDB实例。本章节以DBeaver 24.1.4版本为例提供连接指导。因DBeaver不同版本的操作界面可能不同,如需了解其他版本的操作,请参考对应版本的DBeaver产品文档。DBeaver官网提供了针对不同操作系 - [约束限制](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_506.md): GaussDB提供了在发生极端灾难情况下,跨地域容灾的能力,极大地保证了数据的安全性。跨地域容灾通常是指主备数据中心距离在200KM以上的情况,主机房在发生极端灾难的情况下,备机房的数据还具备能继续提供服务的能力。搭建容灾关系类约束:当前仅支持主实例和灾备实例的一对一容灾关系,即主实例未正常停止,不可再次和其它实例建立容灾关系。分布式实例 - [GaussDB迁移方案总览](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_513.md): 云数据库GaussDB提供了多种数据迁移方案,可满足从MySQL数据库、Oracle数据库、GaussDB数据库、PostgreSQL数据库、DB2 for LUW、RDS for SQL Server、Microsoft SQL Server数据库到云数据库GaussDB的迁移。数据迁移工具有DRS、DAS和gs_loader。推荐使用 - [使用DAS的导出和导入功能迁移GaussDB数据](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_514.md): 数据管理服务(Data Admin Service,简称DAS)是用来登录和操作华为云上数据库的Web服务,提供数据库开发、运维、智能诊断的一站式云上数据库管理平台,方便用户使用和运维数据库。当进行数据备份或迁移时,支持使用DAS的数据导出功能,获取完整的数据信息,再将数据从本地或者从OBS桶导入目标数据表。更多信息,请参见导入导出。导入 - [调整GaussDB云服务资源配额](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_515.md): 为防止资源滥用,平台限定了各服务资源的配额,对用户的资源数量和容量做了限制。如您最多可以创建多少个云数据库GaussDB实例。如果当前资源配额限制无法满足使用需要,您可以申请扩大配额。提交申请后,您可以根据返回信息查看处理进展。立即生效:当目标配额不超过自动生效值,则系统自动审批通过,目标配额将在一分钟后生效。生效后,您可以在服务配额页面 - [修改M兼容端口](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_519.md): GaussDB新增支持使用templatem模板创建M-Compatibility库,为了更好地兼容M数据库端口,GaussDB支持通过管理控制台设置(包含开启、关闭或修改)集中式版实例的M-Compatibility库的兼容端口。本章节仅提供M兼容端口的开启、关闭或修改操作指导。创建M-Compatibility库请参考创建M-Comp - [变更备DN为日志节点(分布式)](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_520.md): 当前GaussDB分布式实例每个分片中的1个主DN,2个备DN节点可能并不满足您对业务的要求,GaussDB支持将所有分片中的其中1个备DN节点变更为日志节点。仅支持V2.0-3.200.0及以上版本的分布式实例,且每个分片中为1个主DN,2个备DN节点。如何查看实例版本请参见查看数据库引擎版本。切换日志节点的过程中PITR备份暂停,切换 - [修改GaussDB数据库端口](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_521.md): GaussDB支持修改实例的数据库端口。修改数据库端口仅支持V2.0-2.0及以上版本实例。如何查看实例版本请参见查看数据库引擎版本。修改端口将重启实例所有节点,重启期间业务会有闪断。修改端口后连接中断,重新连接需要使用修改后的端口。GaussDB实例的端口设置范围为1024~39989(其中2378~2380、2400、4999~500 - [创建GaussDB数据库用户](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_570.md): 创建云数据库GaussDB实例时,系统默认同步创建root用户,您可根据业务需要,添加其他用户。您可通过以下方式创建数据库用户:通过DAS创建数据库用户通过SQL语句创建数据库用户通过DAS创建数据库用户通过SQL语句创建数据库用户仅支持集中式版V2.0-8.100.0及以上版本的实例。可以在“实例管理”页面,单击目标实例名称,进入实例的 - [只读节点变更](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_586.md): 在集中式版实例中,当读请求大幅增加时,需要消耗大量的计算资源,可能会阻塞备节点xlog(事务日志)的回放,从而导致主备节点延迟升高。若主节点发生故障,xlog的堆积还可能会影响主备倒换的及时性。为解决这一问题,可以通过增加只读节点来分流读请求负载。此外,GaussDB还支持对只读节点进行删除和规格变更操作,能够灵活适应不同读场景下的业务需 - [创建GaussDB数据库](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_626.md): 云数据库GaussDB实例创建成功后,您可根据业务需要,创建更多数据库。创建数据库时,需要遵循相关设计规范建议,详情请参见开发设计建议。您可通过以下方式创建数据库:通过DAS创建数据库通过SQL语句创建数据库通过DAS创建数据库通过SQL语句创建数据库可以在“实例管理”页面,单击目标实例名称,进入实例的“基本信息”页面,在页面右上角,单击 - [数据库使用概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_627.md): 云数据库GaussDB实例创建成功后,您可根据业务需要,通过DAS或SQL语句方式进行创建数据库、创建数据库用户、创建表、向表中插入数据、删除表中数据等数据库的基本操作,如表1所示。进行数据库基本操作时,需要遵循相关设计规范建议,详情请参见开发设计建议。您还可以基于JDBC、ODBC、libpq、Psycopg、ecpg、Go驱动进行应用 - [重建GaussDB实例](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_629.md): 当您对实例执行删除操作时,系统会自动进行一次全量备份,该备份文件将被保留在回收站中。在回收站的保留期限内,您可以通过重建实例的方式恢复数据。重建时,系统将使用回收站中的全量备份文件创建一个新的实例。重建后的实例的内网地址将与原实例不同。 - [扩容和缩容实例概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_633.md): 用户在购买GaussDB实例后,随着业务变化,对资源的需求也可能发生变化。面对这种场景,GaussDB分布式独立部署形态的实例提供了扩缩容实例协调节点和分片功能,分布式混合部署形态的实例提供了扩容节点功能。用户可以根据自己的需求,灵活地调整资源。通过增加协调节点(CN)数量实现扩容。以原实例配置为1CN,3副本,1分片为例,若新增协调节点 - [扩容实例分片(分布式)](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_634.md): 随着实例部署时间及业务的增长,数据库在运行性能及存储上逐渐会达到瓶颈。此时,需要通过增加主机来提升实例的性能及存储能力。GaussDB分布式独立部署形态支持扩容分片操作。实例扩容过程中会进行锁表操作,可能会阻塞业务,属于高危操作。请选择在业务低峰期进行扩容。若涉及修改扩容参数或重分布控制参数,请务必在添加分片前完成。新增的分片支持指定不同 - [扩容磁盘概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_636.md): GaussDB实例使用一段时间后业务攀升,原申请磁盘空间大小不足以支撑储存完整业务量。此时,您可以通过磁盘扩容功能扩容数据库实例的磁盘。目前GaussDB支持的磁盘扩容方式见表1。以分布式独立部署形态为例,假设为默认配置3分片、3副本、3个协调节点(CN),扩容前存储空间总量为120GB,则每个分片为40GB(分片中每个DN节点均为40G - [变更部署形态概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_638.md): 为了满足多种业务需求,GaussDB提供了实例部署形态变更能力。目前支持的部署形态变更场景为:集中式版实例支持将单副本形态变更为1主2备或1主1备1日志形态。具体操作请参考变更单副本实例部署形态(集中式)。需要注意的是,单副本形态变更完成后不支持回退操作。分布式版实例支持将备DN节点变更为日志节点。具体操作请参考变更备DN为日志节点(分布 - [DN主备倒换概述](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_640.md): GaussDB分布式实例支持对分片内的DN做主备切换,可以选择同一分片内的一个备DN进行升主操作。以分布式独立部署形态为例,假设配置为3分片、3副本、3可用区。若对分片1中的节点进行主备倒换,并选择将可用区3的备节点升主,则执行主备倒换后,可用区2的节点将由主节点变更为备节点,可用区3的节点由备节点变更为主节点。DN主备倒换示意图Gaus - [GaussDB数据误操作恢复方案](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_646.md): 本章节介绍了常见的误操作的场景,您可以根据实际情况,选择对应的数据恢复方式。 - [管理GaussDB实例参数模板](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_647.md): 用户可以通过执行以下操作来管理GaussDB的参数模板。应用参数模板:参数模板编辑修改后,不会立即应用到实例,您可以根据业务需要应用到实例中,参数模板只能应用于相同版本的实例中。复制参数模板:您可以复制您创建的自定义数据库参数模板。当您已创建一个数据库参数模板,并且想在新的数据库参数模板中包含该组中的大部分自定义参数和值时,复制参数模板是 - [下载GaussDB强切日志](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_650.md): GaussDB提供强切日志的下载功能。业务高可用场景下,若开启了强切日志采集,当发生强切时,GaussDB可以采集备机来不及回放的xlog日志,并转义为SQL文件,用户可下载对应的SQL文件,判断数据是否需要,如果需要可通过执行SQL语句进行回放。实例CN与DN节点没有异常。实例所有节点与OBS网络连接正常。底层网络正常。仅分布式版的业务 - [生成WDR报告](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_660.md): WDR(Workload Diagnosis Report)报告基于两次不同时间点的系统性能快照数据,通过分析性能变化生成这两个时间点之间的性能表现报告,是长期性能问题诊断的主要手段。GaussDB支持生成WDR快照,用户可以在管理控制台采集和下载WDR报告。GaussDB实例的数据库引擎版本需要大于等于V2.0-3.100,内核版本大于 - [生成ASP报告](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_661.md): ASP(Active Session Profile)报告基于活跃会话采样的样本,从SQL、Session、Wait event维度分析,用于诊断数据库的短暂性能故障。GaussDB支持生成ASP数据,用户可以在管理控制台采集和下载ASP报告。GaussDB实例的数据库引擎版本需要大于等于V2.0-3.300,内核版本大于等于503.2。 - [查看GaussDB事件监控数据](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_666.md): 事件监控提供了事件类型数据上报、查询和告警的功能。方便您将业务中的各类重要事件或对云资源的操作事件收集到云监控服务,并在事件发生时进行告警。事件监控默认开通,您可以在事件监控中查看系统事件和自定义事件的监控详情。本章节指导用户查看事件监控的监控数据。您也可以单击页面左上角的,选择“数据库 > 云数据库 GaussDB,在“实例管理”页面, - [使用DRS将Oracle数据库迁移至GaussDB](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_681.md): 本章主要介绍如何使用DRS的实时同步功能将本地Oracle数据库实时迁移至华为云GaussDB。通过全量+增量同步,实现源数据库Oracle与目标数据库GaussDB的数据长期同步。全量同步可以实现数据迁移;增量同步可以实现实时同步源端和目标端两个库之间的数据。步骤一:创建VPC和安全组步骤二:创建GaussDB实例步骤三:迁移前构造数据 - [使用DRS将MySQL数据库迁移到GaussDB](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_682.md): 本章主要介绍如何使用DRS的实时同步功能将本地MySQL数据库实时迁移至华为云GaussDB。通过全量+增量同步,实现源数据库MySQL与目标数据库GaussDB的数据长期同步。步骤一:创建VPC和安全组步骤二:创建GaussDB实例步骤三:迁移前构造数据步骤四:迁移数据库步骤五:迁移后进行数据校验企业业务高速发展,传统数据库扩容性差,迫 - [使用copy to/from命令导出导入数据](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_683.md): gsql工具提供了元命令\copy进行数据导入导出。\copy只适合小批量、格式良好的数据导入,不会对非法字符做预处理,也无容错能力,无法适用于含有异常数据的场景。准备弹性云服务器或可通过公网访问GaussDB。通过弹性云服务器连接GaussDB数据库实例,需要创建一台弹性云服务器。创建并登录弹性云服务器,详细内容请参见“购买弹性云服务器 - [JDBC中使用COPY命令导出导入数据](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_684.md): 使用Java语言开发应用程序时,通过调用JDBC驱动的CopyManager接口,从文件或其他数据库向GaussDB写入数据。调用JDBC驱动的CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持CSV、TEXT等格式。样例程序如下,执行时需要加载GaussDB的JDBC驱动。下面 - [使用gs_dump和gs_dumpall命令导出数据](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_685.md): GaussDB提供的gs_dump和gs_dumpall工具,能够帮助用户导出需要的数据库对象或其相关信息。通过导入工具将导出的数据信息导入至需要的数据库,可以完成数据库信息的迁移。gs_dump支持导出单个数据库或其内的对象,而gs_dumpall支持导出数据库中所有数据库或各库的公共全局对象。详细的使用场景见表1。在多租场景下,gs_ - [使用gs_restore命令导入数据](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_686.md): gs_restore是GaussDB数据库提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录归档格式和tar归档格式。gs_restore具备如下两种功能。导入至数据库如果指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须 - [使用gs_loader工具导入数据](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_687.md): 对于copy to导出的文件,可以使用gs_loader工具进行数据导入。gs_loader将控制文件支持的语法转换为\COPY语法,然后利用已有的\COPY功能,做主要数据导入工作,同时gs_loader将\COPY结果记录到日志中。gs_loader工具当前不支持M-Compatibility数据库。使用gs_loader前请确保gs - [重置GaussDB实例管理员密码](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_689.md): 在使用GaussDB过程中,如果忘记数据库root账号密码,可以重新设置密码。如果您提供的密码被系统视为弱密码,您将收到错误提示,请提供更高强度的密码。如果数据库实例处于异常状态,则无法重置管理员密码。重置密码生效时间取决于该实例当前执行的业务数据量。请定期修改用户密码,以提高系统安全性,防止出现密码被暴力破解等安全风险。华为云账号被冻结 - [HashBucket表迁移](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_698.md): GaussDB支持普通表与HashBucket表类型相互转换,当集群中的普通表需要使用HashBucket相关特性时,需要先将普通表转换成HashBucket表。本章节仅为您介绍如何执行表类型转换操作,HashBucket特性介绍请参考《开发指南》中的bucket分布表章节。数据库引擎版本大于或等于V2.0-8.100.0的分布式实例支持 - [查看全量SQL](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_701.md): 全量SQL功能支持采集并持久化GaussDB数据库实例上的执行SQL语句,便于用户查看SQL语句的指标统计、执行详情等信息。支持实例级配置,可设置是否过滤系统用户和默认数据保留天数,并能按需选择要采集的SQL语句类型,以满足用户差异性采集需求。您还可以通过查询表定义功能识别出SQL文本中的表名信息,并根据表名、Schema名以及库名进行表 - [SQL全链路分析](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_702.md): 在日常业务SQL执行问题排查时,通常需要快速定位具体请求的执行链路,但仅依赖常规日志难以准确关联到某一条SQL或某个事务,导致问题定位效率低下。GaussDB支持通过唯一SQL ID或事务ID直接查询SQL执行链路,帮助用户快速定位问题根因,提升排查效率。登录账号需要具备授权项“gaussdb:instance:listSqlLink”。 - [插件安装](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_709.md): Yukon是超图公司开发的一款GIS插件,可以扩展地理空间数据的存储和管理能力,支持二三维一体化的空间数据存储能力,提供专业的GIS(Geographic Information System)功能,赋能传统关系型数据库。有关插件的详细介绍,请参考"云商店 > Yukon产品文档"。GaussDB提供实例内核插件(仅支持Yukon提供的p - [开启或关闭插件开关](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_710.md): GaussDB提供开启或者关闭插件的拓展能力。postgis插件的扩展仅支持postgis、postgis_sfcgal、postgis_raster、yukon_geomodel、yukon_geogridcoder、postgis_topology。插件拓展能力开启或关闭可重复下发。可支持多个用户库的单个拓展功能开启或者关闭。开启拓展 - [查看拓展功能模块](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_711.md): 插件安装成功后,可以通过此功能查询指定用户库下插件拓展功能的开启、关闭详情。 - [插件安装](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_713.md): 云数据库GaussDB集中式形态(Oracle兼容模式)支持通过DBLink连接到Oracle数据库。DBLink通过调用Oracle提供的OCI(Oracle Call Interface )接口与Oracle通信,使用前需要用户完成OCI的安装配置。本章节将为您介绍安装Oracle OCI插件的操作。安装插件前需要先将OCI插件包(例 - [配置目标IP](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_714.md): 插件安装完成后,GaussDB数据库实例支持通过DBLink功能连接一个或多个Oracle数据库。在连接前,需要对GaussDB数据库实例配置策略路由,以确保访问Oracle的请求可正常发出。完成Oracle OCI插件安装。提前打通GaussDB数据库实例的数据网卡与Oracle数据库之间的网络。最多支持添加10个目标服务IP。配置目标 - [开启SSL](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_715.md): 如果Oracle数据库中已启用SSL(Secure Sockets Layer)协议,GaussDB数据库通过DBLink连接开启SSL功能的Oracle数据库时,需要对GaussDB进行本章节配置。Oracle数据库开启SSL配置。导出Oracle服务端生成的证书:cwallet.sso、cwallet.sso.lck、localhos - [关闭SSL](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_716.md): 如果Oracle数据库曾启用SSL(Secure Sockets Layer)协议后关闭,且GaussDB数据库实例已安装Oracle OCI插件并开启了SSL功能,若需要关闭SSL协议,则需要参考本章节操作。GaussDB数据库实例已安装Oracle OCI插件,并开启SSL能力。关闭SSL操作会删除导入的证书并删除相关的配置。 - [插件卸载](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_720.md): 不需要使用GaussDB通过DBLink连接到Oracle数据库的能力时,参考本章节清除GaussDB实例上安装的OCI插件和相关配置文件。已安装Oracle OCI插件。若后续不再使用该插件,请卸载完插件后删除上传至OBS的Oracle OCI插件包,避免持续产生费用。OBS(对象存储服务)的详细收费标准请参考对象存储服务价格详情。 - [查看慢SQL](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_721.md): 慢SQL是指执行耗时超过预设阈值的SQL语句。GaussDB数据库实例存在慢SQL时,用户可以通过SQL限流功能控制异常SQL的访问量或者并发量,保障服务的可用性。支持SQL计划绑定和解绑操作,以及通过查询表定义功能识别出SQL文本中的表名信息,并根据表名、Schema名以及库名进行表定义的查询。因数据库内核未对慢SQL做持久化处理,在数 - [空间分析](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_802.md): 在GaussDB实例日常运维或者故障处理过程中,空间管理是保障数据库稳定运行的关键环节。然而,当空间出现异常时,传统排查方式效率低且易遗漏。为解决这一问题,GaussDB空间分析功能提供实例级数据盘空间概况总览、组件级数据盘使用量/XLOG大小/使用率等指标趋势监控,以及库表级数据空间,帮助用户多维度分析,快速定位空间瓶颈,实现高效问题诊 - [选型建议](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_809.md): 在购买GaussDB实例前,您需要考虑价格、性能、负载及业务场景等因素,以确保您能够选择合适的实例进行购买。GaussDB的计费模式、产品类型、实例类型、部署形态、存储类型、性能规格之间存在差异,通过本章节描述,您可以了解不同实例及存储类型之间的区别,从而帮助您进行快速选型。云数据库GaussDB提供包年/包月、按需计费两种计费模式,以满 - [会话统计](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_861.md): GaussDB支持查看用户、访问来源、数据库维度的活跃数和总数。GaussDB实例的数据库引擎版本需要大于等于V2.0-3.100,内核版本大于等于503.0。版本号查询方法请参见查看云数据库GaussDB数据库和内核引擎版本。 - [查看Top SQL](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_870.md): Top SQL是指在指定时间范围内,消耗资源最多(如CPU、IO、内存)、执行时间最长、执行频率最高的SQL语句。GaussDB支持通过WDR快照查询指定时间内的Top SQL,从多个维度的资源监控、诊断SQL运行情况。Top SQL数据是从指定时间区间内,两个可用快照生成的性能报告中获取的,两次快照之间内不能有内核重置事件(节点重启、主 - [新增接入认证配置](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_872.md): 当主机远程连接数据库时,需要在数据库系统的配置文件中增加此主机的信息,并进行客户端接入认证。为提升用户使用数据库的便利性,GaussDB实例在发放时会在客户端接入认证配置文件中增加如下默认配置。集中式版实例默认配置(假设实例所属子网的网段为192.168.0.0)TYPE DATABASE USER ADDRESS - [删除接入认证配置](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_873.md): 您可根据业务使用场景删除接入认证配置。删除后,对应的接入认证配置将失效,已应用此认证的当前会话可以正常使用,但应用此认证的新创建的会话将无法连接。请确认删除的接入认证符合您的业务需求,并谨慎操作。删除客户端接入认证配置,需要实例所有节点都是正常状态。在跨Region容灾场景下,删除主实例的客户端接入认证配置,灾备实例不会自动同步,灾备实例 - [修改接入认证配置](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_874.md): 您可根据业务使用场景修改接入认证配置。修改后,已应用原认证配置的当前会话可以正常使用,但应用原认证配置的新建会话在不满足新认证配置的情况下将无法连接。请确认修改的接入认证符合您的业务需求,并谨慎操作。修改客户端接入认证配置,需要实例所有节点都是正常状态。在跨Region容灾场景下,修改主实例的客户端接入认证配置,灾备实例不会自动同步,灾备 - [查看接入认证配置修改历史](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_875.md): 您可查看客户端接入认证配置修改历史。仅支持查看最近一个月的修改历史。 - [恢复接入认证配置](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_876.md): 如果误修改或误删除接入认证配置后,需要恢复到修改前的客户端接入配置,您可以根据修改历史进行恢复。GaussDB也支持恢复到默认配置,您的所有操作都将被重置。恢复后,如果存在已使用的连接不满足接入认证配置策略的情况,在连接断连后将无法重建连接。请确认恢复的接入认证符合您的业务需求,并谨慎操作。根据修改历史恢复接入认证配置时,仅修改成功的历史 - [GaussDB实例操作系统更新](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_893.md): 云数据库GaussDB实例需要适时进行操作系统更新,以提高数据库性能和数据库的整体安全状况。实例内核版本升级时,云数据库GaussDB会根据操作系统的实际情况,决定是否更新以及更新适合的操作系统冷补丁版本。操作系统更新不会更改数据库实例的版本或数据库实例信息。此外,云数据库GaussDB会在用户设置的运维时间段内,通过热补丁方式及时修复影 - [查看GaussDB实例列表](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_894.md): GaussDB实例创建完成后,您可以在实例列表中查看已创建的GaussDB实例信息,也可以根据业务需求对目标实例进行相关操作。本章节将为您介绍实例管理页面中实例列表区域展示的信息及可执行的操作。登录云数据库GaussDB控制台,进入“实例管理”页面。在“实例状态统计”模块可以查看不同状态实例的数量。实例状态统计实例状态统计类别说明操作处理 - [查看GaussDB实例详情](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_895.md): 购买GaussDB实例后,您可以查看实例的详细信息,包含基础信息、配置信息、网络信息、计费信息、存储与备份信息、实例拓扑图和节点列表。此外,您还可以根据业务需求对实例进行相关操作。登录云数据库GaussDB控制台,进入“实例管理”页面。在实例管理页面,选择指定的实例,单击实例名称,进入实例基本信息页面。您可以查看该实例的基础信息、配置信息 - [版本升级路径管理](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_897.md): 在数据库维护过程中,用户需要对内核版本进行升级以保障系统的稳定性和安全性。然而,当某些内核版本因生命周期结束或存在约束被限制使用时,这些版本将不能作为实例升级的目标版本,但在实际升级过程中,仍需通过这些版本作为中间过渡才能升级到最优版本。因此,GaussDB提供了版本升级路径管理功能,支持搜索从源版本到目标版本的所有升级路径,并提供界面可 - [扩容实例节点(分布式)](https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_905.md): 随着业务的增长,数据库在运行性能及存储上逐渐会达到瓶颈。此时,需要通过增加节点来提升集群的性能及存储能力。GaussDB分布式版混合部署形态实例支持节点扩容操作。每次支持扩容节点的个数为3的整数倍,节点最大可扩容至126。存在故障节点的实例不允许进行扩容操作。若涉及修改扩容参数或重分布控制参数,请务必在添加节点前完成。实例扩容过程中会进行 ## 最佳实践 - [SQL查询最佳实践(分布式)](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0013.md): 根据数据库的SQL执行机制以及大量的实践总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。使用UNION ALL代替UNION。UNION在合并两个集合时会执行去重操作,而UNION ALL则直接将两个结果集合并、不执行去重。执行去重会消耗大量的时间,因此,在一些实际应用场景中,如果通过业务逻辑已确认 - [快速定位查询存储倾斜的表](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0016.md): 目前提供的倾斜查询接口有函数:table_distribution(schemaname text, tablename text)、table_distribution()以及视图PGXC_GET_TABLE_SKEWNESS,客户可以根据自身业务情况来选择使用。相关函数和视图请参考以下相关内容:table_distribution(s - [权限控制](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0051.md): 存储过程默认具有SECURITYINVOKER权限。如果希望将默认行为改为SECURITYDEFINER权限,需要设置GUC参数 behavior_compat_options='plsql_security_definer'。权限详情请参见《参考》中“SQL参考 > SQL语法 > C > CREATE FUNCTION”章节。选择不当 - [命名规范](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0052.md): 不规范的存储过程和变量命名可能会对系统使用产生负面影响。存储过程、变量以及类型名称的最大长度不得超过63个字符。如果超出此限制,名称将被自动截断至63个字符。gaussdb=#CREATE SCHEMA best_practices_for_procedure; CREATE SCHEMA --创建长度为66字符的存储过程名,提示被截断 - [访问对象](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0053.md): 未指定SCHEMA的存储过程将依据SEARCH_PATH的顺序查找对象,可能导致访问到非预期对象。如果不同模式中存在同名表、存储过程以及其他数据库对象,未明确指定SCHEMA可能引发意外结果。因此,建议在存储过程访问数据对象时,始终明确指定SCHEMA。示例: - [PACKAGE变量](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0055.md): PACKAGE变量是在PACKAGE内定义的全局变量,其生命周期覆盖整个数据库会话(SESSION)。不当使用可能引发以下问题:对具备PACKAGE访问权限的用户完全透明,可能导致变量在多个存储过程间共享并意外被修改。由于PACKAGE变量的生命周期为SESSION级别,不当操作可能造成数据残留,影响其他存储过程。大量PACKAGE变量在 - [CURSOR](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0056.md): 在存储过程中,CURSOR是一种重要资源,不当使用可能引发以下问题:未关闭的CURSOR会占用系统资源,大量未及时关闭的CURSOR会严重影响数据库内存和性能,特别是在高并发或循环操作中。未关闭的CURSOR会占用系统资源,大量未及时关闭的CURSOR会严重影响数据库内存和性能,特别是在高并发或循环操作中。因此,建议在存储过程中,使用CU - [兼容性功能](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0057.md): 由于数据库的兼容性差异,在不同兼容性设置或GUC参数下,存储过程的行为可能不一致。用户在使用这些兼容性功能时,应谨慎操作。例如:由于不同兼容性的原因,带出参的FUNCTION在某些情况下可能忽略出参值。开启GUC参数 behavior_compat_options='proc_outparam_override' 后,部分场景可以确保出参 - [异常处理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0058.md): 在存储过程中使用EXCEPTION处理机制可以提高代码的容错性,但频繁地捕获和处理异常可能会导致性能下降。每次异常处理都涉及上下文的创建和销毁,这会消耗额外的内存和资源。此外,由于异常被捕获,日志中不会记录错误信息,从而增加了问题定位的难度。建议在必要时才使用EXCEPTION处理机制,并确保传递充足的上下文信息,以便于问题的定位和解决。 - [自定义类型](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0059.md): 存储过程中的自定义类型变量不支持下推,需要在下推场景使用时,用变量承接自定义类型的元素。示例如下: - [事务](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0061.md): 存储过程可以通过使用SAVEPOINT以及COMMIT/ROLLBACK来进行事务管理,如果使用不当,可能会引发以下问题:每次在事务中创建SAVEPOINT都会分配资源,若不及时释放,资源占用将逐渐累积。事务的COMMIT和ROLLBACK操作需要同步数据库的元数据和日志,频繁执行可能增加I/O开销,从而影响性能。建议:在使用完SAVEP - [自治事务](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0062.md): 自治事务指的是在存储过程中启动一个独立的事务,该事务与主事务相互独立,能够在主事务提交或回滚后继续其操作。通过启动新的数据库会话(SESSION)来执行存储过程,自治事务可能会增加系统资源的使用,包括内存、CPU和数据库连接等。建议将自治事务主要用于记录业务日志,而不应将其作为业务流程的入口或核心环节。应尽量避免频繁使用自治事务,以减少对 - [DDL](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0064.md): 数据定义语言(DDL)操作(如CREATE、ALTER、DROP)通常会加锁,以确保变更的原子性和一致性。在高并发环境中,DDL操作可能引发锁冲突或导致长时间阻塞,从而影响其他业务操作的正常执行。建议在执行DDL变更时,暂停相关业务操作,以避免对系统性能和稳定性产生不利影响。在创建存储过程,包,以及使用匿名块时,尽量避免将整个定义全部放在 - [复杂依赖](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0065.md): 如果存储过程或PACKAGE之间存在复杂的依赖关系,可能会在创建时遇到依赖对象尚未创建或初始化的情况,从而导致存储过程编译失败。此外,当某个对象被修改或重建时,直接或间接依赖该对象的其他存储过程和PACKAGE也会失效,需要重新编译,这会影响系统性能。建议避免在存储过程和PACKAGE之间建立复杂的依赖关系,以提高系统的稳定性和性能。 - [IMMUTABLE和SHIPPABLE](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0066.md): IMMUTABLE是存储过程的一个属性,用于声明该存储过程的结果仅依赖于输入参数,而不依赖于数据库的当前状态。在某些场景下,使用 IMMUTABLE 属性的存储过程可能会被优化为仅执行一次,如果使用不当,可能会造成不符合预期的结果。SHIPPABLE是存储过程的另一个属性,用于表示该存储过程是否可以下推到 DN(数据节点)执行。如果下推的 - [数据库级导入导出](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0080.md): gs_dump工具可以对单个数据库进行备份,支持四种不同的使用归档格式,不同的归档格式适用场景如表1所示,可以根据自身适用情况选择合适的归档格式。gs_dump工具请参考《参考》中“工具参考 > 数据导入导出工具 > gs_dump导出数据库信息”。gs_dump不会对所有数据库公共的全局对象(角色、表空间及对应权限)进行备份。因此恢复时 - [模式级导入导出](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0081.md): gs_dump工具可以对单个Schema进行备份,推荐使用gs_dump工具并配合-n参数进行备份,可以连续使用多个-n备份多个Schema。gs_dump工具请参考《参考》中“工具参考 > 数据导入导出工具 > gs_dump导出数据库信息”。当导出的Schema依赖其他未导出Schema的对象时,可能会导致导入该Schema时报缺少依 - [表级导入导出](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0082.md): 对于表级的导入与导出,能够使用的工具很多,可基于以下场景切入选择合适的工具。需要导出单个表的定义和表内数据到同一个文件中时,推荐使用gs_dump工具的纯文本归档,并配合-t参数使用,可以连续使用-t备份多张表。gs_dump工具请参考《参考》中“工具参考 > 数据导入导出工具 > gs_dump导出数据库信息”。当导出的表依赖其他未导出 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0086.md): 当需要向数据库中一次性插入大量数据时,与传统的多次执行单条SQL语句相比,使用批量插入可以显著提高执行效率。本章通过实现批量插入介绍如何使用JDBC驱动连接数据库,使用事务,批量插入,获取结果集列信息等操作。JDBC通过addBatch接口将需要执行的sql语句添加到批量执行列表,然后通过executeBatch接口执行批量操作。降低网络 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0087.md): 大量数据插入时,逐条插入会产生大量网络请求、系统资源消耗占用过高以及数据库服务端需要反复解析相似语句导致业务性能下降,因此引用批量插入优化以上痛点。实现通过JDBC通过事务的方式批量插入数据,获取结果集列数据并输出结果信息。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0088.md): JDBC驱动批量处理允许将多个SQL语句添加到同一批量执行列表中,然后一次性发送给数据库,并且使用U报文一次性携带本次事务提交所有插入或者更新的数据,只需要进行一次网络连接的建立和数据交互即可完成批量操作。GaussDB的U报文可以一次性携带批量更新的数据,对比多次的PBE报文通信可以极大减少网络通信的开销,提升执行效率。 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0089.md): JDK版本:1.8及以上。数据库环境:GaussDB503.1.0及以上版本。JDBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数据 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0091.md): JDBC进行插入的流程,主要包括环境准备、连接数据库、调用批量执行接口进行批量插入并查看执行结果以及关闭连接。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0092.md): 连接串常用参数推荐如下,具体设置方法可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 连接数据库 > 连接参数参考”章节。connectTimeout:用于连接服务器操作系统的超时值,单位为秒。当JDBC与数据库建立TCP连接的时间超过此值,则连接断开。根据网络情况进行配置。默认值:0,推荐值:2。socke - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0093.md): 完整示例的运行结果展示批量操作影响的数据条数。使用preparedStatement执行批量插入时,执行结果会返回一个int类型的数组results,results[0]表示本次批量操作影响的数据条目数总和。通过事务对象的rollback接口,对事务内的操作进行回滚。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0094.md): 现象:批量场景下通过preparedStatement对象多次绑定参数时,出现以下报错:java.lang.RuntimeException: java.sql.BatchUpdateException: Batch entry 0 - 5 insert into test_batch1(v1,v2) values(('1'),('val - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0097.md): GaussDB的流式查询是一种逐条处理结果而非一次性加载全部结果的查询机制,适用于内存资源受限的大数据查询场景,例如大数据量导出、离线分析任务以及分页或按需加载等场景,能够有效避免内存消耗和内存溢出,提高处理速度。JDBC连接参数enableStreamingQuery设置为true,并在调用Statement以及PreparedStat - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0098.md): 大数据量查询时,普通查询会返回大量数据,JDBC全量读取返回的数据,容易造成内存溢出问题。JDBC支持流式查询功能,避免出现内存溢出问题。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0099.md): 流式查询的核心原理为:在数据持续到达的过程中,实时地处理数据并生成查询结果。其不同于传统的批处理查询(查询完成后才返回结果),而是针对动态、连续变化的数据流设计的查询机制,具体原理如图1所示。执行流式查询时,服务端将数据传入客户端socket缓冲区中,直到缓冲区存满暂停。当缓冲区中出现第一条数据时,即返回第一条D报文,JDBC开始从缓冲区 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0100.md): 环境准备:GaussDB运行正常,获取JDBC驱动并配置环境。可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数据准备:创建测试表,并插入测试数据。示例如下:gaussdb=# CREATE TABLE tab_test(id int,context varchar( - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0102.md): GaussDB JDBC的流式查询功能,主要包括环境准备、连接数据库、执行流式查询、处理查询结果以及资源释放。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0103.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0104.md): 将gaussdbjdbc.jar和完整示例中StreamQueryTest.java放入同一目录。编译并执行示例代码,执行时设置JVM最大堆内存为16MB。javac -classpath ".:gaussdbjdbc.jar" StreamQueryTest.java java -Xmx16M -classpath ".:gaussdb - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0105.md): 现象:设置Statement、PreparedStatement的fetchSize为Integer.MIN_VALUE时出现如下异常:org.postgresql.util.PSQLException: Fetch size must be a value greater to or equal to 0. at org.pos - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0108.md): 在实际生产中,用户的业务系统经常会涉及到一些复杂数据的分析和操作,传统数据类型难以完整且高效地表示或处理这种数据场景,JDBC支持的自定义类型Struct和Array可以在已有数据类型的基础上创建出新的数据类型,通过使用自定义类型可以更加方便地对数据进行增删改操作。JDBC操作涉及到自定义类型数据。强化数据一致性与完整性自定义类型允许在类 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0109.md): 对业务中复杂的数据结构进行操作时,基本数据类型难以准确表达复杂业务概念,并且容易造成代码冗余,影响开发效率。JDBC支持在存储过程中使用自定义类型。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0110.md): 数据库系统会为每个自定义类型创建相应的元数据记录,包含类型的名称、结构以及约束条件等信息。JDBC使用自定义类型时,会根据自定义类型的结构和编程语言中的自定义类型对象进行转换。支持复杂数据建模可以处理复杂的数据结构,如嵌套对象、数组等,提高数据模型的表达能力。可以处理复杂的数据结构,如嵌套对象、数组等,提高数据模型的表达能力。提高数据质量 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0111.md): JDK版本:1.8及以上。数据库环境:GaussDB 503.0及以上版本。JDBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数据准 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0113.md): JDBC通过存储过程对自定义类型数据插入和查询的流程按照时间顺序主要包括环境准备、连接数据库、自定义类型SQL语句执行,查看结果及关闭连接。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0114.md): 连接串常用参数推荐如下,具体设置方法可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 连接数据库”章节。connectTimeout:用于连接服务器操作系统的超时值,单位为秒。当JDBC与数据库建立TCP连接的时间超过此值,则连接断开。根据网络情况进行配置。默认值:0,推荐值:2。socketTimeout: - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0115.md): 完整示例可以正确查询到自定类型的数据,完整示例的运行结果如下所示:不涉及 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0116.md): 现象:绑定自定义类型入参和注册出参后,调用相应的存储过程出现如下异常:ERROR: Function public.test_proc(compfoo, public.compfoo_table, compfoo, public.compfoo_table) does not exist. ???No function matches - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0119.md): 当JDBC执行查询操作,若产生大量的查询结果一次性全部返回给JDBC,可能会导致JVM内存溢出。使用批量查询方式,能够指定数据库每次返回给JDBC的数据个数,减少JVM的内存使用。Java应用通过JDBC连接数据库,执行大批量数据的查询。开发人员在数据库操作中,采用正确的事务开启与关闭方式,在批量查询场景中,通过分批次处理数据可有效减少J - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0120.md): 在数据密集型业务场景中,传统的查询存在以下问题:若结果集较大,应用内存难以承载,会造成JVM内存溢出导致查询失败。一次性获取大量数据,可能会导致网络带宽达到瓶颈,从而影响数据传输的效率。数据库连接和相关资源持续占用影响系统整体吞吐量。通过批量查询的方式可正常执行查询,避免产生内存溢出。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0121.md): JDBC批量查询利用GaussDB的游标遍历功能向服务端查询指定行数的查询结果。在查询时,JDBC首先会指定每次从数据库中返回的结果行数,数据库根据指定的行数分批次返回结果数据,直至返回所有的查询结果。批量查询每次与数据库交互可返回指定行数的数据,避免因为查询结果集太大导致Java应用出现内存溢出。批量查询会多次与数据库网络交互,会有一定 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0122.md): JDK版本:1.8及以上。数据库环境:GaussDB 503.0及以上版本。JDBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数据准备:创建测试表,并插入测试数据。示例如下:gaussdb=# CREATE TABLE tab_test(id int - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0124.md): GaussDB JDBC的批量查询功能,主要包括环境准备、连接数据库、开启事务、执行查询语句、结果集处理以及关闭连接。具体的流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0125.md): 连接串常用参数推荐如下,具体设置方法可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 连接数据库 > 连接参数参考”章节。connectTimeout:用于连接服务器操作系统的超时值,单位为秒。当JDBC与数据库建立TCP连接的时间超过此值,则连接断开。根据网络情况进行配置。默认值:0,推荐值:2。socke - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0126.md): 完整示例运行结果如下:若需关闭批量查询功能,则去除连接串的fetchsize参数并且重新设置setFetchSize为默认值0。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0127.md): 现象:客户使用spring框架时,连接串中设置fetchsize之后,查询过程中存在OutOfMemoryError的报错。原因:执行批量查询时没有开启事务,因为一般连接的事务由Spring进行管理,在事务未开启的情况下,数据库会一次将所有数据返回给JDBC处理方法:排查业务代码,确认在开启批量查询之前开启了事务。原因:执行批量查询时没有 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0130.md): 当一次操作中将多条记录写入数据库时,相比逐条插入,批量插入可以减少数据库与应用程序之间的交互次数,降低网络延迟和系统资源消耗,从而显著提高数据写入效率。本章通过实现批量插入介绍如何使用ODBC驱动连接数据库、使用事务、批量插入和获取结果集列信息等操作。ODBC配置开启UseServerSidePrepare和UseBatchProtoco - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0131.md): 大量数据插入时,逐条插入会产生大量网络请求、系统资源消耗占用过高以及数据库服务端需要反复解析相似语句导致业务性能下降,因此引用批量插入优化以上痛点。使用ODBC驱动初始化目标表,并通过事务的方式批量插入后续查询需要的数据。相比单条SQL逐个插入的场景,减少与数据库交互次数,降低数据库负载。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0132.md): 在开启UseBatchProtocol和UseServerSidePrepare参数的条件下,ODBC批量处理允许对一条预编译SQL语句复用同一个执行计划,使用U报文一次性携带本次事务中所有待提交的批量绑定数据,只需要进行一次网络连接的建立和数据交互即可完成批量操作。网络通信优化通过使用U报文,可以一次性携带批量更新的数据,避免了多次使用 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0133.md): ODBC版本:V500R002C10及以上版本。数据库环境:GaussDB V500R002C10及以上版本。ODBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于ODBC开发 > 开发步骤 > 获取源码包、ODBC包以及依赖库”章节。参考《开发指南》中“应用程序开发教程 > 基于ODBC开发 > 开发步骤 > 获取源码包、 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0135.md): 批量绑定插入的流程分为配置连接、配置批量绑定参数以及执行批量插入操作等步骤。应用场景下的主要API涉及SQLSetConnectAttr、SQLSetStmtAttr、SQLPrepare、SQLBindParameter、SQLExecute和SQLRowCount。具体的API介绍请参见《开发指南》中“应用程序开发教程 > 基于ODB - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0136.md): 配置连接超时参数。通过SQLSetConnectAttr函数设置连接超时时间:SQL_LOGIN_TIMEOUT参数对应于libpq参数connect_timeout,用于控制客户端连接服务端超时时间,单位为秒,默认值为0,表示该参数不生效。该参数推荐配置,客户可根据实际网络情况配置。SQLSetConnectAttr(hdbc, SQL - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0137.md): 在ODBC成功连接数据库后,批量插入了100条数据,完整示例预期结果如下:通过SQLEndTran接口对事务内的异常操作进行回滚,具体回滚事务方法如下: - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0138.md): Q:ignoreCount指定不入库的数据量后,是否可以选择具体不入库的数据?A:可以选择具体不入库的数据。完整示例中操作符指针operptr可以为SQL_PARAM_IGNORE或SQL_PARAM_PROCEED,其中SQL_PARAM_IGNORE为不入库的操作,SQL_PARAM_PROCEED为入库的操作,通过指定数据不同的op - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0141.md): 当一次操作中将多条记录写入数据库时,相比逐条插入,批量插入可以减少数据库与应用程序之间的交互次数,降低网络延迟和系统资源消耗,从而显著提高数据写入效率。本章通过实现批量插入介绍如何使用GO驱动连接数据库、使用事务、批量插入以及获取结果集列信息等操作。应用代码中生成批量插入SQL语句并绑定参数,在事务中调用Exec接口执行该SQL语句,最终 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0142.md): 大量数据插入时,逐条插入会产生大量网络请求、系统资源消耗占用过高以及数据库服务端需要反复解析相似语句导致业务性能下降,因此引用批量插入优化以上痛点。实现通过GO驱动初始化目标表,并通过事务的方式批量插入后续查询需要的数据。完成批量插入数据后,获取结果集列数据并输出结果信息。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0143.md): GO驱动批量处理是一条SQL插入多条记录一次性发送给数据库,并且使用U报文一次性携带本次事务提交所有插入或者更新的数据,只需要进行一次网络连接的建立和数据交互即可完成批量操作。网络通信优化:通过使用U报文,可以一次性携带批量更新的数据,避免多次使用PBE报文进行通信,从而减少网络通信的开销。执行效率提升:由于网络通信的次数和频率减少,整体 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0144.md): Golang版本:1.13及以上。数据库环境:GaussDB 503.1.0及以上版本。GaussDB 503.1.0及以上版本。GO驱动环境搭建GO驱动环境搭建参考《开发指南》中“应用程序开发教程 > 基于Go驱动开发 > 开发步骤 > 环境准备”章节。GO驱动环境搭建参考《开发指南》中“应用程序开发教程 > 基于Go驱动开发 > 开发 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0146.md): GO驱动可以执行通过创建数据库连接以及在事务中批量插入数据。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0147.md): 连接串支持DSN和URL两种格式。数据库连接参数参考《开发指南》中“应用程序开发教程 > 基于Go驱动开发 > 开发步骤 > 连接数据库”章节。具体步骤涉及的参数变量值可通过前置准备中设置的环境变量获取值,并进行拼接,如以下代码所示。连接参数的值不局限于通过os.Getenv获取环境变量中的值获取,也可通过读取配置文件、写固定值等方式进行 - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0148.md): 以DSN连接串,初始化employee表后批量插入数据,并获取插入结果输出结果集列信息为例:// main.go package main import ( "database/sql" "fmt" _ "gitee.com/opengauss/openGauss-connector-go-pq" "log" "os" ) - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0149.md): 构建批量插入语句时必须注意SQL注入风险。通过使用占位符和参数绑定,而非直接拼接用户输入的值。多行VALUES语句通过占位符"?"和参数列表插入数据,从而避免注入攻击。所有的动态数据都应作为参数传递,例如使用数据库对象*DB的接口Prepare或Exec等接口传入可变参数形式。通过使用占位符和参数绑定,而非直接拼接用户输入的值。多行VAL - [场景概述](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0151.md): 在查询百万级别的大表时,没有索引或者索引过于单一会造成查询效率低下,为了解决业务痛点,应该创建合适的索引来避免效率低下,此最佳实践主要介绍了对于百万级别的大表,无索引和有索引性能对比,单列索引和复合索引的性能对比。创建合适的索引,避免全表扫描,提高查询效率。 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0152.md): 在现有的数据库里面创建表并插入百万级别数据。示例使用数据库版本使用506.1.0,机器配置为8核CPU32GB内存。 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0153.md): 从执行结果来看,执行时间需要167.579ms。添加索引后,通过与无索引时执行计划的对比,查询时间从原来的167.579ms缩短到18.467ms。从执行结果来看,执行时间需要28.455ms。通过对单列索引和复合索引执行计划的对比,查询时间从原来的28.455ms缩短到6.856ms。 - [场景概述](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0155.md): 表设计初期需要考虑如下场景:数据库表结构设计阶段需要优化查询效率。处理海量数据时需提升维护效率。频繁进行数据更新操作的表设计。需要平衡存储成本与查询性能的场景。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0156.md): 数据类型优化:根据整数 > 浮点数 > numeric的优先级进行选择。索引平衡机制:查询加速与更新成本的权衡。分区存储策略:逻辑统一+物理分散的存储方式。存储引擎特性:Ustore支持Inplace-Update,Astore为Append-Only。查询性能提升:通过索引设计以及分区策略减少数据的扫描量。存储成本优化:合理选择数据类型 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0157.md): 确认业务场景特征:数据量级预估(数据量较大时,考虑使用分区表)。读写比例分析(根据读写比例设计存储引擎和索引)。数据量级预估(数据量较大时,考虑使用分区表)。读写比例分析(根据读写比例设计存储引擎和索引)。环境检查:检查track_counts/track_activities参数状态。检查track_counts/track_activ - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0158.md): 表设计主要包含分布方案及分布键设计、数据类型设计、分区策略、约束配置、索引设计和存储参数调优等步骤。表的分布方式的选择一般遵循以下原则:分布方式描述适用场景Hash表数据通过Hash方式散列到集群中的所有DN上。数据量较大的表。Replication集群中每一个DN都有一份全量表数据。维度表、数据量较小的表。Range表数据对指定列按照范 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0161.md): 当用户业务上线时,针对给定的业务模型,需要合理评估GaussDB数据库规格,以便支撑客户的业务性能达标。根据业务上线场景差异,需构建以下两类评估体系:全新业务上线场景业务从Oracle数据库迁移至GaussDB数据库场景针对以上两类评估体系,需重点考虑以下因素:基于性能指标以及扩展性设计等,选择合适的数据库部署形态。通过压力测试与性能仿真 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0162.md): 针对给定的业务模型,GaussDB数据库需要部署什么形态以及服务器需要选择什么硬件规格,缺少系统的评估方法,可能造成创建的数据库无法满足用户的业务性能要求。针对GaussDB数据库的部署形态选择、硬件规格匹配及评估方法缺失的问题,结合业务模型与性能需求,从架构设计、硬件选型、评估体系三个维度进行系统性规划。实现合理评估GaussDB数据库 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0163.md): GaussDB支持分布式部署形态,分布式架构适用场景如下:数据规模:PB级数据量,需支持横向扩展。业务特征:高并发写入场景、需弹性扩容。典型部署:同城3AZ4副本(金融版)或单AZ3副本(企业版),支持跨机房容灾机制。数据规模:PB级数据量,需支持横向扩展。业务特征:高并发写入场景、需弹性扩容。典型部署:同城3AZ4副本(金融版)或单AZ - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0164.md): 首先要对用户业务指标进行分析采集,作为评估数据库规格的依据,业务指标包含性能指标、数据量指标以及业务特性指标,具体信息如下:性能指标QPS(Queries Per Second):每秒查询量。TPS(Transactions Per Second):每秒事务量。读写比例:读操作与写操作的比例。响应时间要求:平均响应时间、P99/P95响应 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0165.md): 场景一:如果是全新业务上线,硬件规格评估如下:CPU评估计算公式:所需的CPU核心数 ≈ ( QPS * 平均查询耗时(ms) ) / ( 1000ms * CPU利用率目标 )考虑因素:对于OLTP系统,通常需要更多CPU核心(并发处理能力)。对于OLAP系统,需要更高单核性能(计算能力)。需预留20%~30%的CPU余量,应对峰值数据 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0166.md): Q:前置准备中用户的业务指标,包括性能指标,数据量指标以及业务特性指标等,这些指标如何分析采集?A:对于全新的业务,与用户沟通,分析用户的需求,让用户提供数据,然后进行评估。例如:数据量的评估,确定用户业务有多少表,每个表的表结构(表字段和每行的字节数),表的记录数量(行数),创建索引的大小等,通过这些估算出数量的大小,并加上未来业务增长 - [压缩方案介绍](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0175.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [场景概述](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0176.md): 某银行客户的业务表现为数据稳定增长,频繁访问数据大多为近期新增数据,旧数据低频访问。在进行压缩方案选型时主要诉求如下:要求高性能,希望压缩后业务性能影响较小。要求高性能,希望压缩后业务性能影响较小。某通信公司的业务表现为业务中表数据按天划分,旧表中不会有新数据产生。在进行压缩方案选型时主要诉求如下:对压缩比要求较高,可接受性能下降。对压缩 - [压缩方案选型](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0177.md): 分析该银行描述的业务场景,可以判断出该场景可以较为明显地区分冷热数据,历史数据访问频率较低,高级压缩和透明压缩皆适用,但高级压缩对旧数据的低频访问性能影响更小。根据该银行诉求,高级压缩相对于透明压缩对业务性能的影响较低。综上所述,更推荐采用高级压缩方案,详细操作请参考高级压缩操作步骤。分析该公司描述的业务场景,表数据按天划分,旧表无新增数 - [手动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0180.md): 以下为手动调度压缩的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。这一步的操作主要是为了加快测试速度。ilm默认的时间单位为天,执行手动压缩时,第一次调度是打时间戳,第二次调度才能压缩,第一次调度和第二次调度的间隔需要超过冷热数据判定时间的阈值才会执行压缩,以秒为时间单位可以加快测试速度(这里的第一次任务默认可以扫描 - [自动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0181.md): 以下为后台自动调度压缩的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。执行结果示例如下:执行结果示例如下:或者在已有表基础上,直接添加ILM策略。不支持系统表、全局临时表、本地临时表和序列表,不支持Ustore段页式表,不支持unlogged表,不支持IMCV表,不支持压缩toast数据。调用DBE_ILM_ADMI - [结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0182.md): 通过查询gs_adm_ilmresults,statistics字段下SpaceSaving结果是否不为0,判断压缩是否有收益。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0183.md): Q:为什么使用高级压缩之后,gs_adm_ilmresults系统表中显示有spaceSaving不为0,但是\d+查看表大小没有变化?A:高级压缩方案为区分冷热的页内压缩,可以简单理解为将一个盒子内物品进行挤压,使得剩余可用空间变多了,但是盒子大小没变,还是占用这么大的空间;因此只有再次往表中插入数据中,才能复用这些空间,故高级压缩更适 - [手动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0185.md): 以下为手动创建和压缩透明压缩表的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。如上所示压缩率是7.8,明显会降低存储空间。 - [自动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0186.md): 以下为后台自动调度压缩的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。执行结果示例如下:执行结果示例如下:不支持系统表、全局临时表、本地临时表和序列表,不支持段页式表,不支持hashbucket表,不支持unlogged表,不支持IMCV表,不支持压缩toast数据。调用DBE_ILM_ADMIN.CUSTOMIZE - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0187.md): Q:如果出现文件损坏或者页面损坏,如何进行文件修复和页面修复?A:请参考gs_repair_file和gs_repair_page函数进行修改,详细操作请参考《参考》中“SQL参考 > 函数和操作符 > 数据损坏检测修复函数”章节。A:请参考gs_repair_file和gs_repair_page函数进行修改,详细操作请参考《参考》中“ - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0190.md): 透明加密,是指数据库对将要落盘的数据自动进行加密,读取磁盘数据的时候自动进行解密,同时外部用户或应用程序对数据使用过程中整个加解密过程无感知。通过存储层的静态数据加密,即使磁盘文件被窃取,但磁盘中敏感信息已经加密,窃取者无法解密而得不到真实的用户数据,从而保证了数据库的安全。GaussDB透明加密技术提供了精细的表级加密粒度,在创建表时指 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0191.md): 数据库敏感数据以明文形式存储,存在攻击者绕过数据库认证机制直接读取数据库文件,导致静态数据泄露的严重隐患。同时,国内外多项安全标准与认证也对数据的机密性与完整性保护提出了明确要求。正确配置透明加密能力,确保数据库数据文件、回放日志、物理备份等能够以加密方式存储到磁盘,同时支持数据密钥轮转机制,显著降低暴力破解的可能性。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0192.md): 透明加密特性基于多级密钥加密模型,整体设计原理如图1所示。密钥分为主密钥和数据密钥,数据由数据密钥加密,数据密钥由主密钥加密,而主密钥则由外部密钥管理服务加密存储。数据库用户在密钥管理服务中创建主密钥,并在数据库侧通过GUC参数设置密钥管理服务访问与配置信息。用户在建表阶段通过enable_tde选项指定表为加密表,数据库将在建表语句执行 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0193.md): 使用透明加密特性前,需确认GaussDB是否已对接所选的外部密钥管理服务,然后在密钥管理服务中创建密钥并获取数据库所需的身份认证及密钥服务信息,最后配置数据库透明加密相关的GUC参数并重启数据库。本节将基于当前支持的主要密钥类型说明前置准备流程。GaussDB已对接华为云提供的在线密钥管理服务,需在华为云密钥管理服务中创建主密钥,并获取数 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0194.md): 本节将基于透明加密的主要功能场景展开详细说明,包含功能使用方式、结果验证等内容。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0195.md): A:是的,当前GaussDB仅支持表级数据加密。如果希望实现库级别、表空间级别、模式级别加密,可在应用侧对范围内全部表与索引执行enable_tde=on属性配置即可;如果希望实现数据列级别加密,可考虑使用全密态特性。A:对包含敏感数据的存量数据表执行ALTER命令语句,若希望存量数据重新加密后写入磁盘,需要对表执行VACUUM FULL - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0198.md): 数据库审计是一种对数据库访问行为进行全量记录、实时监控和合规分析的技术与管理手段。审计功能对数据库系统的安全性至关重要。数据库安全管理员可以利用审计日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等,主要提供数据库系统对非法操作的追溯及举证能力。传统审计主要记录用户对数据库的启停、连接、DDL、DML、DCL等操作 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0199.md): 审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。审计日志记录事件的时间、类型、执行结果、用户名、数据库、连接信息、数据库对象、数据库实例名称和端口号等详细信息。支持按起止时间段查询审计日志,并根据记录的字段进行筛选。数据库安全管理员可以利用这些日志信息,重现导致 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0200.md): 传统审计传统审计的记录对象是由GUC参数控制的,GUC参数及对应对象如表1所示。传统审计采用记录到OS文件中(即审计日志)的方式来保存审计结果,审计日志文件夹受操作系统权限保护。日志文件的存储目录由audit_directory参数指定。审计日志每条记录包括time、type、result、userid、username、database - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0201.md): 环境准备:软硬件无要求、传统审计查询需要审计管理员权限,创建统一审计策略需要有安全和策略管理员权限。核心配置:审计开关均可根据实际业务需求进行配置。风险评估:需评估开启audit_dml_state和audit_dml_state_select审计开关后,是否可接受审计模块记录日志对整体性能的影响。 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0203.md): 传统审计完整操作流程包括审计开关开启,执行操作和审计管理员对审计日志的查询。统一审计完整操作流程包括审计策略的创建及审计日志的查询。 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0204.md): 按起止时间查询审计日志,并查询用户audit_t1执行的ddl_table操作,root用户的user操作,例如:在操作系统后台服务配置文件/etc/rsyslog.conf中添加:重启rsyslog服务使配置生效。查询结果如下:上述查询记录展示了用户user001的详细执行SQL语句及执行的相关信息,其中policy_id表示审计策略I - [结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0205.md): 审计模块功能的结果验证主要是审计日志的查询。如传统审计的查询:统一审计的查询:使用操作系统root用户查看审计日志/var/log/localmessages。Oct 9 15:38:11 localhost PGAUDIT: AUDIT EVENT: user name: [user001], app_name: [gsql], cl - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0206.md): A:将pg_audit下所有文件迁移至新环境,确保新环境的pg_audit为空,重启数据库后执行SELECT gs_query_audit()查询。A:time列记录的是审计日志落盘的时间,审计线程依赖time标识决定审计文件是否需要轮转。A:可通过thread_id字段中@字符后半部分时间戳获取,解析方式如下:SELECT userna - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0209.md): 数据库存储着组织最重要、最敏感的数据资产,而这些数据面临着来自内部和外部的多重安全威胁。访问控制作为数据库安全的第一道且最关键的技术防线,其核心作用体现在以下四个关键维度:保护核心数据资产:数据库中通常存储着客户信息、财务数据、知识产权和运营数据等信息。若缺乏有效访问控制,任何能够连接数据库的实体(例如被恶意软件感染的内部应用,或成功入侵 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0210.md): 解决如何配置用户权限。数据库权限管理的最佳实践核心在于遵循最小权限原则,即仅为用户和应用授予完成其任务所必需的最小权限。通过基于角色的访问控制(RBAC)实现按组管理权限,并实施列级、行级安全等精细化控制手段。从根本上防止数据泄露、保证数据完整性、满足合规要求。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0211.md): 对象权限管理对象权限是当用户要对某个数据库对象进行操作所需拥有的合法操作权限,仅当用户对此对象拥有合法操作的权限,才允许用户对此对象执行相应的操作。访问控制列表(Access Control List,ACL)是实现数据库对象权限管理和权限检查的基础,每个对象都具有一个由AclItem构成的访问控制列表来存储该对象的所有授权信息。当用户访 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0213.md): 用户能执行的每一个操作都依赖上一章中提到的权限体系,校验流程如图1。 - [操作步骤与结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0214.md): 方法1:赋予用户user1表t1的查询权限。gaussdb=>GRANT SELECT ON table public.t1 TO user1; GRANT方法2:创建角色role1。gaussdb=> CREATE ROLE role1 password '********'; CREATE ROLE赋予角色role1表t1的查询权限。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0215.md): A:可以。用户拥有表级的查询权限时,即可查询全表。A:可以通过查询information_schema.table_privileges视图查看其被授予的表权限。A:通过系统表GS_DB_PRIVILEGE查询用户被赋予的ANY权限。 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0230.md): 金融、银行业对业务需要极高的容灾能力。当一个分片故障了半数及以上DN,因同步备中有节点发生故障,无法执行写操作,DN执行写操作会超时。为了降低对业务的影响,需要对分片上可用DN进行降副本操作,当检测到故障恢复后,自动触发升副本操作。 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0231.md): 多数派DN故障影响业务提交时,通过降副本及时提供服务,DN修复后,通过升副本使集群恢复正常。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0232.md): 通过检测集群是否出现多数派故障,修改同步列表,保证集群在多数派故障后可以快速恢复业务。 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0233.md): 1、前提要求:DN主存在,或者DCF主存在,或者剩余的副本能选主成功2、降副本:半数以上DN发生故障(DN状态是down或unknown:一般为管理面网络不通或进程不在;DN状态是need repair:主备断连;DN状态是starting:启动中;DN状态是building:重建中),且状态持续(down或unknown状态默认持续12 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0235.md): 以一主三备为例(dn_6001是主,dn_6002,dn_6003,dn_6004是备):dn_6001的默认同步列表为synchronous_standby_names = ‘ANY 2(dn_6002,dn_6003,dn_6004)’,代表dn_6001为主时,除自己外,需要dn_6002,dn_6003,dn_6004中任意两个提 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0236.md): 多数派故障计算公式:多数派故障数 =(副本数+1)/2。DN故障检测机制:down或unknown状态默认持续12s以上。need repair、starting和building状态默认持续1min以上。1、在一主三备配置中,多数派故障为(4 + 1)/2 = 2,这意味着当dn_6002,dn_6003,dn_6004中有两个或以上副 - [结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0237.md): 降副本:1、多数派故障后,集群状态为Unavailable,业务无法提交。2、CM识别到后,进行降副本操作,集群状态变为Degraded,业务正常运行。3、通过gsql连接主DN,查询synchronous_standby_names,同步列表被修改。升副本:1、CM识别故障节点修复后,进行升副本操作,所有故障节点均修复并升回后,集群状态 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0238.md): Q:所有备DN均故障时,集群状态Unavailable。A:所有副本故障时,仅剩主机保存完整日志,存在数据丢失风险,CM不会自动降副本。如需降为单副本,需手动设置 `enable_synclist_single_inst = on`。Q:所有DN状态均是Normal,集群状态短时间为Degraded。A:可能因降副本操作后,故障副本与主机 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0252.md): 随着企业核心业务系统逐步向HTAP(Hybrid Transactional / Analytical Processing)架构演进,数据库系统需要在同一份数据之上同时支撑:高并发OLTP事务写入。低延迟OLAP分析查询(例如统计报表、即席分析、实时指标等)。在传统行存(Row Store)架构下,OLTP与OLAP混合负载存在以下问题 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0253.md): 在交易型数据库中引入IMCV的核心目标包括:最小化对现有业务的入侵:无需拆库、无需维护双写,基于同一份逻辑表数据即可支持HTAP负载。TP与AP负载路径解耦:事务写入仍基于行存引擎执行,分析型查询优先通过IMCV列存扫描路径完成。分析型查询加速:通过按列组织的数据格式,减少无关列读取,降低磁盘I/O开销,提升CPU Cache命中率与执行 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0254.md): GaussDB HTAP架构下,采用双格式存储模型,通过不同的数据组织形式分别服务于OLTP与OLAP负载:行存(Row Store)表仍作为主存储格式,服务于OLTP事务(INSERT/UPDATE/DELETE/点查 )。IMCV则基于对应的行存表数据,以内存为载体,采用列式存储格式,面向OLAP查询进行优化。IMCV与现有行存表共享 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0255.md): 本节最佳实践基于如下软硬件环境及数据集进行验证:数据库版本:GaussDB Kernel 507.0。硬件环境:鲲鹏服务器,2路CPU,128核。数据集:TPC-H Benchmark (Scale Factor=10)。TPC-H Benchmark介绍及使用请参考https://www.tpc.org/tpch/。在使用HTAP能力前 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0256.md): 通过ALTER ... COLVIEW命令对已有行存表开启IMCV。默认异步加载模式下,命令返回后等待后台线程加载该表的IMCV。可进一步通过gs_global_imcv_info()系统函数确认该表IMCV的加载情况及内存占用等信息。其中,rowgroup_num为预期的行组数,populated_rowgroup_num为实际加载的行 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-22-0257.md): Q:创建IMCV后,以及后续行存表发生IUD变更时,数据何时加载到列存?列存扫描是否保证强一致性?A:在默认异步加载模式下,IMCV的数据加载与同步机制如下:创建IMCV后的初始加载:当在行存表上创建IMCV后,系统由后台HTAP Worker线程对表中的存量数据进行列存数据的构建。行存数据变更后的同步机制:IMCV创建完成后,行存表上的 - [SQL查询最佳实践(集中式)](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0013.md): 根据数据库的SQL执行机制以及大量的实践总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。使用UNION ALL代替UNION。UNION在合并两个集合时会执行去重操作,而UNION ALL则直接将两个结果集合并、不执行去重。执行去重会消耗大量的时间,因此,在一些实际应用场景中,如果通过业务逻辑已确认 - [权限控制](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0049.md): 存储过程默认具有SECURITYINVOKER权限。如果希望将默认行为改为SECURITYDEFINER权限,需要设置GUC参数 behavior_compat_options='plsql_security_definer'。权限详情请参见《参考》中“SQL参考 > SQL语法 > C > CREATE FUNCTION”章节。选择不当 - [命名规范](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0050.md): 不规范的存储过程和变量命名可能会对系统使用产生负面影响。存储过程、变量以及类型名称的最大长度不得超过63个字符。如果超出此限制,名称将被自动截断至63个字符。gaussdb=#CREATE SCHEMA best_practices_for_procedure; CREATE SCHEMA --创建长度为66字符的存储过程名,提示被截断 - [访问对象](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0051.md): 未指定SCHEMA的存储过程将依据SEARCH_PATH的顺序查找对象,可能导致访问到非预期对象。如果不同模式中存在同名表、存储过程以及其他数据库对象,未明确指定SCHEMA可能引发意外结果。因此,建议在存储过程访问数据对象时,始终明确指定SCHEMA。示例: - [PACKAGE变量](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0053.md): PACKAGE变量是在PACKAGE内定义的全局变量,其生命周期覆盖整个数据库会话(SESSION)。不当使用可能引发以下问题:对具备PACKAGE访问权限的用户完全透明,可能导致变量在多个存储过程间共享并意外被修改。由于PACKAGE变量的生命周期为SESSION级别,不当操作可能造成数据残留,影响其他存储过程。大量PACKAGE变量在 - [CURSOR](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0054.md): 在存储过程中,CURSOR是一种重要资源,不当使用可能引发以下问题:未关闭的CURSOR会占用系统资源,大量未及时关闭的CURSOR会严重影响数据库内存和性能,特别是在高并发或循环操作中。未关闭的CURSOR会占用系统资源,大量未及时关闭的CURSOR会严重影响数据库内存和性能,特别是在高并发或循环操作中。因此,建议在存储过程中,使用CU - [兼容性功能](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0055.md): 由于数据库的兼容性差异,在不同兼容性设置或GUC参数下,存储过程的行为可能不一致。用户在使用这些兼容性功能时,应谨慎操作。例如:由于不同兼容性的原因,带出参的FUNCTION在某些情况下可能忽略出参值。开启GUC参数 behavior_compat_options='proc_outparam_override' 后,部分场景可以确保出参 - [异常处理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0056.md): 在存储过程中使用EXCEPTION处理机制可以提高代码的容错性,但频繁地捕获和处理异常可能会导致性能下降。每次异常处理都涉及上下文的创建和销毁,这会消耗额外的内存和资源。此外,由于异常被捕获,日志中不会记录错误信息,从而增加了问题定位的难度。建议在必要时才使用EXCEPTION处理机制,并确保传递充足的上下文信息,以便于问题的定位和解决。 - [事务](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0058.md): 存储过程可以通过使用SAVEPOINT以及COMMIT/ROLLBACK来进行事务管理,如果使用不当,可能会引发以下问题:每次在事务中创建SAVEPOINT都会分配资源,若不及时释放,资源占用将逐渐累积。事务的COMMIT和ROLLBACK操作需要同步数据库的元数据和日志,频繁执行可能增加I/O开销,从而影响性能。建议:在使用完SAVEP - [自治事务](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0059.md): 自治事务指的是在存储过程中启动一个独立的事务,该事务与主事务相互独立,能够在主事务提交或回滚后继续其操作。通过启动新的数据库会话(SESSION)来执行存储过程,自治事务可能会增加系统资源的使用,包括内存、CPU和数据库连接等。建议将自治事务主要用于记录业务日志,而不应将其作为业务流程的入口或核心环节。应尽量避免频繁使用自治事务,以减少对 - [DDL](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0061.md): 数据定义语言(DDL)操作(如CREATE、ALTER、DROP)通常会加锁,以确保变更的原子性和一致性。在高并发环境中,DDL操作可能引发锁冲突或导致长时间阻塞,从而影响其他业务操作的正常执行。建议在执行DDL变更时,暂停相关业务操作,以避免对系统性能和稳定性产生不利影响。在创建存储过程,包,以及使用匿名块时,尽量避免将整个定义全部放在 - [复杂依赖](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0062.md): 如果存储过程或PACKAGE之间存在复杂的依赖关系,可能会在创建时遇到依赖对象尚未创建或初始化的情况,从而导致存储过程编译失败。此外,当某个对象被修改或重建时,直接或间接依赖该对象的其他存储过程和PACKAGE也会失效,需要重新编译,这会影响系统性能。建议避免在存储过程和PACKAGE之间建立复杂的依赖关系,以提高系统的稳定性和性能。 - [IMMUTABLE](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0063.md): IMMUTABLE是存储过程的一个属性,用于声明该存储过程的结果仅依赖于输入参数,而不依赖于数据库的当前状态。在某些场景下,使用 IMMUTABLE 属性的存储过程可能会被优化为仅执行一次,如果使用不当,可能会造成不符合预期的结果。建议在使用 IMMUTABLE 属性的存储过程和函数时,避免访问表或数据库中的信息,以确保其行为符合预期。属 - [数据库级导入导出](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0077.md): gs_dump工具可以对单个数据库进行备份,支持四种不同的使用归档格式,不同的归档格式适用场景如表1所示,用户可以根据自身适用情况选择合适的归档格式。gs_dump工具请参考《参考》中“工具参考 > 数据导入导出工具 > gs_dump导出数据库信息”。gs_dump不会对所有数据库公共的全局对象(角色、表空间及对应权限)进行备份。因此恢 - [模式级导入导出](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0078.md): gs_dump工具可以对单个Schema进行备份,推荐使用gs_dump工具并配合-n参数进行备份,可以连续使用多个-n备份多个Schema。gs_dump工具请参考《参考》中“工具参考 > 数据导入导出工具 > gs_dump导出数据库信息”章节。当导出的Schema依赖其他未导出Schema的对象时,可能会导致导入该Schema时报缺 - [表级导入导出](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0079.md): 对于表级的导入与导出,能够使用的工具很多,可基于以下场景切入选择合适的工具。需要导出单个表的定义和表内数据到同一个文件中时,推荐使用gs_dump工具的纯文本归档,并配合-t参数使用,可以连续使用-t备份多张表。gs_dump工具请参见《参考》中“工具参考 > 数据导入导出工具 > gs_dump导出数据库信息”章节。当导出的表依赖其他未 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0083.md): 当需要向数据库中一次性插入大量数据时,与传统的多次执行单条SQL语句相比,使用批量插入可以显著提高执行效率。本章通过实现批量插入介绍如何使用JDBC驱动连接数据库,使用事务,批量插入,获取结果集列信息等操作。JDBC通过addBatch接口将需要执行的sql语句添加到批量执行列表,然后通过executeBatch接口执行批量操作。降低网络 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0084.md): 大量数据插入时,逐条插入会产生大量网络请求、系统资源消耗占用过高以及数据库服务端需要反复解析相似语句导致业务性能下降,因此引用批量插入优化以上痛点。实现通过JDBC通过事务的方式批量插入数据,获取结果集列数据并输出结果信息。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0085.md): JDBC批量处理允许将多个SQL语句添加到同一批量执行列表中,然后一次性发送给数据库,并且使用U报文一次性携带本次事务提交所有插入或者更新的数据,只需要进行一次网络连接的建立和数据交互即可完成批量操作。GaussDB的U报文可以一次性携带批量更新的数据,对比多次的PBE报文通信可以极大减少网络通信的开销,提升执行效率。 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0086.md): JDK版本:1.8及以上。数据库环境:GaussDB 503.1.0及以上版本。JDBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0088.md): JDBC进行批量插入的流程,主要包括环境准备、连接数据库、调用批量执行接口进行批量插入并查看执行结果以及关闭连接。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0089.md): 连接串常用参数推荐如下,具体设置方法可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 连接数据库 > 连接参数参考”章节。connectTimeout:用于连接服务器操作系统的超时值,单位为秒。当JDBC与数据库建立TCP连接的时间超过此值,则连接断开。根据网络情况进行配置。默认值:0,推荐值:2。socke - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0090.md): 以上示例的运行结果展示批量操作影响的数据条数。使用preparedStatement执行批量插入时,执行结果会返回一个int类型的数组results,results[0]表示本次批量操作影响的数据条目数总和。通过事务对象的rollback接口,对事务内的操作进行回滚。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0091.md): 现象:批量场景下通过preparedStatement对象多次绑定参数时,出现以下报错:java.lang.RuntimeException: java.sql.BatchUpdateException: Batch entry 0 - 5 insert into test_batch1(v1,v2) values(('1'),('val - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0094.md): GaussDB JDBC的流式查询是一种逐条处理结果而非一次性加载全部结果的查询机制,适用于内存资源受限的大数据查询场景,例如大数据量导出、离线分析任务以及分页或按需加载等场景,能够有效避免内存消耗和内存溢出,提高处理速度。JDBC连接参数enableStreamingQuery设置为true,并在调用Statement以及Prepare - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0095.md): 大数据量查询时,普通查询会返回大量数据,JDBC全量读取返回的数据,容易造成内存溢出问题。JDBC支持流式查询功能,避免出现内存溢出问题。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0096.md): 流式查询的核心原理为:在数据持续到达的过程中,实时地处理数据并生成查询结果。其不同于传统的批处理查询(查询完成后才返回结果),而是针对动态、连续变化的数据流设计的查询机制,具体原理如图1所示。执行流式查询时,服务端将数据传入客户端socket缓冲区中,直到缓冲区存满暂停。当缓冲区中出现第一条数据时,即返回第一条D报文,JDBC开始从缓冲区 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0097.md): 环境准备:数据库运行正常,获取JDBC驱动并配置环境。可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数据准备:创建测试表,并插入测试数据。示例如下:gaussdb=# CREATE TABLE tab_test(id int,context varchar(1000 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0099.md): GaussDB JDBC的流式查询功能,主要包括环境准备、连接数据库、执行流式查询、处理查询结果以及资源释放。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0100.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0101.md): 将gaussdbjdbc.jar和完整示例中StreamQueryTest.java放入同一目录。编译并执行示例代码,执行时设置JVM最大堆内存为16MB。javac -classpath ".:gaussdbjdbc.jar" StreamQueryTest.java java -Xmx16M -classpath ".:gaussdb - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0102.md): 现象:设置Statement、PreparedStatement的fetchSize为Integer.MIN_VALUE时出现如下异常:org.postgresql.util.PSQLException: Fetch size must be a value greater to or equal to 0. at org.pos - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0105.md): 在实际生产中,用户的业务系统经常会涉及到一些复杂数据的分析和操作,传统数据类型难以完整且高效地表示或处理该数据场景,JDBC支持的自定义类型Struct和Array可以在已有数据类型的基础上创建出新的数据类型,通过使用自定义类型可以更加方便地对数据进行增删改操作。JDBC操作涉及到自定义类型数据。强化数据一致性与完整性自定义类型允许在类型 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0106.md): 对业务中复杂的数据结构进行操作时,基本数据类型难以精确表达复杂业务概念,并且容易造成代码冗余,影响开发效率。JDBC支持在存储过程中使用自定义类型。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0107.md): 数据库系统会为每个自定义类型创建相应的元数据记录,包含类型的名称、结构以及约束条件等信息。JDBC使用自定义类型时,会根据自定义类型的结构和编程语言中的自定义类型对象进行转换。支持复杂数据建模可以处理复杂的数据结构,如嵌套对象以及数组等,提高数据模型的表达能力。可以处理复杂的数据结构,如嵌套对象以及数组等,提高数据模型的表达能力。提高数据 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0108.md): JDK版本:1.8及以上。数据库环境:GaussDB 503.0及以上版本。JDBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数据准 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0110.md): JDBC通过存储过程对自定义类型数据插入和查询的流程按照时间顺序主要包括环境准备、连接数据库、自定义类型SQL语句执行,查看结果及关闭连接。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0111.md): 连接串常用参数推荐如下,具体设置方法可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 连接数据库”章节。connectTimeout:用于连接服务器操作系统的超时值,单位为秒。当JDBC与数据库建立TCP连接的时间超过此值,则连接断开。根据网络情况进行配置。默认值:0,推荐值:2。socketTimeout: - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0112.md): 完整示例可以正确查询到自定类型的数据,完整示例的运行结果如下所示:不涉及 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0113.md): 现象:绑定自定义类型入参和注册出参后,调用相应的存储过程出现如下异常:ERROR: Function public.test_proc(compfoo, public.compfoo_table, compfoo, public.compfoo_table) does not exist. ???No function matches - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0116.md): 当JDBC执行查询操作,若产生大量的查询结果一次性全部返回给JDBC,可能会导致JVM内存溢出。使用批量查询方式,能够指定数据库每次返回给JDBC的数据个数,减少JVM的内存使用。Java应用通过JDBC连接数据库,执行大批量数据的查询。开发人员在数据库操作中,采用正确的事务开启与关闭方式,在批量查询场景中,通过分批次处理数据可有效减少J - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0117.md): 在数据密集型业务场景中,传统的查询存在以下问题:若结果集较大,应用内存难以承载,会造成JVM内存溢出导致查询失败。一次性获取大量数据,可能会导致网络带宽达到瓶颈,从而影响数据传输的效率。数据库连接和相关资源持续占用影响系统整体吞吐量。通过批量查询的方式可正常执行查询,避免产生内存溢出。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0118.md): JDBC批量查询利用GaussDB的游标遍历功能向服务端查询指定行数的查询结果。在查询时JDBC首先会指定每次从数据库中返回的结果行数,然后数据库会按照指定的行数分批次返回结果数据,直至返回所有的查询结果。批量查询每次与数据库交互可返回指定行数的数据,避免因为查询结果集太大导致Java应用出现内存溢出。批量查询会多次与数据库网络交互,会有 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0119.md): JDK版本:1.8及以上。数据库环境:GaussDB 503.0及以上版本。JDBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 获取驱动jar包并配置JDK环境”章节。数据准备:创建测试表,并插入测试数据。示例如下:gaussdb=# CREATE TABLE tab_test(id int - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0121.md): JDBC批量查询流程主要包括环境准备、连接数据库、开启事务、执行查询语句、结果集处理以及关闭连接。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0122.md): 连接串常用参数推荐如下,具体设置方法可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 连接数据库 > 连接参数参考”章节。connectTimeout:用于连接服务器操作系统的超时值,单位为秒。当JDBC与数据库建立TCP连接的时间超过此值,则连接断开。根据网络情况进行配置。默认值:0,推荐值:2。socke - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0123.md): 完整示例运行结果如下:若需关闭批量查询功能,则去除连接串的fetchsize参数并且重新设置setFetchSize为默认值0。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0124.md): 现象:客户使用spring框架时,连接串中设置fetchsize之后,查询过程中存在OutOfMemoryError的报错。原因:执行批量查询时没有开启事务,因为一般连接的事务由Spring进行管理,在事务未开启的情况下,数据库会一次将所有数据返回给JDBC处理方法:排查业务代码,确认在开启批量查询之前开启了事务。原因:执行批量查询时没有 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0127.md): 当一次操作中将多条记录写入数据库时,相比逐条插入,批量插入可以减少数据库与应用程序之间的交互次数,降低网络延迟和系统资源消耗,从而显著提高数据写入效率。本章通过实现批量插入介绍如何使用ODBC驱动连接数据库、使用事务、批量插入和获取结果集列信息等操作。ODBC配置开启UseServerSidePrepare和UseBatchProtoco - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0128.md): 大量数据插入时,逐条插入会产生大量网络请求、系统资源消耗占用过高以及数据库服务端需要反复解析相似语句导致业务性能下降,因此引用批量插入优化以上痛点。使用ODBC驱动初始化目标表,并通过事务的方式批量插入后续查询需要的数据。相比单条SQL逐个插入的场景,减少与数据库交互次数,降低数据库负载。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0129.md): 在开启UseBatchProtocol和UseServerSidePrepare参数的条件下,ODBC批量处理允许对一条预编译SQL语句复用同一个执行计划,使用U报文一次性携带本次事务中所有待提交的批量绑定数据,只需要进行一次网络连接的建立和数据交互即可完成批量操作。网络通信优化通过使用U报文,可以一次性携带批量更新的数据,避免了多次使用 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0130.md): ODBC版本:V500R002C10及以上版本。数据库环境:GaussDB V500R002C10及以上版本。ODBC驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于ODBC开发 > 开发步骤 > 获取源码包、ODBC包以及依赖库”章节。参考《开发指南》中“应用程序开发教程 > 基于ODBC开发 > 开发步骤 > 获取源码包、 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0132.md): 批量绑定插入的流程分为配置连接、配置批量绑定参数以及执行批量插入操作等步骤。应用场景下的主要API涉及SQLSetConnectAttr、SQLSetStmtAttr、SQLPrepare、SQLBindParameter、SQLExecute和SQLRowCount。具体API介绍请参见《开发指南》中“应用程序开发教程 > 基于ODBC - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0133.md): 配置连接超时参数。通过SQLSetConnectAttr函数设置连接超时时间:SQL_LOGIN_TIMEOUT参数对应于libpq参数connect_timeout,用于控制客户端连接服务端超时时间,单位为秒,默认值为0,表示该参数不生效。该参数推荐配置,用户可根据实际网络情况进行配置。SQLSetConnectAttr(hdbc, S - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0134.md): 在ODBC成功连接数据库后,批量插入了100条数据,完整示例预期结果如下:通过SQLEndTran接口对事务内的异常操作进行回滚,具体回滚事务方法如下: - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0135.md): Q:ignoreCount指定不入库的数据量后,是否可以选择具体不入库的数据?A:可以选择具体不入库的数据。完整示例中操作符指针operptr可以为SQL_PARAM_IGNORE或SQL_PARAM_PROCEED,其中SQL_PARAM_IGNORE为不入库的操作,SQL_PARAM_PROCEED为入库的操作,通过指定数据不同的op - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0138.md): 当一次操作中将多条记录写入数据库时,相比逐条插入,批量插入可以减少数据库与应用程序之间的交互次数,降低网络延迟和系统资源消耗,从而显著提高数据写入效率。本章通过实现批量插入介绍如何使用GO驱动连接数据库、使用事务、批量插入以及获取结果集列信息等操作。应用代码中生成批量插入SQL语句并绑定参数,在事务中调用Exec接口执行该SQL语句,最终 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0139.md): 大量数据插入时,逐条插入会产生大量网络请求、系统资源消耗占用过高以及数据库服务端需要反复解析相似语句导致业务性能下降,因此引用批量插入优化以上痛点。实现通过GO驱动初始化目标表,并通过事务的方式批量插入后续查询需要的数据。完成批量插入数据后,获取结果集列数据并输出结果信息。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0140.md): GO驱动批量处理是一条SQL插入多条记录一次性发送给数据库,并且使用U报文一次性携带本次事务提交所有插入或者更新的数据,只需要进行一次网络连接的建立和数据交互即可完成批量操作。网络通信优化通过使用U报文,可以一次性携带批量更新的数据,避免多次使用PBE报文进行通信,从而减少网络通信的开销。通过使用U报文,可以一次性携带批量更新的数据,避免 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0141.md): Golang版本:1.13及以上。数据库环境:GaussDB V500R002C10及以上版本。Go驱动环境搭建:参考《开发指南》中“应用程序开发教程 > 基于Go驱动开发 > 开发步骤 > 环境准备”章节。参考《开发指南》中“应用程序开发教程 > 基于Go驱动开发 > 开发步骤 > 环境准备”章节。设置代码所需环境变量:以Linux环境 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0143.md): GO驱动可以执行通过创建数据库连接以及在事务中批量插入数据。具体流程如图1所示。 - [具体步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0144.md): 连接串支持DSN和URL两种格式。数据库连接参数参考《开发指南》中“应用程序开发教程 > 基于Go驱动开发 > 开发步骤 > 连接数据库”章节。具体步骤涉及的参数变量值可通过前置准备中设置的环境变量获取值,并进行拼接,如以下代码所示。连接参数的值不局限于通过os.Getenv获取环境变量中的值获取,也可通过读取配置文件、写固定值等方式进行 - [完整示例](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0145.md): 以DSN连接串,初始化employee表后批量插入数据,并获取插入结果输出结果集列信息为例:// main.go package main import ( "database/sql" "fmt" _ "gitee.com/opengauss/openGauss-connector-go-pq" "log" "os" ) - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0146.md): 构建批量插入语句时必须注意SQL注入风险。通过使用占位符和参数绑定,而非直接拼接用户输入的值。多行VALUES语句通过占位符"?"和参数列表插入数据,从而避免注入攻击。所有的动态数据都应作为参数传递,例如使用数据库对象*DB的接口Prepare或Exec等接口传入可变参数形式。通过使用占位符和参数绑定,而非直接拼接用户输入的值。多行VAL - [场景概述](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0148.md): 在查询百万级别的大表时,没有索引或者索引过于单一会造成查询效率低下,为了解决业务痛点,应该创建合适的索引来避免效率低下,此最佳实践主要介绍了对于百万级别的大表,无索引和有索引性能对比,单列索引和复合索引的性能对比。创建合适的索引,避免全表扫描,提高查询效率。 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0149.md): 在现有的数据库里面创建表并插入百万级别数据。示例使用数据库版本使用506.1.0,机器配置为8核CPU32GB内存。 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0150.md): 从执行结果来看,执行时间需要382.624ms。添加索引后,通过与无索引时执行计划的对比,查询时间从原来的382.624ms缩短到0.293ms。从执行结果来看,执行时间需要50.717ms。通过对单列索引和复合索引执行计划的对比,查询时间从原来的50.717ms缩短到6.561ms。 - [场景概述](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0152.md): 表设计初期需要考虑如下场景:数据库表结构设计阶段需要优化查询效率。处理海量数据时需提升维护效率。频繁进行数据更新操作的表设计。需要平衡存储成本与查询性能的场景。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0153.md): 数据类型优化:整数 > 浮点数 > numeric的优先级进行选择。索引平衡机制:查询加速与更新成本的权衡。分区存储策略:逻辑统一+物理分散的存储方式。存储引擎特性:Ustore支持Inplace-Update,Astore为Append-Only。查询性能提升:通过索引设计以及分区策略减少数据扫描量。存储成本优化:合理选择数据类型节省3 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0154.md): 确认业务场景特征:数据量级预估(数据量较大时,考虑使用分区表)。读写比例分析(根据读写比例设计存储引擎和索引)。数据量级预估(数据量较大时,考虑使用分区表)。读写比例分析(根据读写比例设计存储引擎和索引)。环境检查:检查track_counts/track_activities参数状态。检查track_counts/track_activ - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0155.md): 表设计主要包含数据类型设计、分区策略、约束配置、索引设计和存储参数调优等步骤。在数据类型设计时,基于查询效率的考虑,一般遵循以下原则:建议选择高效的数据类型。选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数以及numeric。当多个表存在逻辑关系时,表示同一个含义的字段应该使用相同的数据类型。对于字符 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0158.md): 当用户业务上线时,针对给定的业务模型,需要合理评估GaussDB数据库规格,以便支撑客户的业务性能达标。根据业务上线场景差异,需构建以下两类评估体系:全新业务上线场景业务从Oracle数据库迁移至GaussDB数据库场景针对以上两类评估体系,需重点考虑以下因素:基于性能指标以及扩展性设计等,选择合适的数据库部署形态。通过压力测试与性能仿真 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0159.md): 针对给定的业务模型,GaussDB数据库需要部署什么形态以及服务器需要选择什么硬件规格,缺少系统的评估方法,可能造成创建的数据库无法满足用户的业务性能要求。针对GaussDB数据库的部署形态选择、硬件规格匹配及评估方法缺失的问题,结合业务模型与性能需求,从架构设计、硬件选型、评估体系三个维度进行系统性规划。实现合理评估GaussDB数据库 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0160.md): GaussDB支持主备架构部署形态,主备架构适用场景如下:数据规模:40TB以下,且数据增长可控。业务特征:事务型业务(如金融核心系统),要求RPO=0、RTO<10秒等。数据规模:40TB以下,且数据增长可控。业务特征:事务型业务(如金融核心系统),要求RPO=0、RTO<10秒等。当用户业务场景满足以下条件时,推荐使用主备架构部署形态 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0161.md): 首先要对用户业务指标进行分析采集,作为评估数据库规格的依据,业务指标包含性能指标、数据量指标以及业务特性指标,具体信息如下:性能指标QPS(Queries Per Second):每秒查询量。TPS(Transactions Per Second):每秒事务量。读写比例:读操作与写操作的比例。响应时间要求:平均响应时间、P99/P95响应 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0162.md): 场景一:如果是全新业务上线,硬件规格评估如下:CPU评估计算公式:所需的CPU核心数 ≈ ( QPS * 平均查询耗时(ms) ) / ( 1000ms * CPU利用率目标 )考虑因素:对于OLTP系统,通常需要更多CPU核心(并发处理能力)。对于OLAP系统,需要更高单核性能(计算能力)。需预留20%~30%的CPU余量,应对峰值数据 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0163.md): Q:前置准备中用户的业务指标,包括性能指标,数据量指标以及业务特性指标等,这些指标如何分析采集?A:对于全新的业务,与用户沟通,分析用户的需求,让用户提供数据,然后进行评估。例如:数据量的评估,确定用户业务有多少表,每个表的表结构(表字段和每行的字节数),表的记录数量(行数),创建索引的大小等,通过这些估算出数量的大小,并加上未来业务增长 - [压缩方案介绍](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0172.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [场景概述](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0173.md): 某银行客户的业务表现为数据稳定增长,频繁访问数据大多为近期新增数据,旧数据低频访问。在进行压缩方案选型时主要诉求如下:要求高性能,希望压缩后业务性能影响较小。要求高性能,希望压缩后业务性能影响较小。某通信公司的业务表现为业务中表数据按天划分,旧表中不会有新数据产生。在进行压缩方案选型时主要诉求如下:对压缩比要求较高,可接受性能下降。对压缩 - [压缩方案选型](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0174.md): 分析该银行描述的业务场景,可以判断出该场景可以较为明显地区分冷热数据,历史数据访问频率较低,高级压缩和透明压缩皆适用,但高级压缩对旧数据的低频访问性能影响更小。根据该银行诉求,高级压缩相对于透明压缩对业务性能的影响较低。综上所述,更推荐采用高级压缩方案,详细操作请参考高级压缩操作步骤。分析该公司描述的业务场景,表数据按天划分,旧表无新增数 - [手动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0177.md): 以下为手动调度压缩的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。这一步的操作主要是为了加快测试速度。ilm默认的时间单位为天,执行手动压缩时,第一次调度是打时间戳,第二次调度才能压缩,第一次调度和第二次调度的间隔需要超过冷热数据判定时间的阈值才会执行压缩,以秒为时间单位可以加快测试速度(这里的第一次任务默认可以扫描 - [自动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0178.md): 以下为后台自动调度压缩的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。执行结果示例如下:执行结果示例如下:或者在已有表基础上,直接添加ILM策略。不支持系统表、全局临时表、本地临时表和序列表,不支持Ustore段页式表,不支持unlogged表,不支持IMCV表,不支持压缩toast数据。调用DBE_ILM_ADMI - [结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0179.md): 通过查询gs_adm_ilmresults,statistics字段下SpaceSaving结果是否不为0,判断压缩是否有收益。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0180.md): Q:为什么使用高级压缩之后,gs_adm_ilmresults系统表中显示有SpaceSaving不为0,但是\d+查看表大小没有变化?A:高级压缩方案为区分冷热的页内压缩,可以简单理解为将一个盒子内物品进行挤压,使得剩余可用空间变多了,但是盒子大小没变,还是占用这么大的空间;因此只有再次往表中插入数据中,才能复用这些空间,故高级压缩更适 - [手动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0182.md): 以下为手动创建和压缩透明压缩表的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。如上所示压缩率是7.8,明显会降低存储空间。 - [自动调度](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0183.md): 以下为后台自动调度压缩的测试步骤,过程中的表可替换为自己的表数据进行测试,注意提前做好备份。执行结果示例如下:执行结果示例如下:不支持系统表、全局临时表、本地临时表和序列表,不支持段页式表,不支持hashbucket表,不支持unlogged表,不支持IMCV表,不支持压缩toast数据。调用DBE_ILM_ADMIN.CUSTOMIZE - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0184.md): Q:如果出现文件损坏或者页面损坏,如何进行文件修复和页面修复?A:请参考gs_repair_file和gs_repair_page函数进行修改,详细操作请参见《参考》中“SQL参考 > 函数和操作符 > 数据损坏检测修复函数”章节。A:请参考gs_repair_file和gs_repair_page函数进行修改,详细操作请参见《参考》中“ - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0187.md): 透明加密,是指数据库对将要落盘的数据自动进行加密,读取磁盘数据的时候自动进行解密,同时外部用户或应用程序对数据使用过程中整个加解密过程无感知。通过存储层的静态数据加密,即使磁盘文件被窃取,但磁盘中敏感信息已经加密,窃取者无法解密而得不到真实的用户数据,从而保证了数据库的安全。GaussDB透明加密技术提供了精细的表级加密粒度,在创建表时指 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0188.md): 数据库敏感数据以明文形式存储,存在攻击者绕过数据库认证机制直接读取数据库文件,导致静态数据泄露的严重隐患。同时,国内外多项安全标准与认证也对数据的机密性与完整性保护提出了明确要求。正确配置透明加密能力,确保数据库数据文件、回放日志、物理备份等能够以加密方式存储到磁盘,同时支持数据密钥轮转机制,显著降低暴力破解的可能性。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0189.md): 透明加密特性基于多级密钥加密模型,整体设计原理如图1所示。密钥分为主密钥和数据密钥,数据由数据密钥加密,数据密钥由主密钥加密,而主密钥则由外部密钥管理服务加密存储。数据库用户在密钥管理服务中创建主密钥,并在数据库侧通过GUC参数设置密钥管理服务访问与配置信息。用户在建表阶段通过enable_tde选项指定表为加密表,数据库将在建表语句执行 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0190.md): 使用透明加密特性前,需确认GaussDB是否已对接所选的外部密钥管理服务,然后在密钥管理服务中创建密钥并获取数据库所需的身份认证及密钥服务信息,最后配置数据库透明加密相关的GUC参数并重启数据库。本节将基于当前支持的主要密钥类型说明前置准备流程。GaussDB已对接华为云提供的在线密钥管理服务,需在华为云密钥管理服务中创建主密钥,并获取数 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0191.md): 本节将基于透明加密的主要功能场景展开详细说明,包含功能使用方式、结果验证等内容。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0192.md): A:是的,当前GaussDB仅支持表级数据加密。如果希望实现库级别、表空间级别、模式级别加密,可在应用侧对范围内全部表与索引执行enable_tde=on属性配置即可;如果希望实现数据列级别加密,可考虑使用全密态特性。A:对包含敏感数据的存量数据表执行ALTER命令,若希望存量数据重新加密后写入磁盘,需要对表执行VACUUM FULL命令 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0195.md): 数据库审计是一种对数据库访问行为进行记录、实时监控和合规分析的技术与管理手段。审计功能对数据库系统的安全性至关重要。数据库安全管理员可以利用审计日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等,主要提供数据库系统对非法操作的追溯及举证能力。传统审计主要记录用户对数据库的启停、连接、DDL、DML、DCL等操作。由 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0196.md): 审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。审计日志记录事件的时间、类型、执行结果、用户名、数据库、连接信息、数据库对象、数据库实例名称和端口号等详细信息。支持按起止时间段查询审计日志,并根据记录的字段进行筛选。数据库安全管理员可以利用这些日志信息,重现导致 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0197.md): 传统审计传统审计的记录对象是由GUC参数控制的,GUC参数及对应对象如表1所示。传统审计采用记录到OS文件中(即审计日志)的方式来保存审计结果,审计日志文件夹受操作系统权限保护。日志文件的存储目录由audit_directory参数指定。审计日志每条记录包括time、type、result、userid、username、database - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0198.md): 环境准备:软硬件无要求、传统审计查询需要审计管理员权限,创建统一审计策略需要有安全和策略管理员权限。核心配置:审计开关均可根据实际业务需求进行配置。风险评估:需评估开启audit_dml_state和audit_dml_state_select审计开关后,是否可接受审计模块记录日志对整体性能的影响。 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0200.md): 传统审计完整操作流程包括审计开关开启,执行操作和审计管理员对审计日志的查询。统一审计完整操作流程包括审计策略的创建及审计日志的查询。 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0201.md): 按起止时间查询审计日志,并查询用户audit_t1执行的ddl_table操作,root用户的user操作,例如:在操作系统后台服务配置文件/etc/rsyslog.conf中添加:重启rsyslog服务使配置生效。查询结果如下:上述查询记录展示了用户user001的详细执行SQL语句及执行的相关信息,其中policy_id表示审计策略I - [结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0202.md): 审计模块功能的结果验证主要是审计日志的查询。如传统审计的查询:统一审计的查询:使用操作系统root用户查看审计日志/var/log/localmessages。Oct 9 15:38:11 localhost PGAUDIT: AUDIT EVENT: user name: [user001], app_name: [gsql], cl - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0203.md): A:将pg_audit下所有文件迁移至新环境,确保新环境的pg_audit为空,重启数据库后执行SELECT gs_query_audit()查询。A:审计日志落盘的时间,是因为审计线程依赖这个time标识决定审计文件是否轮转。A:可利用thread_id字段@字符后半部分时间戳获取,解析方式如下:SELECT username,data - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0206.md): 客户业务数据量随着时间推移,积累得越来越多。如果客户业务模型访问的数据范围比较大,业务经常访问的数据范围超过缓冲区大小,就会出现图1,随着访问仓数越来越大,性能越来越低。原因是,访问数据范围除以缓冲区大小的数值越来越大,缓冲区命中率降低,数据库性能下降。如果业务经常访问的数据范围小于缓冲区,则会出现图2,由于访问范围不变,缓冲区命中率不变 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0207.md): 性能下降:当数据访问规模大于缓冲区大小时,会导致缓冲区命中率下降,进而导致缓冲区频繁的页面置换操作,I/O压力激增,如图1所示。当I/O压力超过存储介质的I/O带宽或者IOPS最大上限时,就会出现I/O瓶颈,导致数据库性能受限。另外,I/O带宽或者IOPS过低也容易导致性能下降。访问数据大于缓冲区大小导致命中率低出现I/O瓶颈性能抖动:当 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0208.md): 大容量性能优化云上环境中的EVS存储盘带宽上限为800MB/s,若客户本地使用的是普通SATA SSD存储介质,同样可能因带宽上限不足,在数据量持续增长后面临大容量场景下的性能瓶颈,进而引发性能下降和抖动。此时,客户可借助NVMe Cache特性提升I/O带宽,并通过智能淘汰算法提高缓冲区命中率,从而优化数据库性能;同时,采用智能刷脏算法 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0209.md): 当前NVMe Cache功能不支持段页式,需要确保当前数据库仓内没有段页式表。【大容量NVMe Cache优化 - 前置检查项】 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0211.md): 需要设置相关的GUC参数才能启用大容量场景下的优化特性,然后再拉起集中式实例承接业务。 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0212.md): 对GUC参数设置如下,才能启用上述所有优化特性。各GUC参数的详细介绍参见《参考》中“数据库运行参数说明 > GUC参数说明”章节。非压缩场景:GUC参数设置如下。nvme_cache_seg_num=2048nvme_io_capacity=4GBlocal_storage_directory='NVMe盘的挂载位置'pagewrite - [结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0213.md): 高性能验证:性能提升30%以上。冷温热启动的三个客户端最终的TPMC加和值作为整体40TB大容量集中式8h长稳TPCC测试的最终性能,这里对比了基线和开启大容量优化特性后的性能。冷温热启动的三个客户端最终的TPMC加和值作为整体40TB大容量集中式8h长稳TPCC测试的最终性能,这里对比了基线和开启大容量优化特性后的性能。高稳定验证:抖动 - [故障处理与回退](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0214.md): 由于NVMe Cache不支持段页式,主机端存在拦截,但是如果数据库之前已经存在段页式表,产生对应的段页式日志会发送到备机进行回放,如果此时打开NVMe Cache特性可能就会一直报错,导致数据库HANG。开启NVMe Cache之前,在数据库中提前创建一个段页式表,对段页式表数据进行增删查改产生段页式日志。然后开启NVMe Cache特 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0215.md): 操作失败类(如权限不足、版本不兼容)典型问题:建表时出现以下报错。The segment table and NVMe cache are not supported when enabled together.根因分析:属于正常现象,说明在打开NVMe Cache特性之后,执行的SQL语句包含创建段页式表内容,由于NVMe Cache不 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0218.md): 数据库存储着组织最重要、最敏感的数据资产,而这些数据面临着来自内部和外部的多重安全威胁。访问控制作为数据库安全的第一道且最关键的技术防线,其核心作用体现在以下四个关键维度:保护核心数据资产:数据库中通常存储着客户信息、财务数据、知识产权和运营数据等信息。若缺乏有效访问控制,任何能够连接数据库的实体(例如被恶意软件感染的内部应用,或成功入侵 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0219.md): 解决如何配置用户权限。数据库权限管理的最佳实践核心在于遵循最小权限原则,即仅为用户和应用授予完成其任务所必需的最小权限。通过基于角色的访问控制(RBAC)实现按组管理权限,并实施列级、行级安全等精细化控制手段。从根本上防止数据泄露、保证数据完整性、满足合规要求。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0220.md): 对象权限管理对象权限是当用户要对某个数据库对象进行操作所需拥有的合法操作权限,仅当用户对此对象拥有合法操作的权限,才允许用户对此对象执行相应的操作。访问控制列表(Access Control List,ACL)是实现数据库对象权限管理和权限检查的基础,每个对象都具有一个由AclItem构成的访问控制列表来存储该对象的所有授权信息。当用户访 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0222.md): 用户能执行的每一个操作都依赖上一章中提到的权限体系,校验流程如图1。 - [操作步骤与结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0223.md): 方法1:赋予用户user1表t1的查询权限。gaussdb=>GRANT SELECT ON table public.t1 TO user1; GRANT方法2:创建角色role1。gaussdb=> CREATE ROLE role1 password '********'; CREATE ROLE赋予角色role1表t1的查询权限。 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0224.md): A:可以。用户拥有表级的查询权限时,即可查询全表。A:可以通过查询information_schema.table_privileges视图查看其被授予的表权限。A:通过系统表GS_DB_PRIVILEGE查询用户被赋予的ANY权限。 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0227.md): 金融、银行业对业务需要极高的容灾能力。当一个分片故障了半数及以上DN,因同步备中有DN发生故障,无法执行写操作,DN执行写操作会超时。为了降低对业务的影响,需要对分片上可用DN进行降副本操作,当检测到故障恢复后,自动触发升副本操作。 - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0228.md): 多数派DN故障影响业务提交时,通过降副本及时提供服务,DN修复后,通过升副本使数据库恢复正常。 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0229.md): 通过检测数据库是否出现多数派故障,修改同步列表,保证数据库在多数派故障后可以快速恢复业务。 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0230.md): 1、前提要求:DN主存在,或者DCF主存在,或者剩余的DN能选主成功2、降副本:半数以上DN发生故障(DN状态是down或unknown:一般为管理面网络不通或进程不在;DN状态是need repair:主备断连;DN状态是starting:启动中;DN状态是building:重建中),且状态持续(down或unknown状态默认持续12 - [流程总览](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0232.md): 以一主三备为例(dn_6001是主,dn_6002,dn_6003,dn_6004是备):dn_6001的默认同步列表为synchronous_standby_names = ‘ANY 2(dn_6002,dn_6003,dn_6004)’,代表dn_6001为主时,除自己外,需要dn_6002,dn_6003,dn_6004中任意两个提 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0233.md): 多数派故障计算公式:多数派故障数 =(副本数+1)/2。DN故障检测机制:down或unknown状态默认持续12s以上。need repair、starting和building状态默认持续1min以上。1、在一主三备配置中,多数派故障为(4 + 1)/2 = 2,这意味着当dn_6002,dn_6003,dn_6004中有两个或以上副 - [结果验证](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0234.md): 降副本:1、多数派故障后,数据库状态为Unavailable,业务无法提交。2、CM识别到后,进行降副本操作,数据库状态变为Degraded,业务正常运行。3、通过gsql连接主DN,查询synchronous_standby_names,同步列表被修改。升副本:1、CM识别故障节点修复后,进行升副本操作,所有故障节点均修复并升回后,数据 - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0235.md): Q:所有备DN均故障时,数据库状态Unavailable。A:所有副本故障时,仅剩主机保存完整日志,存在数据丢失风险,CM不会自动降副本。如需降为单副本,需手动设置 `enable_synclist_single_inst = on`。Q:所有DN状态均是Normal,数据库状态短时间为Degraded。A:可能因降副本操作后,故障副本与 - [应用场景](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0249.md): 随着企业核心业务系统逐步向HTAP(Hybrid Transactional / Analytical Processing)架构演进,数据库需要在同一份数据之上同时支撑:高并发OLTP事务写入。低延迟OLAP分析查询(例如统计报表、即席分析、实时指标等)。在传统行存(Row Store)架构下,OLTP与OLAP混合负载存在以下问题:O - [需求目标](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0250.md): 在交易型数据库中引入IMCV的核心目标包括:最小化对现有业务的入侵:无需拆库、无需维护双写,基于同一份逻辑表数据即可支持HTAP负载。TP与AP负载路径解耦:事务写入仍基于行存引擎执行,分析型查询优先通过IMCV列存扫描路径完成。分析型查询加速:通过按列组织的数据格式,减少无关列读取,降低磁盘I/O开销,提升CPU Cache命中率与执行 - [架构原理](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0251.md): GaussDB HTAP架构下,采用双格式存储模型,通过不同的数据组织形式分别服务于OLTP与OLAP负载:行存(Row Store)表仍作为主存储格式,服务于OLTP事务(INSERT/UPDATE/DELETE/点查 )。IMCV则基于对应的行存表数据,以内存为载体,采用列式存储格式,面向OLAP查询进行优化。IMCV与现有行存表共享 - [前置准备](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0252.md): 本节最佳实践基于如下软硬件环境及数据集进行验证:数据库版本:GaussDB Kernel 507.0。硬件环境:鲲鹏服务器,2路CPU,128核。数据集:TPC-H Benchmark(Scale Factor=100) 。TPC-H Benchmark介绍及使用请参考https://www.tpc.org/tpch/。在使用HTAP能力 - [操作步骤](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0253.md): 可通过ALTER TABLE ... COLVIEW命令为已有行存表创建IMCV。默认采用异步加载模式,命令返回后,由后台线程负责IMCV的加载。命令执行成功后,可通过系统函数gs_htap_imcv_info()查询IMCV的加载状态及内存使用情况。其中,rowgroup_num表示预期生成的行组数量,populated_rowgrou - [常见问题](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb-23-0254.md): Q:创建IMCV后,以及后续行存表发生IUD变更时,数据何时加载到列存?列存扫描是否保证强一致性?A:在默认异步加载模式下,IMCV的数据加载与同步机制如下:创建IMCV后的初始加载:当在行存表上创建IMCV后,系统由后台HTAP Worker线程对表中的存量数据进行列存数据的构建。行存数据变更后的同步机制:IMCV创建完成后,行存表上的 - [GaussDB安全配置建议](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0034.md): 安全性是华为云与您的共同责任。华为云负责云服务自身的安全,提供安全的云。作为租户,您需要合理使用云服务提供的安全能力对数据进行保护,安全地使用云。详情请参见责任共担。本文提供了GaussDB使用过程中的安全配置建议,旨在为提高整体安全能力提供可操作的规范性指导。根据该指导文档您可以持续评估GaussDB的安全状态,更好的组合使用Gauss - [扩缩容最佳实践](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0045.md): 云数据库GaussDB提供了多种功能,以满足您的扩缩容需求,包括变更CPU和内存规格、调整存储空间、以及增减节点和分片数量,您可以根据业务需求轻松调整数据库的性能和容量。当实例的性能不满足业务需求,或者新业务的数据量较少时,您可以通过变更实例CPU和内存规格的方式进行扩容或缩容。具体操作参见变更GaussDB实例的CPU和内存规格。当出现 - [备份恢复概述](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0047.md): 当数据库或表被恶意或误删除时,虽然GaussDB支持高可用,但备机数据库会被同步删除且无法还原。因此,数据被删除后只能依赖于实例的备份保障数据安全。GaussDB支持通过备份文件将数据恢复到备份被创建时的状态或指定时间点的状态,从而保证数据的可靠性。本章节介绍了常见误操作的场景和恢复方案,具体可参考表1。同时,还介绍了备份恢复策略的典型场 - [实例恢复:从回收站恢复](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0049.md): 回收站保留了已删除实例在删除时生成的备份,如果备份未超过回收站策略中设置的保留天数,您可以在回收站中通过重建实例恢复误删除的实例。本章节将按照数据构造、误删除实例、恢复实例、确认恢复结果的完整流程,详解从回收站恢复实例的最佳实践。登录管理控制台。单击管理控制台左上角的,选择区域和项目。在页面左上角单击,选择数据库云数据库 GaussDB, - [实例恢复:按备份文件恢复](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0050.md): 如果您在删除实例之前进行过手动备份,可以在备份恢复页面进行恢复。登录管理控制台。单击管理控制台左上角的,选择区域和项目。在页面左上角单击,选择数据库云数据库 GaussDB,进入云数据库 GaussDB信息页面。在“实例管理”页面,选择目标实例,单击操作列的“登录”,进入数据管理服务数据库登录界面。您也可以在“实例管理”页面,单击目标实例 - [库表恢复:恢复到指定时间点](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0052.md): 如果您开启了表级自动备份策略,当误操作导致部分库表数据丢失时,可以使用已有的表级自动备份,恢复表数据到指定时间点。登录管理控制台。单击管理控制台左上角的,选择区域和项目。在页面左上角单击,选择数据库云数据库 GaussDB,进入云数据库 GaussDB信息页面。在“实例管理”页面,选择目标实例,单击操作列的“登录”,进入数据管理服务数据库 - [库表恢复:按备份文件恢复](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0053.md): 如果您开启了表级自动备份策略或手动创建了表级备份,当误操作导致部分库表数据丢失时,可以使用已有的表级备份,将指定表数据恢复到备份被创建时的状态。登录管理控制台。单击管理控制台左上角的,选择区域和项目。在页面左上角单击,选择数据库云数据库 GaussDB,进入云数据库 GaussDB信息页面。在“实例管理”页面,选择目标实例,单击操作列的“ - [最佳实践汇总](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0070.md): 本文汇总了云数据库GaussDB常见应用场景的操作实践,并为每个实践提供详细的方案描述和操作指导,帮助您轻松使用GaussDB。表1 GaussDB最佳实践相关文档说明GaussDB安全配置建议提供GaussDB安全配置的规范性指导。扩缩容最佳实践介绍不同扩缩容操作的适用场景。备份恢复最佳实践介绍常见误操作的场景和恢复方案。GaussDB - [GaussDB指标告警配置建议](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0071.md): 通过在云监控服务界面设置告警规则,用户可自定义监控目标与通知策略,及时了解实例的运行状况,从而起到预警作用。本章节介绍了设置GaussDB指标告警规则的配置及建议。关于告警参数的配置,请参见《云监控用户指南》。 - [容灾最佳实践](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0072.md): 容灾实现原理说明:主实例与灾备实例之间日志传输通过流式全量/增量build的方式复制。容灾原理图初始全量数据的同步:通过对主实例进行全量备份的方式恢复到灾备实例。增量日志同步:按照全量备份提供的LSN(日志序列号)点,主实例启动归档线程往灾备实例首备(Main Standby)节点的数据盘写入增量数据;灾备实例首备(Main Standb - [慢SQL优化最佳实践](https://support.huaweicloud.com/bestpractice-gaussdb/gaussdb_practice_0073.md): 慢SQL是数据库性能问题的常见原因,执行时间过长的SQL语句会占用大量系统资源,导致业务响应缓慢甚至超时。华为云GaussDB提供了慢SQL优化功能,帮助用户识别和优化慢SQL语句,从而提升数据库性能。本文通过以下四个案例,介绍如何使用GaussDB慢SQL功能定位并解决常见的性能问题。案例一:全表扫描优化案例二:索引选择优化案例三:高频 ## 性能白皮书 - [测试方法](https://support.huaweicloud.com/pwp-gaussdb/gaussdb_pwp_0001.md): 本章提供GaussDB使用BenchmarkSQL进行性能测试的方法和测试数据报告。BenchmarkSQL,一个JDBC基准测试工具,内嵌了TPC-C测试脚本,支持很多数据库,如PostgreSQL、Oracle和Mysql等。TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统。几乎所 - [测试数据](https://support.huaweicloud.com/pwp-gaussdb/gaussdb_pwp_0002.md): GaussDB支持的IOPS取决于云硬盘(Elastic Volume Service,简称EVS)的IO性能,具体请参见《云硬盘产品介绍》中“磁盘类型及性能介绍”的内容。实例类型:分布式版,集中式版。实例规格:16U64GB和32U128GB等。集群规模:分布式版:3CN,3分片,3副本;集中式版:1主2备。压测时长:30min(预热5 ## API参考 - [使用前必读](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_001.md): GaussDB是华为自主创新研发的分布式关系型数据库。该产品支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。您可以使用本文档提供API对数据库 - [API概览](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_007.md): 通过使用GaussDB接口,您可以使用GaussDB的创建实例、删除实例、查询实例列表、获取与修改指定实例参数、设置与查询自动备份策略等功能,详情请参见下表。 - [构造请求](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_009.md): 本节介绍REST API请求的组成,并以调用IAM服务管理员创建IAM用户说明如何调用API。该API获取用户的Token,Token可以用于调用其他API时鉴权。请求URI由如下部分组成:{URI-scheme}://{Endpoint}/{resource-path}?{query-string}尽管请求URI包含在请求消息头中,但大 - [认证鉴权](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_011.md): 调用接口有如下两种认证方式,您可以选择其中一种进行认证鉴权。Token认证:通过Token认证通用请求。AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。推荐使用AK/SK认证,其安全性比Token认证要高。Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存 - [返回结果](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_012.md): 请求发送以后,您会收到响应,包含状态码、响应消息头和消息体。状态码是一组从1xx到5xx的数字代码,状态码表示了请求响应的状态,完整的状态码列表请参见状态码。对于获取用户Token接口,如果调用后返回状态码为201,则表示请求成功。对应请求消息头,响应同样也有消息头,如Content-type。对于获取用户Token接口,返回如图1所示的 - [创建数据库实例(v3.2) - CreatingaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_017.md): 创建GaussDB实例。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.2/{project_id}/instances创建一个GaussDB实例,实例部署形态为分布式独立部署,包周期付费(1年),引擎版本为V2.0-2.7,三个不同可用区 - [CN横向扩容/DN分片扩容/磁盘扩容 - AddingCNsandDNshardsandScalingupStorage](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_019.md): 通过该接口调用实现CN横向扩容/DN分片扩容/磁盘扩容。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。扩容实例磁盘磁盘大小要求(分片数*4GB )的整数倍。所有节点状态正常。磁盘大小要求(分片数*4GB )的整数倍。所有节点状态正常。您可以在API Explorer中调试该接口。POST /v3/{p - [删除数据库实例 - DeletingaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_020.md): 删除数据库实例,不支持删除包周期实例。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instance_id}删除数据库实例。{ "job_id": "dff1d289-4d03- - [查询数据库实例列表(v3.1)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_021.md): 根据指定条件查询实例列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances无。查询所有实例列表GET https://gaussdb-opengauss.cn-north-1.myhuaweic - [重置数据库密码 - ResettingaDatabasePassword](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_023.md): 重置数据库密码。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/password无。修改GaussDB数据库root用户密码。POST https://gaussdb - [修改实例名称 - ChangingaDBInstanceName](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_024.md): 修改实例名称。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/name修改GaussDB实例名称为“instance-name”。PUT https://gaussdb - [重启数据库实例 - RebootingaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_025.md): 重启数据库实例。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。实例在创建、扩容、变更规格、恢复或冻结状态下不能重启。POST /v3/{project_id}/instances/{instance_id}/restart正常202202异常请参见状态码。 - [分片节点主备切换 - SwitchingRolesofthePrimaryandStandbyDNsinShards](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_027.md): 支持用户对单个或多个DN分片做主备切换,同一分组内只能指定一个新的备节点进行升主操作。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/switch-shard切换多个 - [查询实例的组件列表 - QueryingtheComponentsofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_028.md): 查询实例的所有组件信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/components查询实例的组件列表。查询集中式版实例组件列表。{ "nodes": - [变更实例规格 - ChangingthevCPUsandMemoryofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_029.md): 通过调用该接口提升实例的CPU和内存。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。规格变更前,须确保实例状态正常。实例异常,节点异常均不允许进行规格变更。新规格和旧规格的操作系统架构必须相同。修改CPU|内存后,将会重启数据库实例,重启后实例会自动释放内存中的缓存,请在业务低峰期进行重启,避免对高峰 - [查询实例主备平衡状态 - CheckingWhetherHostLoadIsUnbalancedDuetoaPrimary/StandbySwitchover](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_031.md): 查询实例是否发生过主备切换而导致主机负载不均衡。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/balance查询实例主备平衡状态。查询实例主备平衡状态成功。正常200 - [查询解决方案模板配置 - QueryingSolutionTemplateSettings](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_032.md): 查询指定实例或者部署形态对应的副本数、分片数、节点数。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。请求参数solution和instance_id不能都为空。都传时以instance_id为准。您可以在API Explorer中调试该接口。GET /v3/{project_id}/deploymen - [查询已绑定的弹性公网IP列表 - QueryingEIPsBoundtoaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_033.md): 查询实例已绑定的弹性公网IP列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/public-ips查询实例已绑定的弹性公网IP列表。查询实例已绑定的弹性公网IP列表 - [绑定/解绑弹性公网IP - BindingorUnbindinganEIP](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_035.md): 实例下的节点绑定弹性公网IP/解绑弹性公网IP。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/nodes/{node_id}/public-ip为GaussDB实例 - [查询实例SSL证书下载地址 - QueryingtheSSLCertificateDownloadAddressofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_036.md): 查询实例SSL证书下载地址。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/ssl-cert/download-link查询实例SSL证书下载链接。查询实例SSL证书下 - [查询租户的实例配额 - QueryingtheInstanceQuotasofaTenant](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_037.md): 查询租户的实例配额。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/project-quotas查询租户的实例配额。查询租户的实例配额成功。{ "quotas" : { "resources" : [ - [启动实例/节点 - StartingaDBInstanceorNode](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_042.md): 启动实例/节点。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。实例启动后,会自动触发一次全量备份。停止实例后,可能会由于底层资源不足引起启动失败。若实例启动失败,可稍后再次尝试启动,或利用最新备份文件恢复到新实例,或联系客服人员处理。POST /v3/{p - [停止实例/节点 - StoppingaDBInstanceorNode](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_043.md): 停止数据库,同时支持节点级别的停止操作。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。已停止的实例被删除后不会进入回收站。实例停止后,自动备份任务也会停止。实例启动后,会自动触发一次全量备份。停止实例后,可能会由于底层资源不足引起启动失败。若实例启动失败, - [开启透明加密 - EnablingTransparentDataEncryption](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_044.md): 开启透明加密。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅支持数据库版本大于等于V2.0-3.300的实例。PUT /v3/{project_id}/instances/{instance_id}/kms-tde/switch开启透明加密。开启透明加 - [结束空闲会话 - QueryingandKillingIdleSessions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_045.md): 查杀空闲会话。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/kill-free-session正常200200异常请参 - [结束会话 - QueryingandKillingSpecifiedSessions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_046.md): 查杀指定会话列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/kill-session正常200200异常请参见状态 - [查询实时会话 - QueryingReal-TimeSessions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_047.md): 查询数据库实例节点的实时会话列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/real-time-session正常 - [获取参数模板列表 - ObtainingParameterTemplates](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_049.md): 获取参数模板列表,包括所有数据库的默认参数模板和用户创建的参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.2/{project_id}/configurations获取参数模板列表。获取参数模板列表成功。正常200200异常请参见状 - [获取指定实例的参数 - ObtainingtheParametersofaSpecifiedDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_051.md): 获取指定实例的参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.2/{project_id}/instances/{instance_id}/configurations获取指定实例的参数。获取指定实例的参数成功。{ "id" - [修改指定实例的参数 - ModifyingParametersofaSpecifiedDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_053.md): 修改指定实例的参数模板参数。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。修改的参数必须在指定数据库版本的默认参数范围内,具体可配置范围请参见《GaussDB用户指南》中“查看和修改实例参数”的内容。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instanc - [创建参数模板 - CreatingaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_054.md): 创建参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/configurations创建一个2.3版本,集中式版部署形态的参数模板。POST https://gaussdb-opengauss.cn-nort - [删除参数模板 - DeletingaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_055.md): 删除参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/configurations/{config_id}无。删除参数模板。无。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询参数模板详情 - QueryingDetailsAboutaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_056.md): 查询参数模板详情,根据参数模板ID获取指定参数模板详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/configurations/{config_id}查询参数模板详情。查询参数模板详情成功。正常200200 - [复制参数模板 - ReplicatingaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_057.md): 复制参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/configurations/{config_id}/copy复制参数模板。POST https://gaussdb-opengauss.cn-nort - [重置参数组 - ResettingaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_058.md): 重置参数组。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅自定义模板才可以重置。POST /v3/{project_id}/configurations/{config_id}/reset无。重置参数组。无。正常200200异常请参见状态码。请参见状态码 - [比较两个参数组模板之间的差异 - ObtainingtheDifferencesofTwoParameterTemplates](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_059.md): 获取两个参数配置模板的差异列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/configurations/comparison查询两个参数组模板的差异列表。POST https://gaussdb-openga - [查询可应用实例列表 - QueryingInstancesThataParameterTemplateCanBeAppliedTo](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_060.md): 查询可应用当前参数组模板的实例列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/configurations/{config_id}/applicable-instances查询可应用当前参数组模板的实例列表。查 - [校验参数组名称是否存在 - CheckingWhethertheParameterTemplateNameExists](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_061.md): 校验参数组名称是否存在。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/configurations/name-validation校验参数组名称是否存在。校验参数组名称是否存在成功。{ "exist" : f - [应用参数模板 - ApplyingaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_062.md): 应用参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/configurations/{config_id}/apply应用参数模板。应用参数模板成功。正常202202异常请参见状态码。请参见状态码。请参见错误 - [查询参数模板的应用记录 - QueryingApplicationRecordsofaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_063.md): 查询参数模板的应用记录。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/configurations/{config_id}/applied-histories查询参数模板的应用记录。查询参数模板的应用记录成功。正常 - [查询参数模板的修改历史 - QueryingChangeHistoryofaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_064.md): 查询参数模板的修改历史记录。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/configurations/{config_id}/histories查询参数模板的修改历史记录。查询参数模板的修改历史记录成功。正常20 - [设置自动备份策略](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_066.md): 设置自动备份策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/backups/policy无。设置GaussDB实例备份策略,备份文件保存时长7天,备份时间段为19 - [查询自动备份策略 - QueryinganAutomatedBackupPolicy](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_067.md): 查询自动备份策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/backups/policy查询自动备份策略。查询自动备份策略成功。正常200200异常请参见状态码。 - [查询备份列表 - QueryingBackups](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_068.md): 获取备份列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。该接口仅支持查询GaussDB的手动全量备份及自动全量备份。您可以在API Explorer中调试该接口。GET /v3.2/{project_id}/backups查询所有备份列表GET https://gaussdb-opengauss. - [创建手动备份 - CreatingaManualBackup](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_070.md): 创建手动备份。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/backups创建GaussDB手动全量备份。正常202202异常请参见状态码。请参见状态码。请参见错误码。 - [删除手动备份 - DeletingaManualBackup](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_072.md): 删除手动备份。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/backups/{backup_id}删除手动备份。删除手动备份成功。正常202202异常请参见状态码。请参见状态码。请参见错误码。 - [查询可恢复时间段 - QueryingtheRestorationTimeRange](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_073.md): 查询可恢复时间段。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/restore-time查询可恢复时间段。查询可恢复时间段成功。正常200200异常请参见状态码。请参 - [恢复到新实例 - RestoringDatatoaNewinstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_074.md): 根据备份恢复新实例。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。目标实例与源实例的数据库版本和实例类型必须一致。目标实例规格必须大于等于源实例规格。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances按备份文件恢复到新实例,新实例规格为8U64 - [查询可用于备份恢复的实例列表 - QueryingInstancesThatCanBeUsedforBackupsandRestorations](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_076.md): 查询可用于备份恢复的实例列表,实例信息要符合备份条件。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。restore_time和backup_id参数不能同时为空。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/restorable-instances查询可用 - [根据时间点或者备份文件查询原实例信息 - QueryingInformationAbouttheOriginalInstanceBasedonaSpecificPointofTimeoraBackupFile](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_077.md): 根据时间点或者备份文件查询原实例信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。restore_time和backup_id参数不能同时为空。backup_id非空时,按照backup_id进行查询。backup_id为空时,按照restore_time进行查询。restore_time和back - [恢复到当前实例或已有实例 - RestoringDatatotheOriginalorExistingInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_078.md): 将数据库恢复到当前实例或已有实例。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/recovery恢复到当前实例或已有实例。恢复到当前实例或已有实例成功。正常202202异常请参见状态码。请参见 - [查询数据库引擎的版本](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_083.md): 查询当前支持的引擎版本。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/datastore/versions无。查询数据库引擎的版本。查询数据库引擎的版本成功。正常200200异常请参见状态码。请参见状态码。请参见错 - [查询数据库规格 - QueryingInstanceSpecifications](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_084.md): 查询数据库的规格信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.2/{project_id}/flavors查询集中式版数据库规格GET https://gaussdb-opengauss.cn-north-1.myhuaweiclou - [查询引擎列表 - QueryingDBEngines](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_086.md): 查询引擎列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/datastores查询引擎列表。查询引擎列表成功。{ "datastores": [ { "supported_versions - [查询实例可变更规格 - QueryingSpecificationsthataDBInstanceCanBeChangedTo](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_087.md): 查询实例可变更规格列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/available-flavors查询实例可变更规格,查询记录数为10,偏移量为0。GET ht - [修改错误日志采集开关状态 - EnablingorDisablingErrorLogCollection](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_089.md): 打开或者关闭数据库错误日志采集的开关。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。实例在创建、变更规格、修改端口、冻结、异常等状态下不能执行该操作。POST /v3/{project_id}/instances/{instance_id}/error-l - [查询错误日志采集开关状态 - QueryingWhetherErrorLogCollectionIsEnabled](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_090.md): 查询数据库错误日志采集的开关状态。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/error-log/switch/status正常200200异常请参见状态码。请参见 - [查询错误日志下载链接 - QueryingtheLinkforDownloadingErrorLogs](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_091.md): 查询数据库错误日志下载链接。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/error-log正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询数据库磁盘类型 - QueryingtheDiskTypeofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_095.md): 查询数据库引擎的磁盘类型。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/storage-type查询分布式版数据库磁盘类型GET https://gaussdb-opengauss.cn-north-4.myhua - [创建数据库 - CreatingaDatabase](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_097.md): 在指定实例中创建数据库。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。该接口只支持单个数据库创建,实例在创建、变更规格、冻结、异常等状态下不能执行该操作。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/datab - [创建数据库用户 - CreatingaDatabaseAccount](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_098.md): 在指定实例中创建数据库用户。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在创建、变更规格、冻结、异常等状态下不能执行该操作。该接口只支持创建单个用户接口。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/db - [创建数据库SCHEMA - CreatingaDatabaseSchema](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_099.md): 在指定实例的数据库中, 创建数据库SCHEMA。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在创建、变更规格、冻结、异常等状态下不能执行该操作。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/schema无 - [授权数据库账号 - ConfiguringPermissionsofDatabaseAccounts](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_100.md): 在指定实例的数据库中, 设置账号的权限。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在创建、变更规格、冻结、异常等状态下不能执行该操作。创建的只读用户对public模式默认具有create和usage权限。同一schema不能同时授权。您可以在API Explorer中调试该接口。POST /v - [重置数据库账号密码 - ResettingaPasswordforaDatabaseAccount](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_101.md): 重置指定数据库账号的密码。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在创建、变更规格、冻结、异常等状态下不能执行该操作。该接口只支持重置单个用户。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/db-use - [查询数据库列表 - QueryingDatabases](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_102.md): 查询指定实例中的数据库列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/databases查询数据库列表。查询数据库列表成功。正常200200异常请参见状态码。请参 - [查询数据库用户列表 - QueryingDatabaseUsers](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_103.md): 指定实例中查询数据库用户列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/db-users查询数据库用户列表。查询数据库用户列表成功。正常200200异常请参见状态 - [查询数据库SCHEMA列表 - QueryingDatabaseSchemas](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_104.md): 查询指定实例的数据库SCHEMA列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在异常或冻结状态下不能执行该操作。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/schemas正常200200异常请参见状态 - [查询容灾集群监控状态 - QueryingInstanceDRStatus](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_106.md): 查询实例搭建容灾后实时容灾状态。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.5/{project_id}/instances/{instance_id}/disaster-recovery/monitor正常200200异常请参见状态码。 - [查询容灾关系列表 - QueryingInstancesThatHaveEstablishedaDRRelationship](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_107.md): 查询容灾关系列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.5/{project_id}/disaster-recovery/relations正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [搭建容灾关系 - EstablishingaDRRelationship](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_108.md): 搭建容灾关系。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。从主实例端下发。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/disaster-recovery/construct正常202202异常请参见状态 - [灾备实例容灾升主 - PromotingtheDRinstancetoPrimary](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_109.md): 容灾升主(failover),灾备实例端下发。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。支持在灾备Region下发。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/disaster-recovery/fa - [解除容灾关系 - StoppingaDRRelationship](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_110.md): 解除容灾关系,从容灾主实例端下发。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持从主Region下发解除容灾关系操作。主实例A和灾备实例B搭建容灾关系,在灾备实例B进行流式容灾演练场景时,禁止在主实例A下发流式容灾解除操作。您可以在API Explorer中调试该接口。POST /v3.5/{p - [主备切换 - SwitchingRolesofPrimaryandDRInstances](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_111.md): 灾备实例主备切换(switchover),可在主备任意一端下发。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/disaster-recovery/switcho - [重建容灾关系 - Re-establishingaDRRelationship](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_112.md): 流容灾备升主选择支持容灾回切,实现容灾关系的重建任务。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。流式容灾要求数据库引擎版本在V2.0-3.200及以上。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/di - [开启容灾演练 - EnablingDRDrill](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_113.md): 灾备实例开始容灾演练。演练开启后,主实例会对增量数据进行暂存,此处可以指定保留增量数据大小的上限值,演练结束后,灾备实例可以根据暂存的增量数据进行增量回放。如果增量数据超过此处设定值,演练结束后灾备实例会进行全量数据回放。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持流容灾,并且数据库引擎版本要 - [结束容灾演练 - DisablingDRDrill](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_114.md): 灾备实例结束容灾演练。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/disaster-recovery/simulation-stop正常202202异常请参见 - [开启日志保持 - EnablingLogCache](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_115.md): 主实例开始容灾日志保持。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持流容灾,并且数据库引擎版本要求在V2.0-3.200及以上。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/disaster-rec - [结束日志保持 - DisablingLogCache](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_116.md): 主实例结束容灾日志保持。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/disaster-recovery/keep-log-stop正常202202异常请参见状 - [重置容灾配置 - ResettingDRConfigurations](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_117.md): 重置容灾网络等配置。将自动创建委托以授权DBS云服务访问VPC资源信息。重置实例容灾网络等配置。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.5/{project_id}/instances/{instance_id}/reset-dr- - [查询实例标签 - QueryingTagsofaSpecificInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_119.md): 查询指定实例的用户标签信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/tags正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询项目标签 - QueryingTagsofaProject](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_120.md): 查询项目下所有用户标签信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/tags正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询预定义标签 - QueryingPredefinedTags](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_121.md): 查询预定义标签。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/predefined-tags正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [添加实例标签 - AddingTagsforaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_122.md): 对指定实例添加用户标签信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/tags创建一个用户标签,key为1,value为2。POST https://gauss - [查询实例存储空间使用信息 - QueryingtheStorageUsageofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_124.md): 查询指定实例的存储使用空间和最大空间。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/volume-usage查询实例存储空间使用信息。查询实例空间信息成功。正常200 - [修改企业项目配额 - ModifyingEnterpriseProjectQuotas](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_126.md): 修改企业项目配额。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/enterprise-projects/quotas无。修改企业项目配额,实例的配额设置为1000个,CPU配额100000核数,内存配额200000 - [查询企业项目配额组 - QueryingEnterpriseProjectQuotas](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_127.md): 查询企业项目配额组信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/enterprise-projects/quotas正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [获取任务信息 - ObtainingTaskInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_129.md): 获取指定任务ID的任务信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/jobs获取GaussDB指定ID的任务信息。获取任务信息成功。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询任务列表 - QueryingTasks](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_130.md): 获取任务中心的任务列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。最多查询最近一个月的任务列表。您可以在API Explorer中调试该接口。GET /v3/{project_id}/tasks查询任务状态为“运行中”的任务列表GET https://gaussdb-opengauss.cn-no - [删除任务记录 - DeletingaTaskRecord](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_131.md): 删除任务记录。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/jobs/{job_id}无。删除任务记录。删除任务记录成功。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [设置回收站策略 - ModifyingtheRecyclingPolicy](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_133.md): 设置回收站策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/recycle-policy设置回收站策略,已删除实例保留天数设置为5天。PUT https://gaussdb-opengauss.cn-north- - [查看回收站策略 - QueryingtheRecyclingPolicy](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_134.md): 查看回收站策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/recycle-policy查看回收站策略。查看回收站策略成功。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询回收站所有引擎实例列表 - QueryingAllDBEngineInstancesintheRecycleBin](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_135.md): 查询回收站所有引擎实例列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/recycle-instances正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [创建数据库实例(v3)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_142.md): 创建GaussDB实例。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances创建一个GaussDB实例,实例部署形态为分布式独立部署,按需付费,引擎版本为1.4,同一可用区下,3个协调节点,3个分片, - [查询数据库实例列表(v3)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_143.md): 根据指定条件查询实例列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances无。查询所有实例列表https://gaussdb-opengauss.cn-north-1.myhuaweicloud.c - [扩容数据库实例的磁盘空间](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_144.md): 扩容数据库实例的磁盘空间。该接口计划于2025-03-31下线,建议及时切换到新接口CN横向扩容/DN分片扩容/磁盘扩容 - AddingCNsandDNshardsandScalingupStorage。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。磁盘大小要求(分片数*4GB )的整数倍。所有节点 - [删除数据库实例](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_145.md): 删除数据库实例。该接口计划于2025-03-31下线,建议及时切换到新接口删除数据库实例 - DeletingaDBInstance。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。DELETE /opengauss/v3/{project_id}/instances/{instance_id}无正常2 - [CN横向扩容](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_147.md): 数据库CN横向扩容。该接口计划于2025-03-31下线,建议及时切换到新接口CN横向扩容/DN分片扩容/磁盘扩容 - AddingCNsandDNshardsandScalingupStorage。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。CN横向扩容步长1~9。CN横向扩容后最大到256。若创 - [DN分片扩容](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_148.md): 数据库DN分片扩容。该接口计划于2025-03-31下线,建议及时切换到新接口CN横向扩容/DN分片扩容/磁盘扩容 - AddingCNsandDNshardsandScalingupStorage。DN分片扩容期间会有闪断,请谨慎操作。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。DN分片扩容单次步 - [重置数据库密码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_149.md): 重置数据库密码。该接口计划于2025-03-31下线,建议及时切换到新接口重置数据库密码 - ResettingaDatabasePassword。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。POST /gaussdb/v3/{project_id}/instances/{instance_id}/ - [修改实例名称](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_150.md): 修改实例名称。该接口计划于2025-03-31下线,建议及时切换到新接口修改实例名称 - ChangingaDBInstanceName。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。PUT /gaussdb/v3/{project_id}/instances/{instance_id}/name正常 - [修改指定实例的参数](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_157.md): 修改指定实例的参数模板参数。该接口计划于2025-03-31下线,建议及时切换到新接口修改指定实例的参数 - ModifyingParametersofaSpecifiedDBInstance。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。修改的参数必须在指定数据库版本的默认参数范围内,具体可配置范围 - [获取参数模板列表(v3)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_158.md): 获取参数模板列表,包括所有数据库的默认参数模板和用户创建的参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/configurations无。参数模板列表:正常200200异常请参见状态码。请参见状态码。请参见 - [获取指定实例的参数(v3)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_159.md): 获取指定实例的参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/configurations无。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询备份列表(v3)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_162.md): 获取备份列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。该接口仅支持查询GaussDB的手动全量备份及自动全量备份。您可以在API Explorer中调试该接口。GET /v3/{project_id}/backups无。查询所有备份列表https://gaussdb-opengauss.cn-n - [查询数据库规格(v3)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_184.md): 查询数据库的规格信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/flavors无。查询数据库规格。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [身份策略授权参考](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_188.md): 云服务在IAM预置了常用授权项,称为系统策略。如果IAM系统身份策略无法满足授权要求,管理员可以根据各服务支持的授权项,创建IAM自定义身份策略来进行精细的访问控制,IAM自定义身份策略是对系统身份策略的扩展和补充。除IAM服务外,Organizations服务中的服务控制策略(Service Control Policies,以下简称S - [权限和授权项说明](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_190.md): 如果您需要对您所拥有的GaussDB进行精细的权限管理,您可以使用统一身份认证服务(Identity and Access Management,简称IAM),如果华为账号所具备的权限功能已经能满足您的要求,您可以跳过本章节,不影响您使用GaussDB服务的其他功能。通过IAM,您可以通过授权控制主体(IAM用户、用户组、IAM委托或信任 - [策略授权参考](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_191.md): 本章节介绍GaussDB策略授权场景下支持的策略授权项。策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下:权限:允许或拒绝某项操作。对应API接口:自定义策略实际调用的API接口。授权项:自定义策略中支持的 - [异常请求结果](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_193.md): 异常响应要素说明异常响应要素说明名称参数类型说明error_codeString提交任务异常时返回的错误编码。具体错误码介绍请参见错误码。error_msgString提交任务异常时返回的错误描述信息。响应样例{ "error_code": "DBS.200022", "error_msg": "实例名称已存在。" } - [状态码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_194.md): 状态码如表1所示: - [错误码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_195.md): 错误码列表: - [获取项目ID](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_196.md): 在调用接口的时候,部分URL中需要填入项目编号,所以需要获取到项目编号。有如下两种获取方式:调用API获取项目ID从控制台获取项目ID项目ID可以通过调用查询指定条件下的项目信息API获取。获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从地区和 - [ReplicationMode列表](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_198.md): ReplicationMode列表 - [数据库实例规格](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_199.md): 本章介绍GaussDB提供的实例性能规格。 - [删除数据库 - DeletingaDatabase](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_201.md): 删除指定实例的数据库。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。该接口只支持单个数据库删除,实例在创建、变更规格、冻结、异常等状态下不能执行该操作。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instance_id}/data - [DN分片缩容 - DeletingShards](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_202.md): DN分片缩容。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例需至少保留一个分片。实例状态正常。当前只支持分布式独立部署。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instance_id}/sharding删除一个DN分片。D - [备份恢复后执行数据确认 - ConfirmingDataIntegrityAfteraBackupIsRestored](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_204.md): 确认备份恢复后的数据是否正常,仅需要在恢复到当前实例后调用。数据确认后会删除本次恢复时间点后的归档日志,并重新开启日志归档。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_ - [修改实例别名 - ChangingtheAliasofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_207.md): 修改实例别名。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/alias无。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [创建慢日志下载信息 - CreatingaSlowQueryLogDownloadTask](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_208.md): 创建慢日志下载信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/slow-log/download首次下发请求,响应为空列表。正常202202异常请参见状态码。 - [查询慢日志下载信息 - QueryingDownloadedSlowQueryLogInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_209.md): 查询慢日志下载信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/slow-log/download正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [删除实例标签 - DeletingTagsofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_210.md): 删除实例标签。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instance_id}/tag正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [获取企业项目剩余配额 - QueryingtheRemainingQuotaofEnterpriseProjects](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_211.md): 获取企业项目剩余配额。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/enterprise-projects/remaining-quotas获取企业项目剩余配额。正常200200异常请参见状态码。请参见状态码。请 - [查询实例列表指标 - QueryingMetricsofAllDBInstances](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_212.md): 查询实例列表指标。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/metric-data查询实例列表指标。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询实例指标数据 - QueryingMetricsofaSpecificDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_213.md): 查询实例指标数据。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/metric-data正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询指标分组的指标名称 - QueryingMetricsofaMetricGroup](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_214.md): 查询指标分组的指标名称。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/metric-name查询指标分组的指标名称。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询数据库表列表 - QueryingDatabaseTables](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_217.md): 查询指定实例的数据库表列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/tables正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询指定schema中表占用空间大小列表 - QueryingtheStorageUsageofTablesinaSpecifiedSchema](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_219.md): 查询指定schema中表占用空间大小列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.1/{project_id}/instances/{instance_id}/table-volume查询指定schema中表占用空间大小列表。正常 - [查询委托权限详情 - QueryingAgencyPermissionDetails](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_221.md): 查询委托权限详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/agency/{agency_name}查询委托权限详情。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [更新委托权限策略 - UpdatinganAgencyPermissionPolicy](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_222.md): 更新委托权限策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/agency/{agency_name}/policy无。无。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [修改实例安全组 - ChangingtheSecurityGroupofanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_225.md): 修改实例安全组。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。容灾场景下,修改安全组时需要确保主实例与容灾实例连接的端口已在安全组的入方向规则中放开。您可以在API Explorer中调试该接口。账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的 - [绑定/解绑NAT网关 - BindingorUnbindingaNATGateway](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_226.md): 实例下的节点绑定/解绑NAT网关。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。为确保数据库可正常访问,请确认数据库所使用的安全组开通了数据库端口的访问权限,假设数据库端口是8000,那么需要确保安全组的入方向规则已放开访问者网络的IP和8000端口。数据库端口可在实例基本信息页面的网络信息模块获取。 - [查询已绑定的NAT网关列表 - QueryingNATGatewaysBoundtoanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_227.md): 查询实例已绑定的NAT网关列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。如果使用角色与策略授权,具体权限要求请参见权限和授权项。如果使用身 - [按需转包周期 - ChangingtheBillingModefromPay-per-UsetoYearly/Monthly](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_228.md): 将按需计费的实例转为包周期计费。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。如果使用角色与策略授权,具体权限要求请参见权限和授权项。如果使用身 - [授权备份文件下载 - AuthorizingUserstoDownloadBackups](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_272.md): 授权租户使用OBS Browser+方式下载备份文件,支持实例级、表级的全量备份及差量备份。该方式仅支持下载使用OBS备份介质进行的备份文件。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/backups/{bac - [查询备份扩展配置 - QueryingExtendedBackupPolicies](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_275.md): 查询备份扩展配置信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/backups/config备份流控76,差量预取页面个数65,启用备机备份,关闭备份压缩,备份方 - [开启M兼容端口 - EnablingMCompatibilityPort](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_278.md): 开启GaussDB M兼容端口。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。开启M兼容端口的实例需存在templatem模板数据库,如果不存在,则会自动创建templatem模板数据库。副本一致性协议为Paxos的实例,暂不支持创建templatem模板 - [修改/关闭M兼容端口 - ChangingorDisablingMCompatibilityPort](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_279.md): 修改或关闭GaussDB M兼容端口功能。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。修改或关闭M兼容端口的实例需存在templatem模板数据库,如果不存在,则会自动创建templatem模板数据库。副本一致性协议为Paxos的实例,暂不支持创建tem - [停止备份 - StoppingaBackup](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_280.md): 停止进行中的备份,包括全备和差备。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/backups/stop停止备份。停止备份成功。正常202202异常请参见状态码。请 - [查询协调节点列表 - QueryingCNs](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_282.md): 查询协调节点列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/coordinators查询协调节点列表。查询协调节点列表成功。正常200200异常请参见状态码。请参 - [查询磁盘自动扩容策略 - QueryingStorageAutoscalingPoliciesofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_283.md): 查询磁盘自动扩容策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/auto-enlarge-policy查询磁盘自动扩容策略。查询磁盘自动扩容策略成功。正常2002 - [实例状态统计 - CollectingInstanceStatusStatistics](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_284.md): 实例状态统计。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/instances-statistics实例状态统计。实例状态统计成功。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询实例可升级版本 - QueryingVersionsThataDBInstanceCanBeUpgradedTo](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_286.md): 查询实例可升级版本。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances/{instance_id}/db-upgrade/candidate-versions查询实例可升级版本。实例在滚动升级中时 - [实例内核版本升级 - UpgradingtheKernelVersionofaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_287.md): GaussDB实例版本升级。包括就地升级,灰度升级,热补丁升级三种升级方式。就地升级就地升级需要停止业务进行,会一次性升级集群中所有节点。就地升级需要暂停业务30分钟来升级。就地升级需要停止业务进行,会一次性升级集群中所有节点。就地升级需要暂停业务30分钟来升级。灰度升级每个主DN或者CN组件升级就有一次10秒业务中断。升级过程均是先管理 - [创建SQL限流任务](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_290.md): 根据具体范围和类型,进行限流任务的创建。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。分布式实例不支持SQLID类型和自治限流任务。不支持对系统级别用户(例如root等)进行SQL限流。每个实例最多支持1000条限流任务。对于关键词限流任务,一个关键词中包 - [删除SQL限流任务](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_291.md): 删除限流任务。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。不支持批量删除SQL限流任务。DELETE /v3/{project_id}/instances/{instance_id}/limit-task/{task_id}无。无。正常200200异常请 - [查询SQL限流任务列表](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_292.md): 根据指定条件查询限流任务列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/limit-task-list正常200200异常请参见状态码。请参见状态码。请参见错误码 - [查询SQL模板列表 - QueryingSQLTemplates](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_293.md): 查询节点下的SQL模板列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/list-node-limit-sql-model正常200200异常请参见状态码。请参见状 - [查询慢SQL节点信息 - QueryingNodesWhereThereAreSlowSQLStatements](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_296.md): 根据实例ID查询慢SQL节点信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/slow-sql-execute-no - [查询慢SQL列表 - QueryingSlowSQLStatements](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_297.md): 根据节点信息,查询慢SQL列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/slow-sql-list查询慢SQL列 - [查询慢SQL详情 - QueryingDetailsofaSlowSQLStatement](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_298.md): 根据归一化SQLID,查询该SQL模板详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅支持包含有CN或DN(主、备)组件的节点。POST /v3/{project_id}/instances/{instance_id}/slow-sql-detai - [查询SQL PATCH - QueryingSQLPatchInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_301.md): 查询SQL PATCH信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/sql-patch查询SQL PATCH。查询SQL PATCH信息成功。正常200200 - [查询WDR快照开关状态 - QueryingWDRSnapshotStatus](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_308.md): 查询WDR快照开关状态。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/wdr-snapshot/status查询WDR快照状态。查询WDR快照开关状态成功。正常2 - [打开或者关闭WDR快照开关 - EnablingorDisablingWDRSnapshot](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_309.md): 打开或者关闭WDR快照开关。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/wdr-snapshot/status无。无。正常200200异常请参见状态码。请参见状 - [查询WDR快照报告采集结果 - QueryingCollectionResultsforWDRSnapshotReports](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_310.md): 查询WDR快照报告采集结果。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/wdr-snapshots查询WDR快照列表。正常200200异常请参见状态码。请参见状态码 - [生成WDR快照 - GeneratingaWDRSnapshot](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_311.md): 下发WDR快照命令,生成WDR快照。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。两次快照之间不能有节点重启。两次快照之间不能有主备切换。两次快照之间不能有删除数据库操作。数据库实例不能为只读状态。数据库实例不能为灾备实例。您可以在API Explorer中调试该接口。POST /v3/{proje - [采集WDR快照报告 - CollectingaWDRSnapshotReport](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_312.md): 采集WDR快照报告。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/wdr-snapshots/collect使用时间区间方式,采集组件级的WDR快照报告。POST - [查询SQL执行计划绑定情况 - QueryingtheBindingStatusofaSQLExecutionPlan](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_314.md): 查询SQL执行计划绑定情况。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/sql/{node_id}/plans/que - [查询企业项目列表 - QueryingEnterpriseProjects](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_319.md): 查询企业项目列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例资源类型和操作系统需支持pidstat命令。您可以在API Explorer中调试该接口。GET /v3/{project_id}/enterprise-projects正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [一主两备切换一主一备一日志 - Changinga1Primary+2StandbyInstancetoa1Primary+1Standby+1LogInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_320.md): 分布式实例一主两备形态切换到一主一备一日志形态。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。当前只支持分布式独立部署一主两备形态。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/switch-logger-re - [一主一备一日志切换一主两备 - Changinga1Primary+1Standby+1LogInstancetoa1Primary+2StandbyInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_321.md): 分布式实例一主一备一日志形态切换到一主两备形态。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。当前只支持分布式独立部署一主一备一日志切换至一主两备形态。POST /v3/{project_id}/instances/{instance_id}/switch - [打开或者关闭ASP开关 - EnablingorDisablingASPGeneration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_323.md): 打开或者关闭ASP开关。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/asp/status无。无。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [采集ASP报告 - CollectingASPReports](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_324.md): 采集ASP报告。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/asp/collect采集ASP报告结果。正常202202异常请参见状态码。请参见状态码。请参见错误 - [查询ASP开关状态 - QueryingASPGenerationStatus](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_325.md): 查询ASP开关状态。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/asp/status查询ASP开关状态。查询ASP开关状态结果。正常200200异常请参见状态码。 - [查询ASP采集结果 - QueryingASPCollectionResults](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_326.md): 查询ASP采集结果。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/asp查询ASP采集结果列表。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询数据库实例列表 - QueryingDBInstances](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_328.md): 查询数据库实例列表/查询实例详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.3/{project_id}/instances根据指定条件查询实例列表。GET https://gaussdb-opengauss.cn-north-1.my - [查询批量实例可升级的版本和升级类型 - QueryingUpgradeTypesandVersionsThat InstancesCanBeUpgradedtoinBatches](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_329.md): 查询批量实例可升级的版本和升级类型。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.1/{project_id}/instances/db-upgrade/candidate-versions查询批量实例可升级的版本和升级类型。查询批量实例 - [批量实例内核版本升级 - UpgradingKernelVersionsofInstancesinBatches](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_330.md): GaussDB批量实例版本升级。包括灰度升级,就地升级、热补丁升级三种升级方式。 批量实例可升级版本大于当前所有实例的最小引擎版本,且选择的所有实例,其升级方式和操作方式要保持一致。若批量实例升级方式是灰度升级,默认升级所有AZ和分片。就地升级:就地升级需要停止业务进行,会一次性升级集群中所有节点。就地升级需要暂停业务30分钟来升级。灰度 - [查询支持的插件列表 - QueryingtheListofSupportedPlug-ins](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_348.md): 查询支持的插件列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/kernel-plugins正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询实例已安装的插件列表 - QueryingtheListofPlug-insInstalledonanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_349.md): 查询实例已安装的插件列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/kernel-plugins正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [配置插件License - ConfiguringthePlug-inLicense](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_350.md): 配置插件License。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/kernel-plugin-license配置插件的License许可文件内容信息。正常2002 - [插件安装 - InstallingaPlug-in](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_351.md): 安装数据库插件。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。已在云商店购买License,并联系第三方厂商获取插件包的下载地址以及sha256信息。联系信息参见“云商店 >服务支持 >服务信息”模块。安装插件前需要先将插件包上传至最终租户OBS中。插件包 - [查询实例插件拓展功能 - QueryingPlug-inExtensionsofanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_352.md): 查询实例插件拓展功能信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/plugin-extensions正常200200异常请参见状态码。请参见状态码。请参见错误码 - [配置插件拓展功能 - ConfiguringPlug-inExtensions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_353.md): 配置插件拓展功能,指定数据库进行开启或者关闭。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/config-plugin-extensions正常200200异常请参 - [设置自动备份策略 - ConfiguringanAutomatedBackupPolicy](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_354.md): 设置自动备份策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3.1/{project_id}/instances/{instance_id}/backups/policy无。设置GaussDB实例备份策略,备份文件保存时长7天,备份时间段为 - [变更实例规格 - ChangingtheCPUandMemorySpecificationsofanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_355.md): 通过调用该接口提升实例的CPU和内存。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。新规格和旧规格的操作系统架构必须相同。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/flavor变更按需实例的规格,变更为16U - [创建数据库实例(v5) - CreatingaDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_356.md): 该接口由“创建数据库实例(v3.1)”接口派生而来,接口请求头新增了“Subscription-Agency”字段,该字段用于使用共享密钥创建GaussDB包周期实例的场景。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。当前接口仅支持IAM新平面鉴权。使用 - [查询只读节点信息 - QueryingReadReplicaInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_357.md): 查询实例的只读节点列表,以及实例可支持的最大只读节点数。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/readonly-nodes正常200200异常请参见状态码。请 - [创建只读节点 - CreatingaReadReplica](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_358.md): 创建只读节点。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/readonly-nodes正常202202异常请参见状态码。请参见状态码。请参见错误码。 - [删除只读节点 - DeletingaReadReplica](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_359.md): 删除只读节点。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instance_id}/readonly-nodes正常202202异常请参见状态码。请参见状态码。请参见错误码。 - [批量设置自动备份策略 - ConfiguringtheAutomatedBackupPolicyforInstancesinBatches](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_382.md): 批量设置自动备份策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/backups/policy批量设置GaussDB实例备份策略,备份文件保存时长7天,备份时间段为19:00-20:00。PUT https:// - [修改SQL限流任务](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_386.md): 根据具体范围和类型,进行限流任务的修改。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/limit-task/{task_id}修改限流类型是SQL_ID的限流任务。h - [查询SQL限流任务详情](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_387.md): 根据指定条件查询限流任务详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/limit-task/{task_id}限流类型是SQL_ID的限流任务。{ "t - [同步SQL限流任务 - SynchronizingSQLThrottlingTasks](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_388.md): 从内核侧同步实例的SQL限流任务到管控侧。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/sync-limit-task正常200200异常请参见状态码。请参见状态码 - [查询高级特性 - QueryingAdvancedFeatures](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_390.md): 查询当前实例高级特性列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/advance-features查询当前实例的高级特性列表,以及每个特性是否开启。GET ht - [修改高级特性 - EnablingorDisablingAdvancedFeatures](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_391.md): 修改高级特性。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/advance-features修改高级特性。POST https://gaussdb-opengaus - [查询数据库规格(v3.1)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_394.md): 查询数据库的规格信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/flavors无。查询集中式版数据库规格GET https://gaussdb-opengauss.cn-north-1.myhuaweicl - [查询引擎列表](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_395.md): 查询引擎列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/datastores无。查询引擎列表。查询引擎列表成功。{ "datastores": [ { "supported_versions - [创建数据库实例(v3.1)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_398.md): 创建GaussDB实例。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.1/{project_id}/instances创建一个GaussDB实例,实例部署形态为分布式独立部署,包周期付费(1年),引擎版本为2.7,三个不同可用区下,3个协 - [查询数据库实例列表(v3.2)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_399.md): 查询数据库实例列表/查询实例详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.2/{project_id}/instances无。根据指定条件查询实例列表。GET https://gaussdb-opengauss.cn-north-1. - [获取参数模板列表(v3.1)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_400.md): 获取参数模板列表,包括所有数据库的默认参数模板和用户创建的参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/configurations无。获取参数模板列表。获取参数模板列表成功。正常200200异常请参 - [获取指定实例的参数(v3.1)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_401.md): 获取指定实例的参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances/{instance_id}/configurations获取指定实例的参数。获取指定实例的参数成功。{ "cre - [查询参数模板详情](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_403.md): 查询参数模板详情,根据参数模板ID获取指定参数模板详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/configurations/{config_id}查询参数模板详情。查询参数模板详情成功。正常200200异常 - [查询实例可升级版本](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_405.md): 查询实例可升级版本。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/db-upgrade/candidate-versions无。查询实例可升级版本。实例在滚动升级中时 - [查询批量实例可升级的版本和升级类型](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_407.md): 查询批量实例可升级的版本和升级类型。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/db-upgrade/candidate-versions查询批量实例可升级的版本和升级类型。查询批量实例可升 - [查询备份列表(v3.1)](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_409.md): 获取备份列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。该接口仅支持查询GaussDB的手动全量备份及自动全量备份。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/backups无。查询所有备份列表GET https://gaussdb-opengaus - [查询可用于备份恢复的实例列表](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_411.md): 查询可用于备份恢复的实例列表,实例信息要符合备份条件。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。restore_time和backup_id参数不能同时为空。您可以在API Explorer中调试该接口。GET /v3/{project_id}/restorable-instances无。查询可用 - [根据时间点或者备份文件查询原实例信息](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_412.md): 根据时间点或者备份文件查询原实例信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。restore_time和backup_id参数不能同时为空。backup_id非空时,按照backup_id进行查询。backup_id为空时,按照restore_time进行查询。restore_time和back - [查询回收站所有引擎实例列表](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_417.md): 查询回收站所有引擎实例列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/recycle-instances无。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [删除数据库SCHEMA - DeletingaSchema](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_418.md): 在指定实例中,删除数据库SCHEMA。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在创建、变更规格、冻结、异常等状态下不能执行该操作。该接口只支持删除单个SCHEMA。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instan - [创建数据库角色 - CreatingaDatabaseRole](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_419.md): 在指定实例中创建数据库角色。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在创建、变更规格、冻结、异常等状态下不能执行该操作。该接口只支持创建单个角色。您可以在API Explorer中调试该接口。POST /v3.1/{project_id}/instances/{instance_id}/db - [查询数据库角色列表 - QueryingDatabaseRoles](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_421.md): 指定实例中查询数据库角色列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances/{instance_id}/db-role查询数据库角色列表。查询数据库角色列表成功。正常200200异常请参见状 - [授权数据库角色 - ConfiguringPermissionsofaDatabaseRole](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_422.md): 在指定实例的数据库中, 设置角色的权限。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。实例在创建、变更规格、冻结、异常等状态下不能执行该操作。创建的只读用户对public模式默认具有create和usage权限。该接口只支持单个角色授权。该接口不支持M兼容模式授权。您可以在API Explorer中调 - [查询操作记录 - QueryingDROperationRecords](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_423.md): 查询容灾操作记录。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/disaster-recovery/records正常200200异常请参见状态码。请参见状态码。请参 - [查询SQL堆栈信息 - QueryingSQLStackInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_426.md): 查询等待事件的SQL堆栈信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅支持包含有CN或DN(主、备)组件的节点。GET /v3/{project_id}/instances/{instance_id}/slow-sql/optimization/ - [查询SQL执行计划信息 - QueryingSQLExecutionPlanInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_427.md): 查询等待事件的SQL执行计划信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/slow-sql/optimization/plan正常200200异常请参见状态码。 - [查询插件列表 - QueryingAdd-ons](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_430.md): 查询支持的插件信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/plugins?limit={limit}&offset={offset}&plugin_name= - [创建SQL限流任务(v3.1) - CreatingaSQLThrottlingTask](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_444.md): 根据具体范围和类型,进行限流任务的创建。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。分布式版实例不支持自治限流任务。不支持对系统级别用户(例如root等)进行SQL限流。每个实例最多支持1000条限流任务。对于关键词限流任务,一个关键词中包含英文逗号视作 - [修改SQL限流任务(v3.1) - ModifyingaSQLThrottlingTask](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_445.md): 根据新的条件进行限流任务的更新。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3.1/{project_id}/instances/{instance_id}/limit-task/{task_id}修改限流类型是SQL_ID的限流任务。PUT - [删除SQL限流任务(v3.1) - DeletingaSQLThrottlingTask](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_446.md): 根据task_id进行限流任务的删除。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3.1/{project_id}/instances/{instance_id}/limit-task/{task_id}无。删除限流任务。无。正常202 - [查询SQL限流任务详情(v3.1) - QueryingSQLThrottlingTaskDetails](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_447.md): 查询限流任务详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances/{instance_id}/limit-task/{task_id}查询限流任务详情。正常200200异常请参见状态码。请参见 - [根据指定条件查询SQL限流任务列表(v3.1) - QueryingSQLThrottlingTasksBasedonSpecifiedCriteria](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_448.md): 根据指定条件查询限流任务列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3.1/{project_id}/instances/{instance_id}/limit-task-list根据指定条件查询限流任务列表。正常200200异常请参 - [查询全局慢SQL详情 - QueryingDetailsofSlowSQLStatementsintheGlobalTable](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_449.md): 根据唯一SQLID,查询指定组件的慢SQL详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅支持包含有CN或DN(主、备)组件的节点。POST /v3/{project_id}/instances/{instance_id}/global-slow- - [查询实例引擎版本分布 - QueryingInstancesbyEngineVersion](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_450.md): 查询实例引擎版本分布。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/datastore/instances查询实例引擎版本分布。GET https://gaussdb-opengauss.cn-north-4.my - [批量实例内核版本定时升级 - UpgradingKernelVersionofInstancesasScheduledinBatches](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_451.md): GaussDB批量实例版本定时升级。当前只允许热补丁升级,且仅支持升级自动提交,中间无业务中断,仅用于修复产品BUG。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/db-upgrade/sch - [查询定时任务列表 - QueryingScheduledTasks](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_452.md): 获取任务中心的定时任务列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。最多查询最近一个月的定时任务列表。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/schedule-tasks查询任务状态为“完成”的任务列表GET https://g - [取消定时任务 - CancelingaScheduledTask](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_453.md): 取消定时任务。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/schedule-task/{task_id}/cancel无。取消任务记录。无正常200200异常请参见状态码。请参见状态码。请参见 - [删除定时任务 - DeletingaScheduledTaskRecord](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_454.md): 删除定时任务。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/schedule-task/{task_id}无。删除任务记录。无正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询表定义信息 - QueryingTableDefinitionInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_460.md): 查询表定义信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/table-definition查询表定义信息。正常200200异常请参见状态码。请参见状态码。请参见 - [查询数据盘空间概况 - QueryingDataDiskSpaceUsage](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_461.md): 查询数据盘空间概况。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/database-volume-summary查询数据盘空间概况。正常200200异常请参见状态码 - [导出表信息 - ExportingTableInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_462.md): 表信息导出。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/table-volume/export无。无。正常200200异常请参见状态码。请参见状态码。请参见错误 - [查询实时会话概览 - QueryingReal-TimeSessionOverview](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_463.md): 查询数据库实例节点的实时会话概览信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/session-overview正常 - [查询实时会话统计 - QueryingReal-TimeSessionStatistics](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_464.md): 查询数据库实例节点的实时会话统计信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/session-statistics - [查询Top SQL列表 - QueryingTopSQLStatements](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_491.md): 根据实例ID查询Top SQL信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/top-sql-list查询Top - [查询指定表的表定义信息列表 - QueryingtheDefinitionInformationofaSpecifiedTable](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_492.md): 查询指定表的表定义信息列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/list-table-definition查询指定表的表定义信息列表。正常200200异常 - [识别SQL文本中的表信息 - IdentifyingTableInformationinSQLText](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_493.md): 识别SQL文本中的表信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/parse/schema-table识别SQL文本中的表信息。正常200200异常请参见状 - [保存实例参数为参数模板 - SavingInstanceParametersAsaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_500.md): 保存实例参数为参数模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/configurations/{config_id}/save保存参数模板成功。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询客户端接入认证配置 - QueryingaClientAccessAuthenticationConfiguration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_508.md): 查询实例的客户端接入认证配置。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/hba-info查询实例的客户端接入认证配置。查询客户端接入认证配置成功。正常200200 - [新增客户端接入认证配置 - AddingaClientAccessAuthenticationConfiguration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_509.md): 新增实例的客户端接入认证配置。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。客户端接入认证暂时不支持容灾关系内同步,如果实例已搭建容灾关系,建议在对端也进行相同的配置操作。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_ - [删除客户端接入认证配置 - DeletingaClientAccessAuthenticationConfiguration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_510.md): 删除实例的客户端接入认证配置。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。客户端接入认证暂时不支持容灾关系内同步,如果实例已搭建容灾关系,建议在对端也进行相同的配置操作。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instanc - [修改客户端接入认证配置 - ModifyingaClientAccessAuthenticationConfiguration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_511.md): 修改实例的客户端接入认证配置。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。客户端接入认证暂时不支持容灾关系内同步,如果实例已搭建容灾关系,建议在对端也进行相同的配置操作。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_i - [查询客户端接入认证配置修改历史 - QueryingtheModificationHistoryofaClientAccessAuthenticationConfiguration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_512.md): 查询实例的客户端接入认证配置修改历史。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/hba-info/history查询客户端接入认证配置修改历史。查询客户端客户端接 - [恢复客户端接入认证配置 - RestoringaClientAccessAuthenticationConfiguration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_513.md): 根据修改历史恢复客户端接入认证配置。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。客户端接入认证暂时不支持容灾关系内同步,如果实例已搭建容灾关系,建议在对端也进行相同的配置操作。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instanc - [实例告警信息汇总统计 - CollectingInstanceAlarmStatistics](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_521.md): 实例告警信息汇总统计。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/alarm-statistics告警统计。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [修改参数模板 - ModifyingParametersinaParameterTemplate](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_522.md): 修改指定参数模板中的参数。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/configurations/{config_id}修改实例的参数failed_login_attempts的值为4。PUT https:// - [查看LTS日志配置信息 - ViewingLTSLogConfigurations](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_524.md): 查看LTS日志配置信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/logs/lts-config查看LTS日志配置信息。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [关联LTS日志流 - AssociatinganInstancewithanLTSLogStream](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_525.md): 关联LTS日志流。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/logs/lts-config关联LTS日志流。正常202202异常请参见状态码。请参见状态码。请参见错误码。 - [解除关联LTS日志流 - DisassociatinganInstancefromanLTSLogStream](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_526.md): 解除关联LTS日志流。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/logs/lts-config解除关联LTS日志流。正常202202异常请参见状态码。请参见状态码。请参见错误码。 - [查询实例全量SQL聚合统计列表 - QueryingFullSQLStatisticsofanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_529.md): 查询GaussDB数据库实例全量SQL聚合统计列表,主要统计各唯一SQL ID下的SQL记录总数量以及相关时间指标的平均值。支持增强型条件过滤, 如可以对SQL文本(query字段)进行多条件合并查询,对total_sql_time、sql_count字段进行大于、小于、区间范围等条件的过滤。调用接口前,您需要了解API 认证鉴权。调用接 - [查询事务列表 - QueryingTransactions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_530.md): 查询数据库实例节点的实时事务列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/transactions/list正常 - [查询自动中止事务配置 - QueryingtheAutomaticTransactionTerminationConfiguration](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_532.md): 获取实例自动中止事务配置。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/transactions/get-auto-kill-config获取实例自动中止事务配置正 - [查询告警列表 - QueryingAlarms](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_534.md): 查询告警列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/alarm-history-record查询告警列表。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [开启全量SQL或修改默认配置 - EnablingSQLExplorerorModifyingDefaultConfigurations](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_538.md): 开启全量SQL功能。使实例Agent侧开启内核侧全量SQL能力,持续化采集GaussDB数据库实例上的执行SQL语句,定时批量持久化存储于LTS云服务对应日志流中。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。管控平台已对接凭证托管服务(CCMS)。管控平 - [关闭全量SQL - DisablingSQLExplorer](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_539.md): 关闭全量SQL功能。关闭后,实例Agent侧将停止内核侧全量SQL语句记录的实时采集。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/full-sqls/stop关闭 - [查询全量SQL开关记录 - QueryingSQLExplorerStatusRecords](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_540.md): 查询全量SQL开关记录列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/full-sql-switches查询全量SQL开关记录列表。正常200200异常请参见状态 - [查询全量单条SQL列表 - QueryingFullDatabySQLStatement](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_541.md): 查询全量单条SQL记录列表。支持增强型条件过滤, 如可以对SQL文本(query字段)进行多条件合并查询,对db_time字段进行大于、小于、区间范围等条件的过滤。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/i - [查询单条SQL详情 - QueryingDetailsofaSingleSQLStatement](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_542.md): 查询单条SQL详情。对于分布式版实例,可查询对应SQL的完整执行记录,包含CN和DN上SQL语句执行历史。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/full-sq - [查询SQL链路信息 - QueryingSQLLinkInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_543.md): 主要用于查询SQL某次执行(对应归一化SQL ID和唯一SQL ID传值)过程中的全部链路信息,包含各个阶段的多维度耗时统计。对于分布式版实例,可查询对应SQL的完整执行链路,包含CN和DN上SQL语句的耗时分析。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接 - [查询分片磁盘信息 - QueryingShardStorageInformation](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_544.md): 查询分片磁盘信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/shard-volume-usage查询分片磁盘信息。查询分片磁盘信息。正常200200异常请参见状态 - [实例内核版本升级](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_545.md): GaussDB实例版本升级。包括就地升级,灰度升级,热补丁升级三种升级方式。就地升级就地升级需要停止业务进行,会一次性升级集群中所有节点。就地升级需要暂停业务30分钟来升级。就地升级需要停止业务进行,会一次性升级集群中所有节点。就地升级需要暂停业务30分钟来升级。灰度升级每个主DN或者CN组件升级就有一次10秒业务中断。升级过程均是先管理 - [查询扩容优化参数设置模板 - QueryingtheParameterSettingTemplateforScale-outOptimization](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_546.md): 查询扩容优化参数设置模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/expansion-parameters正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [修改扩容优化参数 - ModifyingParametersforScale-outOptimization](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_547.md): 修改扩容优化参数。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅分布式独立部署形态的实例支持调用该接口。PUT /v3/{project_id}/instances/{instance_id}/expansion-parameters正常202202异常 - [查询重分布参数设置模板 - QueryingtheParameterSettingTemplateforDataRedistribution](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_548.md): 查询重分布参数设置模板。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/redistribution-parameters正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [修改重分布参数 - ModifyingParametersforDataRedistribution](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_549.md): 修改重分布参数。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/redistribution-parameters正常202202异常请参见状态码。请参见状态码。请参见 - [修改指定实例端口号 - ChangingthePortNumberofaSpecifiedDBInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_550.md): 修改指定实例端口号。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/port正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [协调节点缩容 - DeletingCoordinatorNodes](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_551.md): 协调节点缩容。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。CN节点缩容步长1~10。CN节点至少保留1个。所有CN节点状态正常。实例状态正常。首CN节点会随机替换为其他CN节点进行缩容。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/ - [查询数据库引擎的版本 - QueryingDBEngineVersions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_553.md): 查询当前支持的引擎版本。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.2/{project_id}/datastore/versions查询数据库引擎的版本。查询数据库引擎的版本成功。正常200200异常请参见状态码。请参见状态码。请参见错 - [查询关键视图下发节点信息 - QueryingNodesforDeliveringKeyViews](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_554.md): 获取可以下发查询关键视图的节点信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/key-view-execute-n - [查询KMS密钥列表 - QueryingKMSKeys](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_561.md): 查询密钥列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅支持数据库版本大于等于V2.0-3.300的实例。GET /v3/{project_id}/kms/list-keys/{kms_project_name}查询当前可使用的kms密钥列表。正常2 - [查询KMS密钥详情 - QueryingDetailsAboutaKMSKey](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_562.md): 查询KMS密钥详情。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。仅支持数据库版本大于等于V2.0-3.300的实例。GET /v3/{project_id}/kms/{kms_key_id}/describe-key/{kms_project_name} - [修改磁盘自动扩容策略 - ModifyingaStorageAutoscalingPolicy](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_563.md): 修改磁盘自动扩容策略。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。PUT /v3/{project_id}/instances/{instance_id}/auto-enlarge-policy无。修改磁盘自动扩容策略。修改磁盘自动扩容策略成功。正常20 - [查询数据库占用空间大小列表 - QueryingDatabaseStorageUsage](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_564.md): 查询数据库占用空间大小列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances/{instance_id}/database-volume查询数据库占用空间大小列表。正常200200异常请参见状态 - [查询实例中TOP20 表占用空间大小列表 - QueryingtheTop20TablesbyStorageUsageinanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_565.md): 查询实例中TOP20 表占用空间大小列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances/{instance_id}/top-table-volume查询实例中TOP20 表占用空间大小列表 - [查询实时会话等待事件统计 - QueryingWaitingEventStatisticsofReal-TimeSessions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_566.md): 查询数据库实例实时会话出现频次最高的等待事件统计信息。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/session/st - [查询实时会话Top SQL 统计 - QueryingTopSQLStatisticsofReal-TimeSessions](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_567.md): 查询实时会话Top SQL统计。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/session/statistic/top - [删除容灾任务记录 - DeletingDRTaskRecords](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_568.md): 当灾备任务结束后或者创建失败时,可以通过接口删除已经结束或者创建失败的灾备任务记录。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/disaster/record/delete无。正常200 - [查询会话内存上下文列表 - QueryingSessionMemoryContexts](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_569.md): 查询数据库实例节点的会话内存上下文列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。GET /v3/{project_id}/instances/{instance_id}/session/memory-co - [导出慢SQL列表 - ExportingSlowSQLStatements](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_570.md): 导出慢SQL列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/slow-sql-list/export参数说明名称是 - [导出实例全量SQL聚合统计列表 - ExportingFullSQLStatisticsofanInstance](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_572.md): 导出实例全量SQL聚合统计列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/list-full-sql-statistics/export无。无。正常200200 - [导出全量单条SQL列表 - ExportingFullDatabySQLStatement](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_573.md): 导出全量单条SQL列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/list-full-sqls/export无。无。正常200200异常请参见状态码。请参见状态 - [导出Top SQL列表 - ExportingTopSQLStatements](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_574.md): 导出Top SQL列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。仅支持包含有CN或DN(主、备)组件的节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/{instance_id}/top-sql-list/export无。无。正 - [批量删除实例标签 - DeletingInstanceTagsinBatches](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_575.md): 批量删除实例标签。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。DELETE /v3/{project_id}/instances/{instance_id}/tags无。正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [导出实例列表 - ExportingtheInstanceList](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_576.md): 导出实例列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。POST /v3/{project_id}/instances/export正常200200异常请参见状态码。请参见状态码。请参见错误码。 - [查询指定数据库中schema占用空间大小列表 - QueryingtheStorageUsageofSchemasinaSpecifiedDatabase](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_577.md): 查询指定数据库中schema占用空间大小列表。调用接口前,您需要了解API 认证鉴权。调用接口前,您需要提前获取到地区和终端节点。您可以在API Explorer中调试该接口。GET /v3.1/{project_id}/instances/{instance_id}/schema-volume查询指定数据库中schema占用空间大小列 ## SDK参考 - [SDK概述](https://support.huaweicloud.com/sdkreference-gaussdb/gaussdb_sdk_0001.md): 本文介绍了GaussDB提供的SDK语言版本,列举了最新版本SDK的获取地址。API Explorer能根据需要动态生成SDK代码功能,降低您使用SDK的难度,推荐使用。在开始使用之前,请确保您安装的是最新版本的SDK。使用过时的版本可能会导致兼容性问题或无法使用最新功能。您可以在SDK中心查询版本信息。表1提供了GaussDB支持的SD ## CLI参考 - [CLI命令参考](https://support.huaweicloud.com/clir-gaussdb/GaussDBforopenGauss-cli.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [如何使用CLI](https://support.huaweicloud.com/clir-gaussdb/gaussdb-cli-0001.md): 华为云命令行工具服务(Koo Command Line Interface,KooCLI,原名HCloud CLI)是为发布在API Explorer上的云服务API提供的命令行管理工具。您可以通过此工具调用API Explorer中GaussDB开放的API,管理和使用您的GaussDB资源。关于KooCLI的详细信息,请参见什么是Ko ## 场景代码示例 - [](https://support.huaweicloud.com/scenecode-gaussdb/https://codelabs.developer.huaweicloud.com/codelabs/home?pageno=1&product_group=%E6%95%B0%E6%8D%AE%E5%BA%93&productshorts=GaussDBforopenGauss): 场景代码示例 ## 常见问题 - [应用程序是否需要支持自动重连GaussDB数据库](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_0382.md): 建议您的应用程序支持自动重连数据库,当数据库重启后,无需人工介入,应用会自动恢复,提供更高的可用性。同时建议您的应用程序采用长连接方式连接数据库,以降低资源消耗,提高性能。 - [使用GaussDB要注意些什么](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_356.md): 实例的操作系统,对用户都不可见,这意味着,只允许用户应用程序访问数据库对应的IP地址和端口。对象存储服务(Object Storage Service,简称OBS)上的备份文件以及云数据库 GaussDB服务使用的弹性云服务器(Elastic Cloud Server,简称ECS),都对用户不可见,它们只对云数据库GaussDB服务的后台 - [什么是GaussDB实例可用性](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_357.md): 云数据库GaussDB实例可用性的计算公式:实例可用性=(1–故障时间/服务总时间)×100% - [GaussDB实例是否会受其他用户实例的影响](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_358.md): 云数据库GaussDB实例不会受其他用户实例影响,因为每个用户的云数据库GaussDB实例与其他用户的实例是相互独立的,并且有资源隔离,互不影响。 - [为何使用了GaussDB后网站登录较慢](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_359.md): 推荐您做如下两个处理:通过云数据库GaussDB服务的管理控制台查看云数据库GaussDB实例的性能情况。与应用程序有很大关系,使用命令查看当前数据库连接状态,比较本地数据库和云数据库GaussDB的差异。 - [多台弹性云服务器是否可以连接同一个GaussDB数据库](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_360.md): 在数据库的压力承载范围内,多台弹性云服务器是可以连接同一个云数据库GaussDB来支撑业务的。 - [购买GaussDB实例后可以对磁盘进行加密吗](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_361.md): 购买GaussDB实例时可以设置磁盘加密,详情请参见购买实例。实例创建成功后,不可修改磁盘加密状态,且无法更改密钥。对于已经创建成功的实例,您可以通过如下方式设置磁盘加密。实例的备份恢复到新实例,对新实例设置磁盘加密。使用数据复制服务(Data Replication Service,简称DRS)迁移功能将实例数据迁移到其它加密后的实例。 - [GaussDB购买磁盘加密后,备份文件会加密吗](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_362.md): GaussDB购买磁盘加密后,在实例创建成功后不可修改磁盘加密状态,且无法更改密钥。选择“磁盘加密”,存放在对象存储服务上的备份数据不会被加密。 - [不同GaussDB实例的CPU和内存是否共享](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_363.md): CPU和内存指的是购买的实例规格,在GaussDB中,不同实例之间CPU和内存资源完全隔离,互不共享。ECS场景下,即使CPU和内存资源在同一物理主机上运行,资源调度也是通过虚拟化技术严格隔离的。 - [GaussDB与PostgreSQL的关系](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_366.md): 最早GaussDB内核引擎基于PostgreSQL9.2开源版本不断演进,根据PG-XC架构衍生了多CN架构,主要开发了分布式执行框架(stream算子)、向量化引擎等领域中较重要的特性。目前GaussDB除了保留PostgreSQL的标准接口和公共函数外,在自研生态、架构和关键技术上也有了新的发展,开源了集中式部署的能力,重构了存储引擎 - [GaussDB资源冻结/解冻/释放/删除/退订](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_367.md): 按需计费实例是从“创建成功”开启计费,到“删除”结束计费。如果期间停止实例,所有的虚拟机(VM)停止收费,其余资源包括弹性公网IP(EIP)、存储资源、备份等正常计费。客户购买产品后,如果没有及时地进行续费或充值,将进入宽限期。如宽限期满仍未续费或充值,将进入保留期。在保留期内资源将停止服务。保留期满仍未续费或充值,存储在云服务中的数据将 - [GaussDB是否支持磁盘缩容](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_370.md): GaussDB暂时不支持磁盘缩容。您可以重新创建较低磁盘空间的数据库实例,并通过DRS将数据迁移到该实例。具体请参见实时同步。 - [哪些内容会占用用户所购买的GaussDB实例空间](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_371.md): 用户正常的数据(不包括备份数据),以及云数据库GaussDB实例正常运行所需的数据(比如系统数据库、数据库回滚日志、重做日志、索引等)。磁盘空间会有必要的文件系统开销,这些开销主要包括inode、reserved block,以及数据库运行必需的空间。同时,包含GaussDB数据库产生的日志文件。 - [DDL操作对磁盘空间的要求](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_372.md): 为了确保业务正常,您应该避免在业务高峰进行DDL(Data Definition Language)等可能导致磁盘空间暴增的操作。必须进行DDL操作时,请务必确保磁盘空间大于等于表空间两倍大小+10GB,即:假设您的表空间为500GB,那么,您在进行DDL操作时,需确保磁盘空间大于等于500*2+10=1010GB。 - [GaussDB实例连接失败怎么办](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_375.md): 主要从以下几个方面考虑:排除数据库实例异常例如:数据库系统故障,实例状态异常,实例或表被锁定。例如:数据库系统故障,实例状态异常,实例或表被锁定。(常见)使用正确的客户端连接方式内网连接需要GaussDB与ECS实例必须在同一区域、VPC。公网连接需要购买或使用已有EIP,并对GaussDB实例绑定该EIP 。内网连接需要GaussDB与 - [外部服务器能否访问GaussDB数据库吗](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_376.md): 对于开通公网访问功能的云数据库GaussDB实例,可以通过外网进行访问。在虚拟私有云中开通虚拟专用网络(Virtual Private Network,简称VPN),通过虚拟专用网络连接云数据库GaussDB。将云数据库GaussDB与弹性云服务器创建在同一个虚拟专用网络下,通过弹性云服务器来访问云数据库GaussDB。具体请参见通过gs - [GaussDB实例绑定公网IP后无法ping通的解决方案](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_383.md): 检查安全组规则。检查“ 网络ACL”规则。相同区域主机进行ping测试。检查安全组规则。登录云数据库GaussDB控制台。在实例管理页面,选择目标实例,单击实例名称,进入实例的基本信息页面。在“网络信息”模块的安全组处,单击安全组名称,进入安全组页面。检查弹性云服务器网卡对应的安全组是否放通了“入方向”的“ICMP”规则。安全组规则方向类 - [GaussDB跨地域内网能访问吗](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_384.md): 跨地域内网默认不能访问,不同区域的云服务之间内网互不相通。您可以通过公网访问,或者通过云连接/VPN打通网络实现内网访问。弹性公网IP:不能通过内网IP地址访问GaussDB实例时,可以使用公网访问。具体请参见通过gsql连接实例。云连接:对于不同区域的VPC,不区分是否同一账号,都可以互连,跨区域连接实现全球云上网络。具体请参见跨区域V - [为什么GaussDB实例重置密码后新密码没有生效](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_386.md): 密码重置发生在备份操作之后,执行恢复操作时,恢复为旧密码。密码重置之后是否执行了恢复操作。在Console页面,重新执行“重置密码”,具体请参见重置管理员密码。 - [使用DAS登录GaussDB数据库是否有人数限制,密码多次输入错误有无锁死机制](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_390.md): 使用DAS登录数据库不限制多人同时登录。密码连续输入错误锁死机制可通过failed_login_attempts参数配置,当账户输入密码错误的次数达到该参数设置的值时,当前账户将会被锁定,详情请参见GaussDB如何设置账户最大登录失败次数。在使用GaussDB过程中,如果忘记数据库账号密码,可以重新设置密码。您可以在“实例管理”页面,选 - [数据超过了GaussDB实例的最大存储容量怎么办](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_394.md): GaussDB数据库的磁盘空间满,导致实例变为只读状态,应用无法对GaussDB数据库进行写入操作,从而影响业务正常运行。业务数据增加。数据空间占用过大。由于大量的事务和写入操作产生了大量的日志文件。应用中存在大量的排序查询,产生了过多的临时文件。随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,建议用户进行磁盘扩容,确保磁盘空间足 - [如何查看GaussDB的存储空间使用情况](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_395.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [如何通过数据管理服务(DAS)查询GaussDB执行过的SQL语句](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_397.md): 通过数据管理服务(Data Admin Service,简称DAS)这款可视化的专业数据库管理工具,开启全量SQL洞察,可查询到相关SQL语句。当前支持显示1万条符合查询条件的SQL信息,多于1万条时,您可以通过导出功能获取更多SQL信息。导出功能最多支持10万条数据。 - [GaussDB实例导出SQL查询结果到Excel出现乱码](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_398.md): 编码导致出现乱码,默认是UTF8,需要在导出的Excel中,将默认编码转换为Unicode。 - [GaussDB数据库root账号被锁怎么处理](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_400.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [当业务压力过大时,备DN的回放速度跟不上主DN的速度如何处理](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_401.md): 当业务压力过大时,备DN的回放速度跟不上主DN的速度。在系统长时间的运行后,备DN上会出现日志累积。当主DN故障后,数据恢复需要很长时间,数据库不可用,严重影响系统可用性。GaussDB提供极致RTO能力,开启极致RTO(Recovery Time Object,恢复时间目标),可以减少主DN故障后数据的恢复时间,提高了可用性。如需使用极 - [GaussDB能够保存多长时间的备份](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_404.md): 云数据库GaussDB实例的自动备份有效期根据用户设置的备份天数而定。详情请参见设置自动备份策略。手动备份没有时间限制,用户可根据需要进行删除。详情请参见删除手动备份。 - [如何清理云数据库GaussDB的备份空间](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_405.md): 清理自动备份(全量备份+增量备份)自动备份文件不支持手动删除,可通过修改备份策略调整备份保留天数,超出备份保留天数的已有备份文件会被自动删除。自动备份文件不支持手动删除,可通过修改备份策略调整备份保留天数,超出备份保留天数的已有备份文件会被自动删除。清理手动备份(全量备份)手动备份文件支持手动删除,具体请参见删除手动备份。清理完手动备份后 - [GaussDB数据库在备份时间段中是否可用](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_406.md): 备份窗口是用户定义的时间段,在该时间段内云数据库GaussDB实例将进行备份。云数据库GaussDB服务借助这些定期数据备份,让您能够将云数据库GaussDB实例还原到保留期内的备份点。在备份时段期间,业务不受影响,但不能在云数据库GaussDB服务的管理控制台做重启等操作。全量备份时,会连接备份所属的实例,校验该实例的状态。如果校验存在 - [GaussDB的备份是如何收费的](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_407.md): 云数据库GaussDB的备份文件都存储在对象存储服务上,不占用用户购买实例的存储空间,GaussDB提供了和实例磁盘大小相同的部分免费存储空间,用于存放您的备份数据,其总容量约为您购买存储容量的100%。备份存储用量超过数据库存储空间的100%,开始按照阶梯计费。具体收费请参见计费说明。自动备份的生命周期和实例的生命周期相同。如果实例删除 - [如何将GaussDB数据库备份到弹性云服务器上](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_409.md): 您可以通过导出SQL语句的方式将数据库备份到弹性云服务器上。弹性云服务器不限制存放哪些数据,但是数据必须符合国家法律法规。您可以在弹性云服务器上存放数据库备份,但不建议将弹性云服务器作为数据库备份空间使用。强烈推荐使用云数据库GaussDB的自动备份和手动备份功能将备份数据存放到专业的对象存储服务上,以获得更高的数据可靠性和服务保障。 - [GaussDB实例删除后,备份是否会保留](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_410.md): 数据库实例删除后,手动备份默认为您保留,需要手动删除,并按照备份空间计费标准收取相应的费用。实例冻结后,备份不会收取费用。自动备份及相关的备份文件会自动删除。 - [为什么GaussDB自动备份会失败](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_412.md): 出现自动备份失败的原因及解决方案如下:网络环境稳定性不足。如网络延时、中断,系统会识别并延时半小时再次执行备份,您也可以及时进行一次手动备份。如网络延时、中断,系统会识别并延时半小时再次执行备份,您也可以及时进行一次手动备份。系统多任务执行。如任务等待、中止,系统会识别并延时半小时再次执行备份,您也可以及时进行一次手动备份。如任务等待、中 - [为什么GaussDB数据表会丢失或数据被删除](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_413.md): GaussDB不会删除和操作用户的任何数据。出现这种情况,请检查是否为误操作,必要时可利用已有备份恢复文件。已有备份恢复文件:使用GaussDB实例的恢复功能。将备份数据从弹性云服务器导入云数据库GaussDB。 - [GaussDB是否支持恢复单表信息](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_415.md): GaussDB支持表级恢复。GaussDB支持使用已有的自动备份和手动备份,将指定表数据恢复到备份被创建时的状态。详情请参见通过备份文件恢复GaussDB库/表。GaussDB支持使用已有的自动备份,将指定表数据恢复到指定时间点。详情请参见恢复GaussDB库/表到指定时间点。 - [备份文件是否支持转储至用户的OBS桶](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_416.md): 备份文件不支持直接转储到用户自己创建的OBS桶。如果需要转储,建议通过本地下载全量备份文件或者增量备份文件,通过OBS Browser+转储。 - [GaussDB备份策略如何删除](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_418.md): 云数据库GaussDB暂不支持删除备份策略。创建GaussDB实例时,系统默认开启实例级自动备份策略,您可通过控制台修改备份策略的备份周期和保留天数。详情请参见修改备份策略。 - [GaussDB实例的哪些监控指标需要重点关注](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_420.md): 对于GaussDB实例,需要关注的监控指标有:CPU利用率、内存利用率、磁盘空间利用率。可以根据实际应用场景配置告警提示,当收到告警,可采取相应措施消除告警。配置示例:如果在某段时间内(如5min),CPU使用率的平均值出现多次(如4次)不低于某特定值(如90%)的情况,则发出相应Cloud Eye告警。如果在某段时间内(如5min),内 - [GaussDB实例内存使用率指标的计算方法](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_421.md): GaussDB内存使用率指标的计算方法:内存使用率 =(物理机总内存 –(空闲内存 + 给文件的缓冲大小 + 高速缓冲存储器使用的大小))/ 物理机总内存 - [GaussDB实例在扩容和规格变更期间是否一直可用](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_423.md): 目前,GaussDB支持磁盘扩容和CPU/内存规格变更。在磁盘扩容期间,云数据库GaussDB实例一直可用,业务不受影响,但不允许删除和重启实例。在CPU/内存规格变更期间,有1到2次网络秒级闪断。规格变更过程中可能会发生主备倒换,倒换时业务可能会短暂中断。规格变更完成后,在V2.0-3.100版本之前的实例将会重启数据库集群,重启过程业 - [GaussDB实例是否支持更换VPC](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_424.md): GaussDB实例暂不支持直接通过控制台更换VPC。但您可以通过已有GaussDB的全量备份恢复到新实例的方法切换到目标VPC。具体操作请参考数据恢复。 - [GaussDB如何修改时区](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_426.md): GaussDB只能通过控制台方式修改时区。时区修改详见如下操作。例如:想要修改为+8时区,可以下拉选择为:Asia/Shanghai。 - [GaussDB密码过期策略](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_427.md): GaussDB支持通过设置全局变量“password_effect_time”来控制用户密码的默认过期时间。您可以在云数据库GaussDB界面,通过设置参数“password_effect_time”的值,修改密码过期策略。具体请参见编辑参数模板。参数“password_effect_time”的值为N,表示密码N天后过期,单位为天。默认 - [GaussDB是否支持使用SQL命令修改全局参数](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_428.md): 云数据库GaussDB不支持在数据库中执行修改全局参数的命令,您可以到控制台修改参数。 - [如何查看GaussDB执行过的所有SQL日志](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_430.md): 您可以通过数据管理服务(Data Admin Service,简称DAS)这款可视化的专业数据库管理工具,快速查找目标SQL执行记录信息。SQL执行记录单击列表中数据库名称,您可直接进入该数据库管理页面。单击SQL语句,您可在SQL语句弹出框中复制使用SQL。单击在SQL执行窗口打开,您可在SQL窗口中直接使用该语句。单击列表中数据库名称 - [如何查看GaussDB数据库的死锁日志](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_431.md): 数据库的死锁日志记录在错误日志中,若您开启了“错误日志采集”,您可以下载错误日志后通过关键字“Lock wait timeout”快速定位。 - [如何防止任意源连接GaussDB数据库](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_435.md): 数据库开放EIP后,如果公网上的恶意人员获取到您的EIP DNS和数据库端口,那么便可尝试破解您的数据库并进行进一步破坏。因此,强烈建议您保护好EIP DNS、数据库端口、数据库账号和密码等信息,并通过云数据库GaussDB实例的安全组限定源IP,保障只允许可信源连接数据库。为避免恶意人员轻易破解您的数据库密码,请按照云数据库GaussD - [将根证书导入Windows/Linux操作系统](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_437.md): 使用Win + R组合键打开运行框,输入“MMC”,回车。在MMC控制台菜单栏中单击“文件”,选择“添加/删除管理单元”。在“添加或删除管理单元”对话框,选择“可用管理单元”区域的“证书”。单击“添加”添加证书。在“证书管理单元”对话框,选择“计算机账户”,单击“下一步”。在“选择计算机”对话框,单击“完成”。在“添加或删除管理单元”对话 - [GaussDB是否支持开启SELECT审计功能](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_669.md): 云数据库GaussDB可以通过控制台开启SELECT审计功能。详见如下操作。0代表关闭。1代表开启。 - [GaussDB如何设置磁盘占用率只读检测阈值](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_670.md): 云数据库GaussDB可以通过控制台设置磁盘占用率只读检测阈值。详见如下操作。 - [GaussDB如何设置日期和时间的显示格式](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_671.md): 云数据库GaussDB可以通过控制台设置日期和时间的显示格式。详见如下操作。 - [GaussDB如何设置显示和解释时间类型数值时使用的时区](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_672.md): 云数据库GaussDB可以通过控制台设置显示和解释时间类型数值时使用的时区。详见如下操作。 - [GaussDB如何修改DN的最大连接数](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_674.md): 云数据库GaussDB可以通过控制台修改集中式版实例DN的最大连接数。详见如下操作。 - [GaussDB如何开启INSERT、UPDATE、DELETE审计功能](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_675.md): 云数据库GaussDB可以通过控制台开启INSERT、UPDATE、DELETE审计功能。详见如下操作。0代表关闭。1代表开启。 - [GaussDB如何设置最大允许创建walsender线程的个数](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_676.md): 备DN连接主DN获取物理日志、逻辑复制工具连接主DN获取逻辑日志都会占用walsender线程,此参数表示最大允许创建walsender线程的个数。GaussDB可以通过控制台设置最大允许创建walsender线程的个数。详见如下操作。该参数值设置小于20可能会导致扩容失败。该参数值需要小于max_connections参数的值。 - [GaussDB如何设置记录每个SQL的最大字节数](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_677.md): track_activity_query_size参数用于指定记录每个SQL的最大字节数,超过此阈值,记录的SQL将被截断。该参数设置过大会占用大量内存,甚至把内存耗尽,建议不超过4096。GaussDB可以通过控制台设置集中式版实例每个SQL的最大字节数。详见如下操作。 - [GaussDB如何设置连接超时时间](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_678.md): 连接超时时间参数指与服务器建立连接后,不进行任何操作的最长时间,单位为秒。云数据库GaussDB可以通过控制台设置连接超时时间,例如想要修改为无操作5分钟超时,即可修改目标值为300。0表示关闭超时设置。详见如下操作。 - [GaussDB如何设置账户被锁定后自动解锁的时间](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_679.md): password_lock_time参数指定账户被锁定后自动解锁的时间。单位为天,浮点型数值,默认值为1,最小值为0,最大值为365,其中0表示立即解锁。整数部分表示天数,小数部分可以换算成时、分、秒。如:password_lock_time=1.5,表示1天零12小时。GaussDB可以通过控制台设置账户被锁定后自动解锁的时间。详见如下 - [GaussDB如何设置账户最大登录失败次数](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_680.md): failed_login_attempts参数为用户最大登录失败次数,默认值为10。当账户输入密码错误的次数达到该参数设置的值时,当前账户将会被锁定。等待password_lock_time秒后账号会自动解锁。GaussDB可以通过控制台设置账户最大登录失败次数。详见如下操作。password_lock_time和failed_login - [GaussDB分布式独立部署与分布式混合部署有什么区别](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_694.md): 分布式独立部署适用于大数据量,期望可以通过横向扩展提高实例数据容量和并发能力,并且分布式混合部署无法满足性能诉求的场景。所有组件均部署在独立的ECS上,资源无争抢,性能更好。以默认配置(3CN,3副本,3分片)为例,有3个CN、9个DN、3个CMS、3个GTM,需要18台ECS。适用于大数据量,期望可以通过横向扩展提高实例数据容量和并发能 - [GaussDB通用型、独享型和鲲鹏独享型性能规格之间的区别是什么](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_695.md): GaussDB的实例规格CPU架构分为X86架构和ARM架构,不同架构支持的规格类型如下。不同规格类型之间的区别请参见表1。X86架构:独享型(1:4)、独享型(1:8)、通用型(1:4)ARM架构:鲲鹏独享型(1:4)、鲲鹏独享型(1:8) - [GaussDB企业版和基础版可以互相切换吗](https://support.huaweicloud.com/gaussdb_faq/gaussdb_01_696.md): 由于产品类型切换涉及退订、重新订阅、高级特性变化带来的参数差异,可能会导致业务受损,因此GaussDB暂不支持企业版和基础版互相切换。您可以重新创建所需类型的数据库实例,并通过DRS将数据迁移到该实例,具体操作请参见实时同步。 ## 开发指南(分布式_V2.0-8.x) - [查看参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0253.md): GaussDB安装后,有一套默认的GUC参数,为了使GaussDB与业务的配合度更高,用户需要根据业务场景和数据量的大小调整GUC参数。方法一:使用SHOW命令。使用如下命令查看单个参数:gaussdb=# SHOW system_view_version;system_view_version显示数据库控制系统视图版本的参数。使用如下命 - [设置参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0254.md): GaussDB提供了多种修改GUC参数的方法,用户可以方便地针对数据库、用户、会话进行设置。参数名称不区分大小写。参数取值有整型、浮点型、字符串、布尔型和枚举类型五类。布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。枚举类型的取值是在系统表pg_settings的enumvals字段 - [GUC使用说明](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0256.md): 数据库提供了许多GUC参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数本身的规格限制与修改后对数据库的影响,否则可能会导致无法预料的结果:数据库内部部分参数与环境有关,在数据库安装时便已指定,不建议进行修改。如果有一定要修改的场景,设置时必须确保内容、格式正确,否则会导致实例异常。例如:设置侦听地址的参 - [文件位置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0257.md): 数据库安装后会自动生成三个配置文件(gaussdb.conf、gs_hba.conf和gs_ident.conf),并统一存放在数据目录(data)下。用户可以使用本节介绍的方法修改配置文件的名称和存放路径。修改任意一个配置文件的存放目录时,gaussdb.conf里的data_directory参数必须设置为实际数据目录(data)。考 - [连接设置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0259.md): 介绍设置客户端和服务器连接方式相关的参数。参数说明:设置服务器是否使用轻量通信方式。该参数指定服务器是否使用基于轻量锁和非阻塞socket的通信方式。参数类型:布尔型参数单位:无取值范围:on:表示使用轻量通信方式。off:表示不使用轻量通信方式。默认值:off设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行 - [安全和认证](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0260.md): 介绍设置客户端和服务器的安全认证方式的相关参数。参数说明:完成客户端认证的最长时间。如果一个客户端没有在这段时间里完成与服务器端的认证,则服务器自动中断与客户端的连接,这样就避免了出问题的客户端无限制地占用连接数。参数类型:整型参数单位:s(秒)取值范围:1 ~ 600默认值:60设置方式:该参数属于SIGHUP类型参数,请参见表1中对应 - [通信库参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0261.md): 本节介绍通信库相关的参数设置及取值范围等内容。参数说明:在支持TCP_KEEPIDLE套接字选项的系统上,设置发送保持活跃信号的间隔秒数。不设置发送保持活跃信号,连接就会处于闲置状态。如果操作系统不支持TCP_KEEPIDLE选项 ,这个参数的值必须为0。在通过Unix域套接字进行的连接的操作系统上,这个参数将被忽略。将该值设置为0时,将 - [内存](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0263.md): 介绍与内存相关的参数设置。这些参数只能在数据库服务重新启动后生效,local_syscache_threshold除外。参数说明:设置是否允许使用内存池。参数类型:布尔型参数单位:无取值范围:on:表示允许使用内存池。off:表示不允许使用内存池。默认值:off设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行 - [磁盘空间](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0264.md): 介绍与磁盘空间相关的参数,用于限制临时文件所占用的磁盘空间。参数说明:限制单个SQL在单个DN上,触发写盘操作时,所有类型写盘文件的总空间大小,管控的空间包括普通表、临时表以及中间结果集写盘占用的空间。参数类型:整型参数单位:kB取值范围:-1 ~ 2147483647,其中-1表示没有限制。默认值:-1设置方式:该参数属于USERSET - [内核资源使用](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0265.md): 介绍与操作系统内核相关的参数,这些参数是否生效依赖于操作系统的设置。参数说明:设置每个数据库线程允许同时打开的最大文件数量。参数类型:整型参数单位:无取值范围:25 ~ 2147483647默认值:1024设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。设置建议:如果操作系统内核强制一个合理的数目,则不 - [基于开销的清理延迟](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0266.md): 这个特性的目的是允许管理员减少VACUUM和ANALYZE语句在并发活动的数据库上的I/O影响。比如,像VACUUM和ANALYZE这样的维护语句并不需要迅速完成,并且不希望这些维护语句严重干扰系统执行其他的数据库操作。基于开销的清理延迟为管理员提供了一个实现这个目的手段。有些清理操作会持有关键的锁,这些操作应该尽快结束并释放锁。所以Ga - [后端写线程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0267.md): 介绍后端写(background writer)线程的参数配置。后端写线程的功能就是把共享缓冲区中的脏数据(指共享缓冲区中新增或者修改的内容)写入到磁盘。目的是让数据库进程在进行用户查询时可以很少或者几乎不等待写动作的发生(写动作由后端写线程完成)。此机制同样也减少了检查点造成的性能下降。后端写线程将持续的把脏页面刷新到磁盘上,所以在检查 - [异步I/O](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0268.md): 参数说明:设置checkpointer线程刷脏页个数超过设定的阈值时,告知操作系统将文件缓存中的数据页面异步刷盘。GaussDB中,磁盘页大小为8kB。参数类型:整型参数单位:页面(8kB)取值范围:0 ~ 256(0表示关闭异步刷盘功能)。默认值:256kB(即32个页面)设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方 - [数据并行导入导出](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0269.md): GaussDB提供了并行导入导出功能,以快速、高效地完成大量数据导入导出。介绍GaussDB并行导入导出的相关参数。参数说明:设置导入时是否区分“导入文件记录数为空”和“导入文件不存在”。该参数开启时,“导入文件不存在”的时候,GaussDB将抛出“文件不存在”的错误。参数类型:布尔型参数单位:无取值范围:on:表示导入时区分“导入文件记 - [设置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0271.md): 参数说明:设置写入WAL信息量的级别,不能为空或被注释掉。参数类型:枚举类型参数单位:无取值范围:minimal优点:一些重要操作(包括创建表、创建索引、簇操作和表的复制)都能安全的跳过,这样就可以使操作变得更快。缺点:WAL仅提供从数据库服务器崩溃或者紧急关闭状态恢复时所需要的基本信息,无法用WAL归档日志恢复数据。优点:一些重要操作( - [检查点](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0272.md): 参数说明:设置checkpoint_timeout周期内所保留WAL日志文件的最大数量。每个日志文件大小为16MB。参数类型:整型参数单位:无取值范围:1 ~ 2147483646默认值:1024设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。提升此参数可加快大数据的导入速度,但需要结 - [日志回放](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0273.md): 参数说明:备机完成日志写入和回放的流控阈值。当备机的回放完成预期时间大于此参数,主机会触发日志流控,将降低主机向备机发送日志的速率。参数类型:整型参数单位:s(秒)取值范围:0 ~ 36000:表示不开启日志流控。1 ~ 3600:表示备机能够在recovery_time_target时间内完成日志的写入和回放,可以保证主机与备机切换时能 - [归档](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0274.md): 参数说明:表示归档周期。超过该参数设定的时间,则强制切换WAL段。由于强制切换而提早关闭的归档文件仍然与完整的归档文件长度相同。因此,将archive_timeout设为很小的值将导致占用巨大的归档存储空间,建议将archive_timeout设置为60秒。参数类型:整型参数单位:s(秒)取值范围:0 ~ 1073741823。其中0表示 - [发送端服务器](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0276.md): 参数说明:是否开启复制槽主备同步特性,仅涉及归档槽和备份槽。参数类型:布尔型参数单位:无取值范围:on:表示开启复制槽主备同步特性。off:表示不开启复制槽主备同步特性。默认值:on设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。设置建议:主机上创建归档/备份槽建议开启,备机创建归档/备份槽建议关闭。设置不当 - [主服务器](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0277.md): 参数说明:潜在同步复制的备机名称列表,每个名称用逗号分隔。参数类型:字符串参数单位:无当前连接的同步备机是列表中的第一个名称。如果当前同步备机失去连接,则它会立即更换下一个优先级更高的备机,并将此备机的名称放入列表中。备机名称可以通过设置环境变量PGAPPNAME指定。取值范围:当取值为*,表示匹配任意提供同步复制的备机名称。支持按如下格 - [备服务器](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0278.md): 参数说明:设置是否允许备机在恢复到minrecovery点后接受连接和查询。参数类型:布尔型参数单位:无取值范围:on:表示允许备机在恢复到minrecovery点后接受连接和查询。off:表示不允许备机在恢复到minrecovery点后接受连接和查询。默认值:on设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法 - [优化器方法配置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0280.md): 这些配置参数提供了影响查询优化器选择查询规划的原始方法。如果优化器为特定的查询选择的缺省规划并不是最优的,可以通过使用这些配置参数强制优化器选择一个不同的规划来临时解决这个问题。更好的方法包括调节优化器开销常量、手动运行ANALYZE、增加配置参数default_statistics_target的值、增加使用ALTER TABLE SE - [优化器开销常量](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0281.md): 介绍优化器开销常量。这里描述的开销可以按照任意标准度量。只关心其相对值,因此以相同的系数缩放它们将不会对优化器的选择产生任何影响。缺省时,以抓取顺序页的开销为基本单位。也就是说将seq_page_cost设为1.0,同时其他开销参数以该参数为基准设置。也可以使用其他基准,比如以毫秒计的实际执行时间。参数说明:设置优化器计算一次顺序磁盘页面 - [基因查询优化器](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0282.md): 介绍基因查询优化器相关的参数。基因查询优化器(GEQO)是一种启发式的查询规划算法。这个算法减少了对复杂查询规划的时间,而且生成规划的开销有时也小于正常的详尽的查询算法。参数说明:控制基因查询优化的使用。该参数通过执行gs_guc reload修改时,如果当前节点上的某个session的连接不是来自于客户端,而是来自于该节点所属集群上的其 - [其他优化器选项](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0283.md): 参数说明:此参数用来指定优化器代价模型的版本。可以视作一个保护参数,用来禁用最新的优化器代价模型,保持和旧版本计划一致。参数类型:整型参数单位:无取值范围:0、1、2、3、4、50:表示使用最新的cost估算模型。当前版本等价于5。1:表示使用原始的cost估算模型。2:表示在1的基础上,使用增强的coalesce表达式估算、hash j - [记录日志的位置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0285.md): 参数说明:GaussDB支持多种方法记录服务器日志,log_destination的取值为一个逗号分隔开的列表(如log_destination="stderr,csvlog")。参数类型:字符串参数单位:无取值范围:有效值为"stderr"、"csvlog"、"syslog"、"eventlog"。"stderr",表示日志打印到屏幕。 - [记录日志的时间](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0286.md): 参数说明:控制发送到客户端的消息级别,当产生该设置参数级别相等或更高级别的消息时,将这些消息发送到客户端。因此级别越低,发送给客户端的消息就越多。参数类型:枚举类型参数单位:无取值范围:消息级别从低到高为debug5、debug4、debug3、debug2(debug)、debug1、log、info、notice、warning、er - [记录日志的内容](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0287.md): 参数说明:用于控制打印解析树结果。参数类型:布尔型参数单位:无取值范围:on:表示开启打印解析树结果的功能。off:表示关闭打印解析树结果的功能。默认值:off设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。参数说明 - [使用CSV格式写日志](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0288.md): log_destination的值设置为csvlog。logging_collector的值设置为on。以“逗号分隔值” 即CSV(Comma Separated Value)的形式发出日志。以下是简单的用来存储CSV形式日志输出的表定义:CREATE TABLE gaussdb_log ( log_time timestamp(3) w - [告警上报](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0289.md): 在集群运行的过程中,会对数据库中的错误场景进行上报,便于用户及早感知到数据库集群的错误。告警写入的system_alarm日志可以在$GAUSSLOG/cm、$GAUSSLOG/gs_log/gtm、$GAUSSLOG/gs_log或$GAUSSLOG/roach/agent路径下查看。参数说明:设置是否打开告警上报线程,上报数据库中可能 - [查询和索引统计收集器](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0291.md): 查询和索引统计收集器负责收集数据库系统运行中的统计数据,如在一个表和索引上进行了多少次插入与更新操作、磁盘块的数量和元组的数量、每个表上最近一次执行清理和分析操作的时间等。可以通过查询系统视图pg_stats和pg_statistic查看统计数据。下面的参数设置服务器范围内的统计收集特性。参数说明:控制是否收集每个会话中当前正在执行命令的 - [热点key统计](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0293.md): 分布式架构下,如果应用短时间内集中访问某一节点,会导致该节点资源使用过高,从而影响数据库正常运行。GaussDB提供的热点key快速检测功能可以用来快速定位是否有热点key以及热点key的分布来帮助定位问题。参数说明:开关打开后,自动对数据库内被访问的键值进行统计。如果是通过gs_guc set 方式设置参数,需要重启数据库使得GUC参数 - [负载管理](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0294.md): 未对数据库资源做控制时,容易出现并发任务抢占资源导致操作系统过载甚至最终崩溃。操作系统过载时,其响应用户任务的速度会变慢甚至无响应;操作系统崩溃时,整个系统将无法对用户提供任何服务。GaussDB的负载管理功能能够基于可用资源的多少均衡数据库的负载,以避免数据库系统过载。参数说明:设置是否开启资源管理功能。此参数需在CN和DN同时应用。参 - [自动清理](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0295.md): 系统自动清理线程(autovacuum)包含VACUUM和ANALYZE两个过程,回收被标识为删除状态的记录空间,并更新表的统计数据。两次autovacuum的执行间隔时间由参数autovacuum_naptime控制,默认时间为10分钟,可根据实际业务场景进行配置。该间隔时间不能保证完全精确,一方面取决于环境的硬件条件和负载,当负载较高 - [语句行为](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0297.md): 介绍SQL语句执行过程的相关默认参数。参数说明:当一个被引用对象没有指定模式时,此参数设置模式搜索顺序。参数类型:字符串参数单位:无取值范围:由一个或多个模式名构成的字符串,不同的模式名用逗号隔开。设置为'"$user",public'时,支持共享数据库(没有用户具有私有模式和所有共享使用public),用户私有模式和这些功能的组合使用。 - [区域和格式化](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0298.md): 介绍时间格式设置的相关参数。参数说明:设置日期和时间值的显示格式,以及有歧义的输入值的解析规则。这个变量包含两个独立的加载部分:输出格式声明(ISO、Postgres、SQL、German)和输入输出的年/月/日顺序(DMY、MDY、YMD、Euro、European、US、NonEuro、NonEuropean、Default)。两个部 - [其他缺省](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0299.md): 主要介绍数据库系统默认的库加载参数。参数说明:设置数据查找动态加载的共享库文件的路径。当需要打开一个可以动态装载的模块并且在CREATE FUNCTION或LOAD命令里面声明的名称没有目录部分时,系统将搜索这个目录以查找声明的文件,仅sysadmin用户可以访问。参数类型:字符串参数单位:无取值范围:用冒号分隔(Windows下是分号分 - [锁管理](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0300.md): 在GaussDB中,并发执行的事务由于竞争资源会导致死锁。本节介绍的参数主要管理事务锁的机制。参数说明:设置死锁超时检测时间。当申请的锁超过设定值时,系统会检查是否产生了死锁。该参数仅针对常规锁生效。参数类型:整型参数单位:ms(毫秒)取值范围:1 ~ 2147483647默认值:1000(即1s)设置方式:该参数属于SUSET类型参数, - [历史版本兼容性](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0302.md): GaussDB介绍数据库的向下兼容性和对外兼容性特性的参数控制。数据库系统的向后兼容性能够为旧版本的数据库应用提供支持。本节介绍的参数主要控制数据库的向后兼容性。参数说明:控制数组输入解析器是否将没有用引用的NULL识别为数组的一个NULL元素。参数类型:布尔型参数单位:无取值范围:on:表示允许向数组中输入空元素。off:表示向下兼容旧 - [平台和客户端兼容性](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0303.md): 很多平台都使用数据库系统,数据库系统的对外兼容性给平台提供了很大的便利。参数说明:控制返回的日期时间。在ORA模式下,当事务开启时,函数current_date()、current_timestamp()、localtimestamp()返回当前SQL启动的时间戳。参数类型:布尔型参数单位:无取值范围:on:返回当前SQL启动的时间戳。o - [容错性](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0304.md): 当数据库系统发生错误时,以下参数控制服务器处理错误的方式。参数说明:若打开该开关,ERROR级别报错会升级为PANIC报错,从而可以产生core堆栈。主要用于问题定位和业务测试。参数类型:布尔型参数单位:无取值范围:on:表示ERROR级别报错会升级为PANIC报错。off:表示不会对ERROR级别报错进行升级。默认值:off设置方式:该 - [连接池参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0305.md): 当使用连接池访问数据库时,在系统运行过程中,数据库连接是被当作对象存储在内存中的,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接来使用。用户使用完毕后,数据库并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。参数说明:cm_agent、cm_ctl等内部工具运维管理端口,初始化用户或系统 - [集群事务](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0306.md): 介绍集群事务隔离、事务只读、最大prepared事务数、集群维护模式目的参数设置及取值范围等内容。参数说明:设置当前事务的隔离级别。对于开启的新事务,隔离级别固定为default_transaction_isolation的值。参数类型:字符串参数单位:无取值范围:只支持以下字符串,对大小写和空格敏感。'serializable':Gau - [双集群复制参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0307.md): 参数说明:设置双集群中备集群的各个实例是否为只读模式,仅sysadmin用户可以访问。参数类型:布尔型参数单位:无取值范围:on:表示备集群开启只读模式。off:表示备集群关闭只读模式。此情况下,备集群可读可写。默认值:off设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。设置建议:备份恢复使用,不建议 - [开发人员选项](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0308.md): 参数说明:设置是否允许修改系统表的结构和系统自带模式的名称。参数类型:布尔型参数单位:无取值范围:on:表示允许修改系统表的结构和系统自带模式的名称。off:表示不允许修改系统表的结构和系统自带模式的名称。默认值:off设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。设置建议:不建议用户修改该参数设置。 - [审计开关](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0310.md): 参数说明:控制审计线程的开启和关闭。审计线程开启后,将从管道读取后台线程写入的审计信息,并写入审计文件。参数类型:布尔型参数单位:无取值范围:on:表示启动审计功能。off:表示关闭审计功能。默认值:on设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。设置不当的风险与影响:开启审计功能 - [用户和权限审计](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0311.md): 参数说明:该参数决定是否审计用户的登录(包括登录成功和登录失败)、注销。参数类型:整型参数单位:无取值范围:0 ~ 70:表示关闭用户登录、注销审计功能。1:表示只审计用户登录成功。2:表示只审计用户登录失败。3:表示只审计用户登录成功和失败。4:表示只审计用户注销。5:表示只审计用户注销和登录成功。6:表示只审计用户注销和登录失败。7: - [操作审计](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0312.md): 参数说明:该参数表示是否对数据库对象的CREATE、DROP、ALTER等操作进行审计。数据库对象包括DATABASE、USER、SCHEMA、TABLE等。通过修改该配置参数的值,可以只审计需要的数据库对象的操作。参数类型:整型参数单位:无取值范围:0 ~ 5368709110代表关闭数据库对象的CREATE、DROP、ALTER等操作 - [事务监控](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0313.md): 通过设置事务超时预警,可以监控自动回滚的事务并定位其中的语句问题,并且也可以监控执行时间过长的语句。参数说明:为保证数据一致性,当本地事务与GTM上snapshot中状态不一样时会阻塞其他事务的运行,需要等待本地节点上事务状态与GTM状态一致后再运行。当CN上等待时长超过transaction_sync_naptime时会主动触发gs_c - [cm_agent参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0315.md): 参数说明:log_dir决定存放cm_agent日志文件的目录。可以是绝对路径,或者是相对路径(相对于cm_agent数据目录的路径)。参数类型:字符串参数单位:无取值范围:合法目录路径。默认值:“$GAUSSLOG/cm/cm_agent”,表示在$GAUSSLOG对应的cm目录下生成cm_agent日志。设置方式:该参数为CM参数,参 - [cm_server参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0316.md): 参数说明:log_dir决定存放cm_server日志文件的目录。可以是绝对路径,或者是相对路径(相对于cm_server数据目录的路径)。参数类型:字符串,最大长度为1024。参数单位:无取值范围:合法目录路径。默认值:“$GAUSSLOG/cm/cm_server”,表示在$GAUSSLOG对应的cm目录下生成cm_server日志。 - [GTM相关参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0317.md): GTM相关参数可以在gtm.conf文件中进行设置,或通过gs_guc进行设置。参数说明:主GTM或备GTM的名称。参数类型:字符串参数单位:无取值范围:字符串,要符合标识符的命名规范。默认值:""设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。设置不当的风险与影响:请在充分理 - [升级参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0318.md): 参数说明:是否在升级的过程中。该参数属于升级参数,用户无法修改,仅sysadmin用户可以访问。参数类型:布尔型参数单位:无取值范围:on:表示在升级过程中。off:表示不在升级过程中。默认值:off设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。设置建议:该参数不允许用户进行设置,只能查看。设置不当的风险与影响 - [其它选项](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0319.md): 参数说明:指定是否默认使用Ustore存储引擎。仅当enable_ustore参数开启时,该参数设置有效。该参数为on时,创建的表默认都为Ustore表;该参数为off时,创建的表默认都为Astore表。升级场景下该参数的默认值会优先保证兼容性,即升级后的默认值与老版本的取值一致。参数类型:布尔型参数单位:无取值范围:on:表示默认使用U - [等待事件](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0320.md): 参数说明:设置是否开启等待事件信息实时收集功能。参数类型:布尔型参数单位:无取值范围:on:表示打开等待事件信息收集功能。off:表示关闭等待事件信息收集功能。默认值:on设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:建议设置为on。设置不当的风险与影响:不开启该参数会导致无法实时收集等待事件,不便 - [Query](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0321.md): 参数说明:控制系统中unique sql信息实时收集功能的最大收集数量。该值由大变小将会清空系统中原有的数据重新统计(备机不支持此能力);从小变大不受影响。当系统中产生的unique sql信息(由dbe_perf.statement/dbe_perf.summary_statement统计)大于instr_unique_sql_coun - [系统性能快照](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0322.md): 参数说明:设置是否开启秒级CPU冲高火焰图功能参数类型:布尔型参数单位:无取值范围:on:打开数据库秒级CPU冲高火焰图功能。off:关闭数据库秒级CPU冲高火焰图功能。默认值:on设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。设置不当的风险与影响:请在充分理解参数含义,并经过测试验 - [安全配置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0326.md): 参数说明:安全策略开关,控制统一审计和动态数据脱敏策略是否生效。统一审计:统一审计机制是一种通过定制化制定审计策略而实现高效安全审计管理的一种技术。当管理员定义审计对象和审计行为后,用户执行的任务如果关联到对应的审计策略,则生成对应的审计行为,并记录审计日志。动态数据脱敏:动态数据脱敏机制是一种通过定制化制定脱敏策略从而实现对隐私数据保护 - [HyperLogLog](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0328.md): 参数说明:该参数可以指定hll数据结构桶的个数。桶的个数会影响hll计算distinct值的精度,桶的个数越多,误差越小。误差范围为:[-1.04/2log2m*1/2,+1.04/2log2m*1/2]。参数类型:整型参数单位:无取值范围:10 ~ 16默认值:14设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行 - [用户自定义函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0329.md): 参数说明:控制每个CN、DN执行UDF时可用的最大物理内存量。该参数当前版本不生效。参数类型:整型参数单位:kB取值范围:200*1024 ~ 2147483647默认值:204800(即200MB)设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。例如,设置为204800,不带单位,表示204800kB - [定时任务](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0332.md): 参数说明:表示系统可以并发执行的job数目。参数类型:整型参数单位:无取值范围:0 ~ 1000当job_queue_processes设置为0时,表示不启用定时任务功能,任何job都不会被执行(因为开启定时任务的功能会对系统的性能有影响,有些局点可能不需要定时任务的功能,可以通过设置为0不启用定时任务功能)。当job_queue_pro - [线程池](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0333.md): 参数说明:控制是否使用线程池功能。参数类型:布尔型参数单位:无取值范围:on:表示开启线程池功能。off:表示不开启线程池功能。默认值:on设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。设置建议:在低并发长连接性能敏感场景下,建议关闭该参数,其他场景下建议打开该参数。设置不当的风险与影响:请在充分理解 - [备份恢复](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0335.md): 参数说明:系统是否进入备份恢复模式。参数类型:布尔型参数单位:无取值范围:on:表示进入备份恢复模式。off:表示不进入备份恢复模式。默认值:off设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:不建议用户设置该参数。设置不当的风险与影响:修改该参数取值可能导致集群出现意料之外的结果,请保持默认值。参 - [AI特性](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0336.md): 参数说明:该参数用于指定是否创建或者使用智能统计信息。参数类型:布尔型参数单位:无取值范围:on:表示创建并且使用智能统计信息。off:表示不创建或者不适用智能统计信息。默认值:off设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。设置不当的风险与影响:数据库运行过程中修改可能会造成 - [Global SysCache参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0337.md): 参数说明:控制是否使用全局系统缓存功能。参数类型:布尔型参数单位:无取值范围:on:表示开启全局系统缓存功能。off:表示不开启全局系统缓存功能。默认值:on设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值,开启全局系统缓存功能可以降低系统缓存内存占用,提高并发扩展能力。若打开该 - [预留参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0338.md): 下列参数为预留参数,该版本不生效。acce_min_datasize_per_threaddfs_partition_directory_lengthenable_fstreamenable_hdfs_predicate_pushdownenable_orc_cacheschedule_splits_thresholdenable_con - [分布式备机读参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0339.md): 参数说明:控制session是否开启备机读功能。仅在GTM-Free、GTM-Lite模式、非灾备集群、非事务块内、hot-standby模式下支持开启。参数类型:布尔型参数单位:无取值范围:on:表示该session开启分布式备机读功能。off:表示该session不开启分布式备机读功能。默认值:off设置方式:该参数属于USERSET - [备机数据修复](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0340.md): 参数说明:控制备机回放时,回放目标页发现故障后是否进行页面自动修复。当前版本支持CRC校验失败、页面未初始化、页面LSN错误共三种类型的修复。不支持VM、xlog、clog、MOT和UNDO元信息的坏块修复,以及FSM的LSN错误修复;UNDO记录仅支持CRC校验失败时的修复;临时表、全局临时表以及unlogged表不涉及主备修复。页面文 - [Undo](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0341.md): Undo的GUC参数仅对Ustore有效。参数说明:用于控制undo强制回收阈值,达到阈值的80%启动强制回收。建议设置undo_space_limit_size参数不小于undo_limit_size_per_transaction参数。参数类型:整型参数单位:页面(8kB)取值范围:102400 ~ 2147483647,对应的默认单 - [回滚相关参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0342.md): 参数说明:异步回滚调用的undoworker线程数量,参数重启生效。参数类型:整型参数单位:无取值范围:1 ~ 100默认值:5设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。设置不当的风险与影响:只影响同时并发进行异步回滚的最大线程数,设置过小可能会导致异步回滚速度慢,在系统 - [DCF参数设置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0343.md): 参数说明:是否开启DCF模式,不建议手动修改。参数类型:布尔型参数单位:无取值范围:on:表示当前日志复制模式为DCF模式。off:表示当前日志复制模式为非DCF模式。默认值:off设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:需要使用DCF日志复制模式时,请使用模式切换命令,切勿手动修改enabl - [闪回相关参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0344.md): 本章节介绍闪回功能相关参数。本版本只支持Ustore引擎闪回功能,不再支持Astore引擎闪回功能。参数说明:用来控制回收站的实时打开和关闭。参数类型:布尔型参数单位:无取值范围:on:表示实时打开回收站。off:表示实时关闭回收站。on:表示实时打开回收站。off:表示实时关闭回收站。默认值:off设置方式:该参数属于SIGHUP类型参 - [逻辑复制](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0494.md): 参数说明:逻辑解码时,单个事务在内存中缓存的DML语句数量上限。参数类型:整型参数单位:无取值范围:1 ~ 2147483647‬默认值:4096设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:推荐使用默认值。设置不当的风险与影响:设置过大,解码到大事务会占用较多的动态内存;设置过小,解码效率会降低。 - [黑匣子相关参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0495.md): 参数说明:控制“$GAUSSLOG/gs_blackbox/{nodename}”目录下最多能够保留的黑匣子文件个数。参数类型:整型参数单位:无取值范围:0 ~ 10,其中0表示不使用黑匣子功能。默认值:5(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核 - [在线DDL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0496.md): 参数说明:该参数与ONLINE/OFFLINE关键字(关键字详情请参考《开发指南》中的“SQL参考 -> SQL语法 -> A -> ALTER TABLE”章节,“SQL参考 -> SQL语法 -> V -> VACUUM”章节)结合使用,控制是否开启在线DDL或在线VACUUM。参数类型:布尔型参数单位:无取值范围:on:表示启用在线 - [数据生命周期管理-OLTP表压缩](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0497.md): 参数说明:控制是否开启数据生命周期管理-OLTP表压缩特性。参数类型:布尔型参数单位:无取值范围:on:表示开启。off:表示关闭。默认值:off设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:该参数默认off,如果需要开启数据生命周期管理-OLTP表压缩特性,请设置为on。设置不当的风险与影响:请在 - [session级事务下推及相关参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0499.md): 参数说明:指定当前会话的类型,大小写不敏感,根据用户实际取值生成执行计划。参数类型:枚举类型参数单位:无取值范围:single_node:单节点会话,读写操作支持下推,根据GUC参数exec_target_node判断下推节点并生成执行计划。global_read_only:跨节点只读会话,正常生成分布式计划,但禁止分布式写操作。norm - [Enhanced Toast](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0500.md): 参数说明:是否使用Enhanced Toast线外存储表。参数类型:布尔型参数单位:无取值范围:on:表示开启。off:表示关闭。默认值:on设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:该参数取值默认为on,需要关闭Enhanced Toast线外存储功能时设置为off。设置不当的风险与影响:请在 - [全局临时表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0566.md): 参数说明:全局临时表功能开关,控制是否可以创建全局临时表。该参数的取值决定了共享缓存中预留给全局临时表所需的哈希表的内存使用,并不会强制限制所有会话中的活跃全局临时表总数。参数类型:整型参数单位:无取值范围:0 ~ 10000000:全局临时表功能关闭。> 0:全局临时表功能打开。默认值:1000设置方式:该参数属于POSTMASTER类 - [云服务产品版本号](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-433.md): 设置云服务相关的版本号信息。参数说明:云服务产品版本号信息。参数类型:字符串参数单位:无取值范围:无默认值:""设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置建议:设置该参数时,需要遵循以下约束,否则会直接报错。字符串长度不超过50个字符。不能包含“|”、 “;”、“&”、“$”、“>”、“<”、“`”、 - [在线创建索引](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-435.md): 参数说明:控制是否删除Ustore在线创建/重建索引过程中产生的临时表。参数类型:布尔型参数单位:无取值范围:on:表示删除临时表。off:表示保留临时表。默认值:on设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。设置建议:该参数默认开启,需要保留在线创建/重建索引过程中产生的临时表时设置为off。设置不当 - [数据库逻辑结构图](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0003.md): 集群的每个DN(Data Node,数据节点)负责存储数据,其存储介质是磁盘,本节主要从逻辑视角介绍每个DN上有哪些对象,以及这些对象之间的关系。另外介绍数据在不同节点的分布方式。数据库逻辑结构如图1所示。Tablespace,即表空间,表空间是一个目录,集群中可以存在多个表空间,其中存储的是它所包含的数据库的各种物理文件。每个表空间可以 - [数据查询请求处理过程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0004.md): GaussDB服务响应流程涉及到客户端、Coordinator、GTM、datanode等组件。具体流程请参见图1。 - [管理事务](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0005.md): 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。GaussDB数据库支持的事务控制命令有启动、设置、提交、回滚。GaussDB数据库支持的事务隔离级别有READ COMMITTED、REPEATABLE READ和SERIALIZABLE,SERIALIZABLE等价于REPEATABLE REA - [相关概念](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0006.md): 数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。在GaussDB中,表空间是一个目录,集群中可以存在多个表空间,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅起到了物理隔离 - [默认权限机制](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0009.md): 数据库对象创建后,进行对象创建的用户就是该对象的所有者。集群安装后默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。Gauss - [管理员](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0010.md): 集群安装过程中自动生成的账户称为初始用户。初始用户也是系统管理员、安全管理员、审计管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。如果安装时不设置初始用户名称,则该账户与进行集群安装的操作系统用户同名。如果在安装集群时不设置初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端修 - [三权分立](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0011.md): 默认权限机制和管理员两节的描述基于的是集群创建之初的默认情况。默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立,将系统管理员的用户管理和审计管理的权限分别授予安全管理员和审计管理员。三权分立后,系统管理员将不再具有CREATEROLE属性( - [用户](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0012.md): 使用CREATE USER和ALTER USER可以创建和管理数据库用户。数据库集群包含一个或多个数据库。用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的数据库。非三权分立下,GaussDB用户账户只能由系统管理员或拥有CREATEROLE属性的安全管理员 - [角色](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0013.md): 通过GRANT将角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。在角色级别授予或撤销权限时,这些更改将作用到角色下的所有成员。GaussDB提供了一个隐式定义的拥有所有角色的组PUBLIC, - [Schema](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0014.md): Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。每个数据库包含一个或多个Schema。数据库中的每个Schema包含表和其他类型的对象。数据库创建初始,默认具有一个名为public的公共Schema,所 - [用户权限设置](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0015.md): 对业务系统用户进行权限授予或执行revoke操作时可能引发实例或业务异常,请谨慎操作。给用户直接授予某对象的权限,请参见GRANT。将Schema中的表或者视图对象授权给其他用户或角色时,需要将表或视图所属Schema的USAGE权限同时授予该用户或角色。否则用户或角色将只能看到这些对象的名称,并不能实际进行对象访问。例如,下面示例将Sc - [行级访问控制](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0016.md): 行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Lev - [数据库审计](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0017.md): 数据库审计功能对数据库系统的安全性至关重要。数据库审计管理员可以利用审计日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。关于审计功能,用户需要了解以下几点内容:审计总开关GUC参数audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。 - [使用gsql连接](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0020.md): gsql是GaussDB提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何使用gsql连接数据库,关于gsql使用方法的更多信息请参见《工具参考》中“数据库连接工具 > gsql连接数据库”。缺省情况下,客户端连接数据库后处于空闲状态时会根据GUC参数session - [应用程序接口](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0021.md): 用户可以使用标准的数据库应用程序接口(如ODBC和JDBC),开发基于GaussDB的应用程序。每个应用程序是一个独立的GaussDB开发项目。应用程序通过API与数据库进行交互,在避免了应用程序直接操作数据库系统的同时,增强了应用程序的可移植性、扩展性和可维护性。表1为GaussDB所支持的应用程序接口及其下载地址。使用JDBC和ODB - [创建数据库用户](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0023.md): 默认只有集群安装时创建的管理员用户可以访问初始数据库,您还可以创建其他数据库用户账号。当结果显示为如下信息,则表示创建成功。如上创建了一个用户名为joe,密码为********的用户。执行如下命令设置joe用户为系统管理员。使用GRANT命令进行相关权限设置,具体操作请参见GRANT。关于数据库用户的更多信息请参见用户及权限。 - [管理数据库](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0024.md): 用户需具备数据库创建权限或系统管理员权限方可执行数据库创建操作,具体权限授予方法请参见用户及权限。初始时,GaussDB包含四个模板数据库template0、template1、templatea,templatem,以及一个默认的用户数据库postgres。CREATE DATABASE实际上通过复制模板数据库来创建新数据库。默认复制t - [管理表空间](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0026.md): 通过使用表空间,管理员可以控制一个数据库安装的磁盘布局。这样有以下优点:如果初始化数据库所在的分区或者表空间已满,又不能逻辑上扩展更多空间,可以在不同的分区上创建和使用表空间,直到系统重新配置空间。表空间允许管理员根据数据库对象的使用模式安排数据位置,从而提高性能。一个频繁使用的索引可以存储在性能稳定且运算速度较快的磁盘上,比如一种固态设 - [创建表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0028.md): 表是建立在数据库中的,在不同的数据库中可以存放相同的表,甚至可以通过使用模式在同一个数据库中创建相同名称的表。执行如下命令创建表。gaussdb=# CREATE TABLE customer_t1 ( c_customer_sk integer, c_customer_id - [向表中插入数据](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0029.md): 在创建一个表后,表中并没有数据,在使用这个表之前,需要向表中插入数据。本小节介绍如何使用INSERT命令插入一行或多行数据,及从指定表插入数据。如果有大量数据需要批量导入表中请联系管理员处理。服务端与客户端使用不同的字符集时,两者字符集中单个字符的长度也会不同,客户端输入的字符串会以服务端字符集的格式进行处理,所以产生的最终结果可能会与预 - [更新表中数据](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0030.md): 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。使用UPDATE命令更新现有行,需要提供以下三种信息:表的名称和要更新的字段名字段的新值要更新的行SQL通常不会为数据行提供唯一标识,因此更新操作需通过WHERE子句的条件表达式定位目标行。若表中定义主键, - [查看数据](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0031.md): 使用系统表pg_tables查询数据库所有表的信息。gaussdb=# SELECT * FROM pg_tables;使用gsql的\d+命令查询表的属性。gaussdb=# \d+ customer_t1执行如下命令查询表customer_t1的数据量。gaussdb=# SELECT count(*) FROM customer_t - [删除表中数据](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0032.md): 在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行删除。SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。执行DELETE命令删除行,如删除表customer_t1中所有c_customer_sk为3869的记录 - [查看系统表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0033.md): 除了创建的表以外,数据库还包含很多系统表。这些系统表包含集群安装信息以及GaussDB上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。“系统表和系统视图”中每个表的说明指出了表是对所有用户可见还是只对初始化用户可见。以初始化用户身份登录才能查询只对初始化用户可见的表。GaussDB提供了以下类型的系统表和系统视图: - [管理Schema](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0035.md): Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。 管理Schema包括:创建Schema、使用Schema、删除Schema、设置Schema的搜索路径以及Schema的权限控制。数据库集群包含一个或多 - [管理分区表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0036.md): GaussDB数据库支持的分区表为范围分区表、列表分区表和哈希分区表。范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式被广泛应用,并且分区键经常采用日期,例如将销售数据按照月份进行分区。列表分区表:将数据中包含的键值分别存储在不同的分区中,依次将数据映射到每一个分区,分区中包含的键值由创 - [管理索引](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0037.md): 索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。因此,在创建索引前需评估是否创建索引,需决策索引字段的选择。需要分析应用程序的业务处理、数据使用、经常被用作查询的条件或者被要求排序的字段来确定是否建立索引。索引建立在数据库表中的某些列上。因此,在创建索引时,需要评估目标列的选择标准。可以通过以下条件判断是否创建索 - [管理视图](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0038.md): 当用户需要频繁查询多张表的特定字段组合时,可通过定义视图来避免重复编写查询语句。视图通过虚拟表抽象底层表结构,简化常用查询操作。视图是一种逻辑表,与物理存储的基本表不同,其数据不实际驻留于磁盘。数据库仅保存视图的查询定义,实际数据始终保留在关联的基础表中。当基础表数据发生变更时,视图查询结果将动态同步这些变化。视图如同一个实时数据窗口,允 - [管理序列](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0039.md): 序列Sequence是用来产生唯一整数的数据库对象。声明了NO CYCLE时,序列的值是按照一定规则自增的整数。因为自增所以不重复,因此Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。通过序列使某字段成为唯一标识符的方法有两种:声明字段的类型为表3,由数据库在后台自动创建一个对应的Sequence。使用CREAT - [管理定时任务](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0040.md): 当客户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以客户经常选择在晚上执行,无形中增加了客户的工作量。因此GaussDB Kernel数据库兼容ORA数据库中定时任务的功能,可以由客户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而可以 - [约束设计](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0048.md): 【建议】如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。【建议】给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。【建议】给可以显式命名的约束显式命名。除了NOT NULL和DEFAULT约束外,其他约束都可以显式命名。【建议】从命名上明确标识 - [视图和关联表设计](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0049.md): 【建议】除非视图之间存在强依赖关系,否则不建议视图嵌套。【建议】视图定义中尽量避免排序操作。【建议】表之间的关联字段应该尽量少。【建议】关联字段的数据类型应该保持一致。【建议】关联字段在命名上,应该可以明显体现出关联关系。例如,采用同样名称来命名。 - [SQL编写](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0052.md): 在GaussDB中,建议DDL(建表、COMMENT等)操作统一执行。在批处理作业中尽量避免DDL操作,避免大量并发事务对性能的影响。在非日志表(unlogged table)使用完后,立即执行数据清理(TRUNCATE)操作。因为在异常场景下,GaussDB不保证非日志表(unlogged table)数据的安全性。临时表和非日志表的存 - [开发规范](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0054.md): 如果用户在APP的开发过程中,使用了连接池机制,那么需要遵循如下规范:如果在连接中设置了GUC参数,那么在将连接归还连接池之前,必须使用“SET SESSION AUTHORIZATION DEFAULT;RESET ALL;”将连接的状态清空。如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。否则,连接池里面的连接就是有状 - [获取驱动jar包并配置JDK环境](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0056.md): 环境准备包括获取驱动jar包、配置JDK环境。下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。catGaussDB_driver.z - [开发流程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0057.md): 采用JDBC开发应用程序的流程,如图1所示。其中包括获取驱动jar包并配置JDK1.8、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [连接方式介绍](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0059.md): 连接数据库的方式通常是根据安全性、性能、可扩展性和实现复杂度等因素进行选择的。连接方式介绍如表1所示。 - [以SSL方式连接](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0060.md): 用户通过JDBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯,为敏感数据在Internet上的传输提供一种安全保障手段。本小节中,连接数据库采用的是接口三:DriverManager.getConnection(String url, Properties info)。前置条件:登录GaussDB管理控制台, - [以UDS方式连接](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0061.md): Unix domain socket用于同一主机上不同进程间的数据交换,通过添加junixsocket获取套接字工厂使用。前置条件:引用junixsocket-core-XXX.jar、junixsocket-common-XXX.jar、junixsocket-native-common-XXX.jar,XXX为版本号,引用的这些jar - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0062.md): 本小节中,执行普通SQL语句创建customer_t1表,执行预处理插入语句批量插入数据,执行预处理更新语句更新数据,同时演示创建和调用存储过程。应用程序通过执行SQL语句来操作数据库,支持对XML类型数据进行SELECT、UPDATE、INSERT、DELETE等操作。前置条件是已经连接数据库,连接对象为conn。执行普通SQL语句,创 - [处理结果集](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0063.md): 不同类型的结果集有各自的应用场景,应用程序需要根据实际情况选择相应的结果集类型。在执行SQL语句过程中,需要先创建相应的语句对象,而部分创建语句对象的方法提供了设置结果集类型的功能。java.sql.Connection接口提供的创建语句对象的三种方法如下:ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前,ne - [关闭数据库连接](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0064.md): 在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。关闭数据库连接可以直接调用close方法。很多数据库类如Connection、Statement和ResultSet都有close()方法,在使用完对象后应把它们关闭。Connection对象的关闭将间接关闭所有与它关联的Statement对象,Statement对象的关闭将间接关 - [日志管理](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0065.md): GaussDB JDBC驱动程序支持使用日志记录来帮助解决在应用程序中使用GaussDB JDBC驱动程序时的问题。GaussDB JDBC支持如下两种日志管理方式:对接应用程序使用的SLF4J日志框架。对接应用程序使用的JdkLogger日志框架。SLF4J和JdkLogger是业界Java应用程序日志管理的主流框架,描述应用程序如何使 - [创建和调用存储过程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0066.md): 本示例演示如何连接数据库、创建和调用存储过程。代码运行的前提条件:根据实际情况添加gaussdbjdbc.jar包(例如用户使用IDE执行代码,则需要在本地IDE添加gaussdbjdbc.jar包)。上述示例的运行结果为: - [应用层SQL重试](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0067.md): 当主DN故障且10s未恢复时,GaussDB会自动将对应的备DN升主,使集群正常运行。备升主期间正在运行的作业会失败,备升主后启动的作业不会再受影响。如果要做到DN主备切换过程中,上层业务不感知,可参考此示例构建业务层SQL重试机制。代码运行的前提条件:根据实际情况添加gaussdbjdbc.jar包(例如用户使用IDE执行代码,则需要在 - [逻辑复制](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0068.md): 本节示例演示如何通过JDBC接口使用逻辑复制功能。针对逻辑复制的配置选项,除了参考《特性指南》的“逻辑复制 > 逻辑解码”章节中的配置选项外,还有专门给JDBC等流式解码工具增加的配置项,如下所示:解码线程并行度通过配置选项parallel-decode-num,指定并行解码的Decoder线程数量。取值类型为int型,取值范围为1~20 - [不同场景下配置连接参数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0069.md): 以下示例场景中node代表“host:port”,host为数据库服务器名称或IP地址,port为数据库服务器端口。某客户有两套数据库集群,其中A集群为生产集群,B集群为容灾集群。当客户执行容灾切换时,A集群将降为容灾集群,B集群将升为生产集群。此时为了避免修改配置文件导致的应用重启或重新发版,客户可在初始配置文件时,即将A、B集群写入连 - [java.sql.Connection](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0071.md): java.sql.Connection是数据库连接接口。接口内部默认使用自动提交模式,若通过setAutoCommit(false)关闭自动提交模式,将会导致后面执行的语句受到显式事务包裹,数据库中不支持事务中执行的语句不能在此模式下执行。不支持全密态数据库使用setClientInfo("send_token", null)传输密钥,使 - [java.sql.CallableStatement](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0072.md): java.sql.CallableStatement是存储过程执行接口。不允许含有OUT参数的语句执行批量操作。以下方法是从java.sql.Statement继承而来:close、execute、executeQuery、executeUpdate、getConnection、getResultSet、getUpdateCount、is - [java.sql.DatabaseMetaData](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0073.md): java.sql.DatabaseMetaData是数据库对象定义接口。getPartitionTablePrimaryKeys(String catalog, String schema, String table)方法用于获取分区表含全局索引的主键列,使用示例如下: - [java.sql.Driver](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0074.md): java.sql.Driver是数据库驱动接口。 - [java.sql.PreparedStatement](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0075.md): java.sql.PreparedStatement是预处理语句接口。addBatch()、execute()必须在clearBatch()之后才能执行。调用executeBatch()方法并不会清除batch。用户必须显式使用clearBatch()清除。在添加了一个batch的绑定变量后,用户若想重用这些值(再次添加一个batch), - [java.sql.ResultSet](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0076.md): java.sql.ResultSet是执行结果集接口。一个Statement不能有多个处于“open”状态的ResultSet。用于遍历结果集(ResultSet)的游标(Cursor)在被提交后不能保持“open”的状态。 - [java.sql.ResultSetMetaData](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0077.md): java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。 - [java.sql.Statement](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0078.md): java.sql.Statement是SQL语句接口。通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,会有性能损耗。由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCom - [javax.sql.ConnectionPoolDataSource](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0079.md): javax.sql.ConnectionPoolDataSource是数据源连接池接口。 - [javax.sql.DataSource](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0080.md): javax.sql.DataSource是数据源接口。 - [javax.sql.PooledConnection](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0081.md): javax.sql.PooledConnection是由连接池创建的连接接口。 - [javax.naming.Context](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0082.md): javax.naming.Context是连接配置的上下文接口。 - [javax.naming.spi.InitialContextFactory](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0083.md): javax.naming.spi.InitialContextFactory是初始连接上下文工厂接口。 - [CopyManager](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0084.md): CopyManager是GaussDB JDBC驱动中提供的一个API接口类,用于批量向GaussDB集群中导入数据。CopyManager类位于com.huawei.gaussdb.jdbc.copy Package中,继承自java.lang.Object类,该类的声明如下:public CopyManager(BaseConnect - [PGReplicationConnection](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0085.md): PGReplicationConnection是GaussDB JDBC驱动中提供的一个API接口类,用于执行逻辑复制相关的功能。PGReplicationConnection是逻辑复制的接口,实现类是PGReplicationConnectionImpl,该类位于com.huawei.gaussdb.jdbc.replication P - [PGReplicationStream](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0086.md): PGReplicationStream是GaussDB JDBC驱动中提供的一个API接口类,用于操作逻辑复制流。PGReplicationStream是逻辑复制的接口,实现类是V3PGReplicationStream,该类位于com.huawei.gaussdb.jdbc.core.v3.replication Package中,该类 - [ChainedStreamBuilder](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0087.md): ChainedStreamBuilder是GaussDB JDBC驱动中提供的一个API接口类,用于构建复制流。ChainedStreamBuilder是逻辑复制的接口,实现类是ReplicationStreamBuilder,该类位于com.huawei.gaussdb.jdbc.replication.fluent Package中, - [ChainedCommonStreamBuilder](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0088.md): ChainedCommonStreamBuilder是GaussDB JDBC驱动中提供的一个API接口类,用于为逻辑和物理复制指定通用参数。ChainedCommonStreamBuilder是逻辑复制的接口,实现抽象类是AbstractCreateSlotBuilder,该类的继承类是LogicalCreateSlotBuilder, - [batchMode设置错误](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0091.md): 设置url参数batchMode=on且reWriteBatchedInserts=true,使用JDBC批量插入数据后,提示绑定参数数量与语句需要的参数数量不一致:示例:// conn是已经创建的Connection对象,创建该connection的url参数包含&batchMode=on&reWriteBatchedInserts=t - [数据类型映射关系](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0092.md): 数据类型、JAVA变量类型以及JDBC类型索引关系如下(ORA:Oracle兼容,MYSQL:MySQL兼容): - [开发流程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0095.md): ODBC开发流程如图1所示。其中包括获取源码包、ODBC包以及依赖库、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [SQLAllocEnv](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0101.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLAllocConnect](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0102.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLAllocHandle](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0103.md): 分配环境、连接、语句或描述符的句柄,它替代了ODBC 2.x函数SQLAllocEnv、SQLAllocConnect及SQLAllocStmt。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVA - [SQLAllocStmt](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0104.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参见SQLAllocHandle。 - [SQLBindCol](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0105.md): 将应用程序数据缓冲区绑定到结果集的列中。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLBindCol返回SQL_ERRO - [SQLBindParameter](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0106.md): 将一条SQL语句中的一个参数标志和一个缓冲区绑定起来。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLBindParame - [SQLColAttribute](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0107.md): 返回结果集中一列的描述符信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLColAttribute返回SQL_ERRO - [SQLConnect](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0108.md): 在驱动程序和数据源之间建立连接。连接上数据源之后,可以通过连接句柄访问到所有有关连接数据源的信息,包括程序运行状态、事务处理状态和错误信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID - [SQLDisconnect](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0109.md): 关闭一个与特定连接句柄相关的连接。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当调用SQLDisconnect函数返回SQL_ - [SQLExecDirect](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0110.md): 使用参数的当前值,执行一条准备好的语句。对于一次只执行一条SQL语句,SQLExecDirect是最快的执行方式。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。SQL_ERROR:表示比较严重的错误,如:内存分配 - [SQLExecute](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0111.md): 如果语句中存在参数标记,SQLExecute函数使用参数标记参数的当前值,执行一条准备好的SQL语句。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连 - [SQLFetch](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0112.md): 从结果集中取下一个行集的数据,并返回所有被绑定列的数据。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_NO_DATA:表示SQL语句不返回结果集。SQL_INVALID_HANDLE:表示调用无效句柄 - [SQLFreeStmt](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0113.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLFreeConnect](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0114.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLFreeHandle](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0115.md): 释放与指定环境、连接、语句或描述符相关联的资源,它替代了ODBC 2.x函数SQLFreeEnv、SQLFreeConnect及SQLFreeStmt。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_I - [SQLFreeEnv](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0116.md): 在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参见SQLFreeHandle。 - [SQLPrepare](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0117.md): 准备一个将要进行的SQL语句。需要注意的是,ODBC发送准备好的语句不支持内核复用计划,会导致每次执行都需要重新生成计划,导致CPU占用率高。如果业务对计划复用有需求,建议优先使用JDBC作为客户端。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错 - [SQLGetData](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0118.md): SQLGetData返回结果集中某一列的数据。可以多次调用它来部分检索不定长度的数据。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_NO_DATA:表示SQL语句不返回结果集。SQL_INVALID_ - [SQLGetDiagRec](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0119.md): 返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。SQLGet - [SQLSetConnectAttr](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0120.md): 设置控制连接各方面的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetConnectAttr的返回值为SQL_E - [SQLSetEnvAttr](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0121.md): 设置控制环境各方面的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetEnvAttr的返回值为SQL_ERROR - [SQLSetStmtAttr](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0122.md): 设置相关语句的属性。SQL_SUCCESS:表示调用正确。SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。当SQLSetStmtAttr的返回值为SQL_ERROR或S - [开发流程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0125.md): libpq开发流程如图1所示。其中包含获取发布包、依赖库和头文件、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [PQconnectdbParams](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0129.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数用从两个NULL结束的数组中的参数打开一个新的数据库连接。与PQsetdbLogin不同的是,该函数可以不必更换函数签名(名字)就可以扩展参数集,所以建议应用程序中使用该函数(或者类似的非阻塞变种PQconnectStartParams和P - [PQconnectdb](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0130.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数用conninfo传入的参数打开一个新的连接。传入的参数可以为空,表明使用所有缺省的参数,或者可以包含一个或更多个用空白间隔的参数设置,或者还可以包含一个URL。请参见典型应用开发示例章节。 - [PQbackendPID](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0131.md): PQbackendPID函数返回值在GaussDB中表示后台线程的槽位ID (SlotID),而并非后台线程的BackendPid。由于存在上述差异,不建议按照PostgreSQL同名函数的语义执行。若希望获取该连接的后台PID,可以通过执行系统函数pg_backend_pid获取。同时,依赖libpq的其他驱动程序的同名接口(如Pyth - [PQsetdbLogin](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0132.md): 与数据库服务器建立一个新的连接。PGconn *:指向包含连接的对象指针,内存在函数内部申请。该函数为PQconnectdb前身,参数个数固定,未定义参数被调用时使用缺省值,若需要给固定参数设置缺省值,则可赋值NULL或者空字符串。若dbName中包含“=”或连接URL的有效前缀,则该dbName被看做一个conninfo字符串并传递至P - [PQfinish](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0133.md): 关闭与服务器的连接,同时释放被PGconn对象使用的存储器。若PQstatus判断服务器连接尝试失败,应用程序调用PQfinish释放被PGconn对象使用的存储器,PQfinish调用后PGconn指针不可再次使用。请参见典型应用开发示例章节。 - [PQreset](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0134.md): 重置与服务器的通讯端口。此函数将关闭与服务器的连接并且试图与同一个服务器重建新的连接,并使用所有前面使用过的参数。该函数在连接异常后进行故障恢复时很有用。 - [PQstatus](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0135.md): 返回连接的状态。ConnStatusType:连接状态的枚举,包括:状态可以是多个值之一。但是,在异步连接过程之外只能看到其中两个:CONNECTION_OK和CONNECTION_BAD。与数据库的良好连接状态为CONNECTION_OK,与数据库连接失败状态为CONNECTION_BAD。通常,“正常”状态将一直保持到PQfinish - [PQexec](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0137.md): 向服务器提交一条命令并等待结果。PGresult:包含查询结果的对象指针。应该调用PQresultStatus函数来检查任何错误的返回值(包括空指针的值,在这种情况下它将返回PGRES_FATAL_ERROR)。使用PQerrorMessage获取有关错误的更多信息。命令字符串可以包括多个SQL命令(用分号分隔)。在一个PQexec调用中 - [PQprepare](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0138.md): 用给定的参数提交请求,创建一个预备语句,然后等待结束。PGresult:包含查询结果的对象指针。PQprepare创建一个为PQexecPrepared执行用的预备语句,本特性支持命令的重复执行,不需要每次都进行解析和规划。PQprepare仅在协议3.0及以后的连接中支持,使用协议2.0时,PQprepare将失败。该函数从查询字符串创 - [PQresultStatus](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0139.md): 返回命令的结果状态。PQresultStatus:命令执行结果的枚举,包括:请注意,恰好检索到零行的SELECT命令仍然显示PGRES_TUPLES_OK。PGRES_COMMAND_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES_EMPTY_QUERY响应可能表明客户端软件存在bug。状态为PGRES_NONFA - [PQclear](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0140.md): 释放与PGresult相关联的存储空间,任何不再需要的查询结果都应该用PQclear释放。PGresult不会自动释放,当提交新的查询时它并不消失,甚至断开连接后也不会。要删除它,必须调用PQclear,否则会有内存泄漏。请参见典型应用开发示例章节。 - [PQfnumberEx](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0141.md): 返回与给定列名相关联的列号。列号从0开始。int型整数。 - [PQsendQuery](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0143.md): 向服务器提交一个命令而不等待结果。如果查询成功发送则返回1,否则返回0。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。在成功调用PQsendQuery后,调用PQgetResult一次或者多次获取结果。PQgetResult返回空指针表示命令已执行完成,否则不能再次调用PQsendQuery - [PQsendQueryParams](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0144.md): 给服务器提交一个命令和分隔的参数,而不等待结果。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数等效于PQsendQuery,只是查询参数可以和查询字符串分开声明。函数的参数处理和PQexecParams类似,它不能在2.0版本的协议连接上工作,并且它只允许在查询字符串里出现一条命令。 - [PQsendPrepare](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0145.md): 发送一个请求,创建一个给定参数的预备语句,而不等待结束。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数为PQprepare的异步版本:如果能够分派请求,则返回1,否则返回0。调用成功后,调用PQgetResult判断服务端是否成功创建了preparedStatement。函数的参数与P - [PQsendQueryPrepared](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0146.md): 发送一个请求执行带有给出参数的预备语句,不等待结果。int:执行结果为1表示成功,0表示失败,失败原因存到conn->errorMessage中。该函数类似于PQsendQueryParams,但是要执行的命令是通过命名一个预先准备的语句来指定的,而不是提供一个查询字符串。该函数的参数与PQexecPrepared一样处理。和PQexec - [PQflush](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0147.md): 尝试将任何排队的输出数据刷新到服务器。int:如果成功(或者如果发送队列为空),则返回0;如果由于某种原因失败,则返回-1;如果发送队列中的所有数据都发送失败,则返回1。(此情况只有在连接为非阻塞时才能发生),失败原因存到conn->errorMessage中。在非阻塞连接上发送任何命令或数据之后,调用PQflush。如果返回1,则等待套 - [PQgetCancel](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0149.md): 创建一个数据结构,其中包含取消通过特定数据库连接发出的命令所需的信息。PGcancel:指向包含cancel信息对象的指针。PQgetCancel创建一个给定PGconn连接对象的PGcancel对象。如果给定的conn是NULL或无效连接,它将返回NULL。PGcancel对象是一个不透明的结构,应用程序不能直接访问它,它只能传递给PQ - [PQfreeCancel](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0150.md): 释放PQgetCancel创建的数据结构。PQfreeCancel释放一个由前面的PQgetCancel创建的数据对象。 - [PQcancel](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0151.md): 要求服务器放弃处理当前命令。int:执行结果为1表示成功,0表示失败,失败原因存到errbuf中。成功发送并不保证请求将产生任何效果。如果取消有效,当前命令将提前终止并返回错误结果。如果取消失败(例如,因为服务器已经处理完命令),无返回结果。如果errbuf是信号处理程序中的局部变量,则可以安全地从信号处理程序中调用PQcancel。就P - [连接参数说明](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0152.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [开发流程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0154.md): 采用Psycopg2开发应用程序的流程,如图1所示。其中包括加载驱动、连接数据库、执行SQL语句、处理结果集、关闭连接五个部分。 - [Psycopg包](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0155.md): 下载表1中的驱动包和驱动包校验包。为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下:Linux操作系统软件包完整性校验:上传软件包和软件包校验包到虚拟机的同一目录下。执行如下命令,校验软件包完整性。catGaussDB_driver.zip.sha256| sha256sum -- - [示例:常用操作](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0156.md): LoggingConnection默认记录所有SQL信息,且不会对敏感信息进行脱敏,可通过filter函数自行定义输出的SQL内容。日志功能是psycopg2为了方便开发者显性调试全量SQL而提供的额外功能,默认情况下不需要使用。该功能会在pyscopg2执行SQL语句前打印SQL语句,但是,需要在debug日志级别下才会输出。该功能不是 - [psycopg2.connect()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0158.md): 此方法创建新的数据库会话并返回新的connection对象。connection对象(连接数据库实例的对象)。请参见示例:常用操作。 - [connection.cursor()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0159.md): 此方法用于返回新的cursor对象。cursor对象(用于整个数据库使用Python编程的cursor)。请参见示例:常用操作。在Psycopg2中,当数据库创建游标对象时默认开启事务,该游标下执行的SQL命令都在该事务中。该事务提交和回滚由connection对象处理。 - [cursor.execute(query,vars_list)](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0160.md): 此方法执行被参数化的SQL语句(即占位符,而不是SQL文字)。psycopg2模块支持用%s标志的占位符。无请参见示例:常用操作。 - [cursor.executemany(query,vars_list)](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0161.md): 此方法执行SQL命令所有参数序列或序列中的SQL映射。无请参见示例:常用操作。 - [connection.commit()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0162.md): 此方法将当前挂起的事务提交到数据库。默认情况下,Psycopg在执行第一个命令之前打开一个事务,如果不调用commit(),任何数据操作的效果都将丢失。无无请参见示例:常用操作。 - [connection.rollback()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0163.md): 此方法回滚当前挂起事务。执行关闭连接“close()”而不先提交更改“commit()”将导致执行隐式回滚。无无请参见示例:常用操作。 - [cursor.fetchone()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0164.md): 此方法提取查询结果集的下一行,并返回一个元组。无单个元组,为结果集的第一条结果,当没有更多数据可用时,返回为“None”。请参见示例:常用操作。 - [cursor.fetchall()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0165.md): 此方法获取查询结果的所有(剩余)行,并将它们作为元组列表返回。无元组列表,为结果集的所有结果。空行时则返回空列表。请参见示例:常用操作。 - [cursor.close()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0166.md): 此方法关闭当前连接的游标。无无请参见示例:常用操作。 - [connection.close()](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0167.md): 此方法关闭数据库连接。此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。无无请参见示例:常用操作。 - [开发流程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0169.md): ecpg整体开发流程包括准备相关组件、编写嵌入式SQL-C程序、通过ecpg进行预处理、编译C程序以及执行C程序。如下图图1所示。其中,嵌入式SQL-C程序开发流程如图图2所示。 - [ecpg组件介绍](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0170.md): ecpg支持平台ecpg支持平台操作系统平台EulerOS V2.0SP5x86_64位EulerOS V2.0SP9ARM64位Kylin V10x86_64位Kylin V10ARM64位ecpg组件ecpg:用于对嵌入式SQL-C进行预处理的可执行二进制文件。libecpg:为ecpg提供连接、执行SQL、事务等实现的动态库,包括l - [ecpg预处理以及编译执行](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0171.md): 准备嵌入式SQL-C源程序,以.pgc为后缀名,ecpg负责将其转换成可被编译器编译的C语言程序。生成的C语言程序被gcc编译器编译为可执行文件,运行该可执行文件实现客户端程序访问数据库。示例请参见常用示例章节。ecpg预处理以及编译处理过程预处理:ecpg -I $GAUSSHOME/include -o test.c test.pgc - [连接数据库](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0173.md): 使用如下语句连接数据库:target可以通过如下方法声明,斜体部分为变量,请根据实际情况进行修改:dbname[@hostname][:port]tcp:gaussdb://hostname[:port][/dbname][?options]unix:gaussdb://hostname[:port][/dbname][?options] - [管理连接](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0174.md): 嵌入式SQL程序中的SQL语句默认是在当前连接(最近打开的那一个)上执行。如果一个应用需要管理多个连接,那么有以下两种方法。方法1:为每个SQL语句明确选择一个连接:EXEC SQL AT connection-name SELECT ...;适合于应用程序需以混合顺序使用多个连接的情况。如果应用程序创建多个执行线程,它们不能共享同一个连 - [执行SQL语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0176.md): 完整使用示例: - [使用游标](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0177.md): 使用游标可以检索出多行的结果集,应用程序必须声明一个游标并且从游标中抓取每一行数据。在开启GUC参数enable_ecpg_cursor_duplicate_operation(默认开启)的情况下,使用ECPG连接ORA兼容数据库时,允许通过如下方式重复打开/关闭游标:更多游标的使用细节请参见DECLARE,关于FETCH命令的细节请参见 - [事务管理](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0178.md): 在ecpg缺省模式下,语句只有在EXEC SQL COMMIT发出的时候才被提交,嵌入的SQL接口也支持事务的自动提交(通过EXEC SQL SET AUTOCOMMIT TO ON语句设置自动提交)。在自动提交模式下,每条命令都是自动提交的,除非它们包围在一个明确的事务块里。自动提交模式可以用EXEC SQL SET AUTOCOMMI - [预备语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0179.md): 当传递给SQL语句的值在编译时未知或者同一语句将被使用多次时,可以使用预备语句。使用命令PREPARE准备语句。对于未知的值使用占位符"?":EXEC SQL PREPARE stmt1 FROM "SELECT oid, datname FROM pg_database WHERE oid = ?";如果一个语句返回单行,应用程序可以在 - [ALLOCATE DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0181.md): 分配一个新命名的SQL描述符区域。nameSQL描述符名称。大小写敏感,是一个SQL标识或者一个宿主变量。DEALLOCATE DESCRIPTOR,GET DESCRIPTOR,SET DESCRIPTOR - [CONNECT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0182.md): 在客户端和SQL服务器之间建立连接。connection_target以下列形式之一指定连接的目标服务器:[ database_name ] [ @host ] [ :port ]:通过TCP/IP连接。unix:gaussdb://host [ :port ] / [ database_name ] [ ?connection_opti - [DEALLOCATE DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0183.md): 释放SQL描述符区域。nameSQL描述符名称。大小写敏感,是一个SQL标识符或一个宿主变量。ALLOCATE DESCRIPTOR,GET DESCRIPTOR,SET DESCRIPTOR - [DECLARE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0184.md): 声明一个游标用于迭代预备语句的结果集。该命令与SQL命令的DECLARE在语义上略有不同,后者执行查询并准备结果集以便检索,而嵌入式SQL命令只是将一个名称声明为“循环变量”并用于在查询的结果集上迭代,实际在使用OPEN命令打开游标时执行。cursor_name游标名称,大小写敏感。可以是一个SQL标识符或者一个宿主变量。游标名称,大小写 - [DESCRIBE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0185.md): 检索预准备语句中包含的结果列的元数据信息。prepared_name预备语句名称可以是一个SQL标识符或者宿主变量。预备语句名称可以是一个SQL标识符或者宿主变量。descriptor_name描述符名称,大小写敏感。可以是SQL标识符或者宿主变量。描述符名称,大小写敏感。可以是SQL标识符或者宿主变量。sqlda_nameSQLDA变量 - [DISCONNECT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0186.md): 关闭一个(或所有)与数据库的连接。connection_name由CONNECT命令建立的数据库连接名称。由CONNECT命令建立的数据库连接名称。current关闭“当前的”连接,它可以是最近打开的连接或者是由SET CONNECTION命令设置的连接。如果没有参数被传给DISCONNECT命令,它作为默认值。关闭“当前的”连接,它可以 - [EXECUTE IMMEDIATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0187.md): 预备并且执行动态指定的SQL语句,不检索结果行。string包含要被执行的SQL语句的C字符串或者宿主变量。使用EXECUTE IMMEDIATE和名为command的宿主变量执行INSERT语句:sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: - [GET DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0188.md): 检索查询结果集的信息,并且将它存储到宿主变量中。在使用该命令将信息传递给宿主语言变量之前通常使用FETCH或者SELECT填充标识符区域。该命令有两种形式:检索描述符的“头部”项,适用于全面查看结果集。列号作为附加参数,检索特定列的信息。检索描述符的“头部”项,适用于全面查看结果集。列号作为附加参数,检索特定列的信息。descriptor - [OPEN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0189.md): 打开一个游标,并将实际值选择性地绑定到游标声明中的占位符。该游标必须事先使用DECLARE命令声明过。执行OPEN命令会触发在服务器上开始执行查询。cursor_name被打开的游标的名称。可以是一个SQL标识符或者一个宿主变量。被打开的游标的名称。可以是一个SQL标识符或者一个宿主变量。value被绑定到游标中一个占位符的值。可以是一个 - [PREPARE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0190.md): 准备用于执行的语句。name预备查询标识符。预备查询标识符。string包含预备语句的文本C字符串或者宿主变量,预备语句包含SELECT、INSERT、UPDATE或者DELETE命令之一。包含预备语句的文本C字符串或者宿主变量,预备语句包含SELECT、INSERT、UPDATE或者DELETE命令之一。ecpg提供的prepare语句 - [SET AUTOCOMMIT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0191.md): 设置当前数据库会话的自动提交行为。默认情况下,嵌入式SQL程序不自动提交,因此需要显式地发出COMMIT。这个命令可以把会话改成自动提交模式,这样每一个单独的语句都会被隐式提交。 - [SET CONNECTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0192.md): 设置一个数据库连接。connection_name通过CONNECT命令创建数据库连接名字。通过CONNECT命令创建数据库连接名字。CONNECT,DISCONNECT - [SET DESCRIPTOR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0193.md): 在SQL描述符区域中设置信息,描述符区域通常用于绑定预备查询执行中的参数。该命令有两种形式:适用于描述符“头部”,它独立于特定的数据。为由数字标识的特定数据赋值。适用于描述符“头部”,它独立于特定的数据。为由数字标识的特定数据赋值。descriptor_name描述符名称。描述符名称。descriptor_header_item标记识别设 - [TYPE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0194.md): 定义一个新的数据类型。当运行带有-c选项的ecpg的时候,仅仅标识该命令。type_name数据类型名称。ctypeC语言数据类型说明。使用EXEC SQL TYPE的示例(注意以下示例使用时在ecpg预处理阶段需要添加-c参数):#include #include #include #include #include int main(void) - [查询结果集](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0197.md): 返回单行结果的SELECT语句可以直接使用EXEC SQL执行,请参见执行SQL命令章节。示例:/* 首先建立一个表并插入数据 */ EXEC SQL CREATE TABLE test_table (number1 integer, number2 integer); EXEC SQL INSERT INTO test_table (n - [关闭数据库连接](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0198.md): 数据库使用完成后关闭数据库连接。使用如下语句关闭连接:EXEC SQL DISCONNECT [connection];connection可通过如下方法声明:connection-name(连接名)default(缺省)current(当前)all(所有)connection-name(连接名)default(缺省)current(当前 - [概述](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0200.md): 在嵌入式SQL中进行C语言程序和SQL语句之间的数据传递不需要把数据粘贴到语句中,只需要在SQL语句里写上C语言变量的名称,前缀加一个冒号即可。示例如下:EXEC SQL INSERT INTO sometable VALUES (:v1, 'foo', :v2);这个语句引用了两个C语言变量:v1和v2,并且使用一个普通的SQL字串文本 - [声明段](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0201.md): 要实现嵌入式SQL-C程序和数据库间的数据交互(例如:从SQL-C程序把查询语句中的参数传递给数据库,或者从数据库向嵌入式SQL-C程序传回数据),需要在特殊的标记段里面声明包含此数据的C语言变量,以便预处理器能够识别。标记段以下面的代码开始:EXEC SQL BEGIN DECLARE SECTION;以下面的代码结束:EXEC SQL - [检索查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0202.md): 对于常用的检索查询,嵌入式SQL提供了常规命令SELECT和FETCH的特殊变体。这些命令使用特殊的INTO子句,用以指定检索出来的数值存储在哪些宿主变量里。SELECT用于返回单行的查询,FETCH用于使用游标返回多行的查询。使用SELECT/* * 假定有这个表: * CREATE TABLE test1 (a int, - [类型映射](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0203.md): 当ecpg应用程序在GaussDB服务器和C语言程序之间交换值时(例如:从服务器检索查询结果或者执行带有输入参数的SQL语句),在GaussDB数据类型和宿主语言变量类型(具体的C语言数据类型)之间需要进行值的转换。有两种数据类型可以使用:简单的GaussDB数据类型,如integer和text,可以直接被应用程序读取和写入。其他Gaus - [处理字符串](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0204.md): 处理SQL字符串数据类型(例如:varchar、text),有两种方式来声明宿主变量:方式一:使用char[](一个char字符串),C语言程序中处理字符数据最常见的方式。EXEC SQL BEGIN DECLARE SECTION; char str[50]; EXEC SQL END DECLARE SECTION;注意字符串 - [使用非初级类型的宿主变量](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0205.md): 非初级类型的宿主变量包括数组、typedef、结构体和指针类型的宿主变量。数组有两种将数组作为宿主变量的情况。第一种情况是在char[]或者VARCHAR[]中存储一些文本字符串。第二种情况是可在检索多行查询结果时不使用游标。如果不使用数组,则处理多行查询结果时必须使用游标以及FETCH命令。但是如果使用数组类型作为宿主变量,则一次可以检 - [访问特殊数据类型](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0206.md): ecpg支持numeric、decimal、date、timestamp和interval数据类型。由于这些数据类型的内部结构较为复杂,无法被映射到初级数据类型的宿主变量,因此应用程序通过声明特殊类型的宿主变量以及使用pgtypes库中的函数处理这些特殊类型。pgtypes库中的接口函数请参见ecpg接口参考章节。timestamp、da - [处理非初级SQL数据类型](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0207.md): 本节介绍如何处理ecpg应用中非标量以及用户定义的SQL级别的数据类型。注意此处和使用非初级类型的宿主变量章节中介绍的对于非初级类型的宿主变量的处理不同。数组ecpg不直接支持多维SQL级别数组。一维SQL数组可以被映射到C语言数组类型的宿主变量,反之亦然。但是在创建语句时,如果ecpg并不知道列的类型,则将无法检查C语言数组是否是SQL - [执行没有结果集的语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0209.md): 执行EXECUTE IMMEDIATE命令示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "CREATE TABLE test1 (...);"; EXEC SQL END DECLARE SECTION; EXEC SQL EXECUTE IMMEDIATE - [执行具有输入参数的语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0210.md): 准备一个普通语句,通过替换参数(在想要替换参数的地方输入问号)执行它的特定版本。使用EXECUTE语句通过USING子句给定参数执行准备语句。示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "INSERT INTO test1 VALUES(?, ?);"; EXEC - [执行带有结果集的语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0211.md): 执行具有单独结果集的SQL语句,可以使用EXECUTE。若要保存结果,则增加INTO子句。示例如下:EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "SELECT a, b, c FROM test1 WHERE a > ?"; int v1, v2; VARC - [设置回调](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0213.md): 设置回调操作,当告警或者错误发生时,直接执行具体操作进行处理,设置回调命令如下:EXEC SQL WHENEVER condition action;condition取值范围:SQLERROR:当在SQL语句执行期间发生错误时,调用指定操作。SQLWARNING:当在SQL语句执行期间发生告警时,调用指定操作。NOT FOUND:当SQ - [sqlca](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0214.md): 嵌入式SQL接口提供了sqlca(SQL通信区)的全局变量。sqlca包含告警和错误信息。如果在语句执行期间发生多个告警和错误,那么sqlca将只保存最后一个信息。在一个多线程的程序中,每一个线程会自动得到它的sqlca副本。数据结构如下:struct { char sqlcaid[8]; long sqlabc; - [SQLSTATE与SQLCODE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0215.md): SQLSTATE是一个由五个字符组成的数组。这五个字符包含数字或大写字母,它表示多种错误或告警情况的代码。SQLSTATE具有一种层次模式:前两个字符表示情况的总体分类,后三个字符表示总体情况的子类。例如:代码00000表示成功状态。SQLCODE是一个简单的整数形式。值为0表示成功,一个正值表示带附加信息的成功,一个负值表示错误。SQL - [包含文件](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0217.md): 将外部文件包含到嵌入SQL程序中,可使用如下语句:EXEC SQL INCLUDE filename; EXEC SQL INCLUDE ; EXEC SQL INCLUDE "filename";ecpg预处理器按照如下顺序搜索文件:当前目录/usr/local/includeGaussDB的目录,在编译时定义/us - [ifdef、ifndef、else、elif和endif指令](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0218.md): ecpg提供了ifdef、ifndef、else、elif和endif条件编译指令。在预处理时,按照不同的条件去编译程序的不同部分,使用时,需要添加EXEC SQL前缀关键字。 - [define和undef指令](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0219.md): 在嵌入式SQL程序中也可以使用C语言版本的#define和#undef。区别在于定义的值会在哪里被计算,如果使用EXEC SQL DEFINE,那么ecpg预处理阶段会计算这些定义并替换值。如果使用C语言版本的#define和#undef,那么会在编译器处理阶段会计算这些定义并替换值。不能把#define用于一个将要在嵌入式SQL查询中使 - [使用库函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0220.md): ECPGdebug(int on, FILE *stream):若函数第一个参数为非0,则开启调试日志,第二个参数表示要打印日志的标准输出流。调试日志在标准输出流上执行,日志包含所有输入的SQL语句以及来自GaussDB服务器的结果。示例:#include #include #include AND>OR。运算规则请参见表1,表中的a和b代表逻辑表达式。操作符AND和OR具有交换性,即交换左右两个操作数,不影响其结果。不支持对XML类型数据进行操作。 - [比较操作符](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0357.md): 大部分数据类型都可用比较操作符进行比较,并返回一个布尔类型的值。比较操作符均为双目操作符,被比较的两个数据类型必须是相同的数据类型或者是可以进行隐式转换的类型。GaussDB提供的比较操作符请参见表1。当比较操作符(<=、<>、>=、^=)中间存在空格时,也可以识别成没有空格进行正常操作。!=中间存在空格时,!会被识别为阶乘,可能会导致结 - [模式匹配操作符](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0361.md): 数据库提供了三种独立的实现模式匹配的方法:SQL LIKE操作符、SIMILAR TO操作符和POSIX-风格的正则表达式。除了这些基本的操作符外,还有一些函数可用于提取或替换匹配子串并在匹配位置分离一个串。描述:判断字符串是否能匹配上LIKE后的模式字符串。如果字符串与提供的模式匹配,则LIKE表达式返回为真(NOT LIKE表达式返回 - [SEQUENCE函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0370.md): 序列函数为用户从序列对象中获取后续的序列值提供了简单的多用户安全的方法。描述:递增序列并返回新值。为了避免从同一个序列获取值的并发事务被阻塞, nextval操作不会回滚;即一旦值被抓取就认为其已经被使用过,并且不会再被返回。 即使该操作处于事务中,当事务之后中断,或者如果调用查询结束不使用该值,也是如此。这种情况将在指定值的顺序中留下未 - [窗口函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0374.md): 窗口函数与OVER语句一起使用。OVER语句用于对数据进行分组,并对组内元素进行排序。窗口函数用于给组内的值生成序号。窗口函数中的order by后面必须跟字段名,若order by后面跟数字,该数字会被按照常量处理,因此对目标列没有起到排序的作用。当父查询中包含子查询中的窗口函数的过滤条件时,支持将父查询中的过滤条件下推到子查询中。只支 - [安全函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0375.md): 描述:使用基于keystr派生出的密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,并且至少包含大写字母、小写字母、数字和特殊字符中的三种字符。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATET - [账本数据库的函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0376.md): 描述:返回指定防篡改用户表的表级数据hash值。该函数仅供分布式节点间调用,所有用户调用均提示权限不足。参数类型:text返回值类型:hash16描述:校验指定防篡改用户表的表级数据hash值与其对应历史表hash一致性。参数类型:text返回值类型:Boolean示例:描述:修复指定防篡改用户表对应的历史表hash值,使之与用户表has - [密态函数和操作符](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0377.md): 描述:将输入转码转化成内部byteawithoutorderwithequalcol形式。参数类型:cstring返回值类型:byteawithoutorderwithequalcol描述:将内部byteawithoutorderwithequalcol类型的数据转码转化为cstring类型。参数类型:byteawithoutorderw - [条件表达式函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0379.md): 描述:返回参数列表中第一个非NULL的参数值。COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。示例:备注:如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。它常用于在显示数据时用缺省值替换NULL。和CASE表达 - [配置设置函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0382.md): 配置设置函数是可以用于查询以及修改运行时配置参数的函数。描述:当前的设置值。返回值类型:text备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如:描述:通过切换授权版本号来更新和升级高斯数据库的新特性。返回值类型:void描述:为shell类型输入路由(那些尚未填充 - [通用文件访问函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0383.md): 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。描述:列出目录中的文件。返回值类型:setof text备注:pg_ls - [服务器信号函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0384.md): 服务器信号函数向其他服务器线程发送控制信号。仅系统管理员有权执行以下函数。描述:取消一个后端线程正在执行的语句。返回值类型:Boolean备注:pg_cancel_backend向由pid标识的后端线程发送一个查询取消(SIGINT)信号。一个活动的后端线程的PID可以从PG_STAT_ACTIVITY视图的pid字段找到,或者在服务器上 - [双集群容灾控制函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0386.md): 描述:基于流式复制的异地容灾解决方案中主集群在执行计划内switchover过程中截断业务的接口。返回值类型:Boolean,表明此次业务截断是否成功,是否可以正常进行switchover流程。 - [双集群容灾查询函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0387.md): 描述:两地三中心跨Region容灾特性开启后,主集群和灾备集群进行日志同步,通过barrier日志在主集群的落盘,在灾备集群的回放来确定主集群归档日志进度与灾备集群日志回放进度。gs_get_local_barrier_status用于查询灾备集群每个节点当前的日志回放情况。返回值类型:textbarrier_id:灾备集群某节点当前回放 - [快照同步函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0388.md): 快照同步函数是导出当前快照的标识符。描述:保存当前的快照并返回它的标识符。返回值类型:text备注:函数pg_export_snapshot保存当前的快照并返回一个文本字符串标识此快照。这个字符串必须传递给想要导入快照的客户端。可用在set transaction snapshot snapshot_id时导入snapshot,但是应用的 - [咨询锁函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0390.md): 咨询锁函数用于管理咨询锁(Advisory Lock)。描述:获取会话级别的排他咨询锁。返回值类型:void备注:pg_advisory_lock锁定应用程序定义的资源,该资源可以用一个64位或两个不重叠的32位键值标识。如果已经有另外的会话锁定了该资源,则该函数将阻塞到该资源可用为止。这个锁是排他的。多个锁定请求将会被压入栈中,因此,如 - [逻辑复制函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0391.md): 使用逻辑复制函数时,需要设置GUC参数wal_level为logical。具体配置请参考《特性指南》的“逻辑解码 > 使用SQL函数接口进行逻辑解码”章节。描述:创建逻辑复制槽。参数说明:slot_name流复制槽名称。取值范围:字符串,仅支持小写字母、数字以及“_”,“?”,“-”,“.”字符,且不支持“.”或“..”单独作为复制槽名称 - [段页式存储函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0392.md): 在AStore存储引擎下创建段页式表,需要在创建数据表时指定参数segment=on。例如:CREATE TABLE t1(id int) WITH (segment=on, storage_type=astore);段页式存储函数相关字段取值说明:forknum:数据文件分支。取值范围:【0:mainfork;1:fsmfork; 2: - [bucket系统函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0393.md): 描述:获取完整的迁移计划。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。参数说明:返回值说明:示例:描述:获取日志流传输状态。只支持在扩容期间调用;只支持管理员权限用户查询。参数:void返回值说明:示例:描述:设置当前正在hashbucket重分布的数据库和bucketgroup。只支持在扩容期间调用;只支持管理员权 - [Undo系统函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0394.md): 如需确认当前回滚段使用的存储方式,可以通过查询gs_global_config系统表的undostoragetype字段确认:segpage表示段页式,预留参数,暂不支持;page表示页式。示例:gaussdb=#SELECT * FROM gs_global_config where name like '%undostoragetyp - [其他函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0395.md): 描述:检查连接池中缓存的连接数据是否与pgxc_node一致。返回值类型:Boolean描述:更新连接池中缓存的连接信息。返回值类型:Boolean描述:对所有存活的CN,更新连接池中缓存的连接信息。返回值类型:void描述:为备份操作给集群加锁,这些备份是为在新增节点上做恢复。返回值类型:Booleanpgxc_lock_for_bac - [SPM计划管理函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0396.md): 当前SPM计划管理特性在分布式下不支持,所以在分布式下调用下面的这些函数都会给出分布式下不支持的错误提示。描述:GS_SPM_EVOLUTE_PLAN属于DBE_SQL_UTIL schema,是SPM特性用于计划演进的接口函数。参数:参数介绍见表1 GS_SPM_EVOLUTE_PLAN入参和返回值列表。返回值类型:boolean描述: - [触发器函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0398.md): 描述:获取触发器的定义信息。参数:待查触发器的OID。返回值类型:text示例:描述:获取触发器的定义信息。参数:待查触发器的OID及是否以pretty方式展示。仅在创建trigger时指定WHEN条件的情况下,布尔类型参数才生效。返回值类型:text示例: - [HashFunc函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0399.md): 描述:对abstime格式的数值value计算hash值并找到对应的hashbucket桶。参数:value为需要转换的数值,类型为abstime,flag为int类型表示数据分布方式,0表示hash分布。返回值类型:int32示例:描述:对boolean格式的数值value计算hash值并找到对应的hashbucket桶。参数:valu - [提示信息函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0400.md): 描述:PL执行过程中,可以使用此函数来抛ERROR。返回值类型:void示例 - [故障注入系统函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0401.md): 描述:该函数不能调用,调用时会报WARNING信息:"unsupported fault injection",并不会对数据库产生任何影响和改变。参数:int64注入故障类型(0:CLOG扩展页面;1:读取CLOG页面;2:强制死锁)。text第二个入参在第一入参为2的模式下若为“1”则死锁,其余不死锁;第二个入参在第一入参为0、1时,表 - [重分布函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0402.md): 以下函数为重分布期间gs_redis工具所用的系统函数,用户不要主动调用:pg_get_redis_rel_end_ctid(text, name, int, int)pg_get_redis_rel_start_ctid(text, name, int, int)pg_enable_redis_proc_cancelable()pg_d - [分布列推荐函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0403.md): 分布列推荐针对的是在分布式数据库下分布列以及分布方式的推荐,目的是在进行业务迁移或业务上线时,减少选择表分布列的人力成本。描述:初始化参数。返回值类型:Boolean描述:设置启发式规则不同成分的权重,调用init的时候会设置一个默认参数,分析时可以不调用该函数。返回值类型:Boolean此函数非必须调用,在执行init函数的时候,会预置 - [内部函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0405.md): GaussDB中下列函数使用了内部数据类型,用户无法直接调用,在此章节列出。GsDiskANN索引内部函数diskannbeginscandiskannbuilddiskannbuildemptydiskannbulkdeletediskanninsertdiskanncostestimatediskannendscandiskannop - [AI特性函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0406.md): 描述:获取返回值为布尔型的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。参数:模型名称和推断任务的输入列。返回值类型:bool描述:获取返回值为float4的模型进行模型推断任务。此函数为内部调用函数,建议直接使用语法PREDICT BY进行推断任务。参数:模型名称和推断任务的输入列。返回值 - [敏感数据发现函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0407.md): 描述:扫描目标数据,返回统计的扫描结果。参数:scan_target:指定扫描对象,取值必须是schema、table或column的名称,但必须指定扫描对象的上级名称,比如扫描某列传入扫描对象为schema_name.table_name.column_name。scan_classifier:指定使用的分类器,支持指定email、cr - [动态数据脱敏函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0408.md): 描述:将col字符串后四位之前的数字使用letter替换。参数:待替换的字符串、替换字符。返回值类型:text描述:将col字符串中第一个'@'之前的字符使用letter替换。参数:待替换的字符串、替换字符。返回值类型:text描述:将col字符串中出现最后一个'.'之前的字符(除'@'外)使用letter替换。参数:待替换的字符串、替换 - [hotkey特性函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0409.md): 描述:获取本地节点查询的热词信息。返回值类型:Tuple示例:描述:清理hotkey缓存,重置hotkey状态信息。返回值类型:bool,恒为true示例: - [Global SysCache特性函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0410.md): 描述:查看数据库里全局系统缓存的表元数据。调用该函数的用户需要具有SYSADMIN权限。参数:指定需要查看全局系统缓存的数据库和表,database_id默认值NULL或者-1表示所有的数据库,0表示共享表,其他数字表示指定数据库及共享表,rel_id表示指定表的oid,默认值NULL或者-1表示所有的表,其他值表示指定的表,databa - [数据损坏检测修复函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0411.md): 修复主机备机文件页面的约束概述:文件类型文件页面级别主备机检测修复普通行存表(Astore,Ustore),段页式表,不包括索引、压缩表文件&页面主机手动检测手动修复。undo(不包括 undo meta)页面主机手动检测手动修复(不包括analyse verify)。unlogged表的init fork文件文件主机手动检测手动修复。普 - [XML类型函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0412.md): 以下所有XML类型函数中,当GUC参数xmloption为content时,XML声明中encoding值可以取为ZHS16GBK;当GUC参数xmloption为document时,XML声明中encoding值不可以取为ZHS16GBK,若设置encoding = ZHS16GBK,则会发生报错。描述:使用函数xmlparse,从字符 - [XMLTYPE类型函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0413.md): 描述:varchar2类型入参,静态方法创建xmltype类型。参数:第一个参数要转换成xmltype的字符串(必传字段),第二个参数为用于使输入符合给定架构的可选架构URL(可选字段,默认为空,暂不生效),第三个参数为指示实例根据给定的XML架构有效的标志(可选字段,默认为0,暂不生效),第四个参数为是否为良构的标识(可选字段,默认为0 - [数据透视函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0414.md): 描述:扩展接口,用于处理表数据,包括数据透视函数。仅系统管理员可以安装扩展。需要安装扩展,默认安装到public schema,建议安装到用户schema,create extension tablefunc [schema {user_schema}]。扩展功能为内部使用功能,不建议用户使用。描述:以source_sql的结果为源数据, - [通用标识符函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0415.md): 描述:产生并返回一个全局唯一的标识符,由16个字节组成,生成的标识符有当前机器IP、生成时间戳和随机数,由以上标识符组成一个全局唯一的uuid。参数:无。返回值类型:raw示例:描述:返回一个根据RFC 4122、ISO/IEF 9834-8:2005以及相关标准定义的通用唯一标识符(UUID)。这个标识符是一个小写十六进制数字的字符串, - [SQL限流函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0416.md): 描述:创建一条SQL限流规则。需要具有sysadmin权限的用户才可执行。只支持在CN节点上执行。参数:参数介绍请参见表1 gs_add_workload_rule参数说明。返回值类型:int8示例:描述:更新一条SQL限流规则,需要重新设置全部参数,不支持只指定部分参数。需要具有sysadmin权限的用户才可执行。只支持在CN节点上执行 - [废弃函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0417.md): GaussDB中下列函数在当前版本中已废弃:gs_wlm_get_session_infogs_wlm_get_user_session_infocheck_engine_statusencode_plan_nodemodel_train_optgs_stat_get_wlm_plan_operator_infotrack_model_t - [简单表达式](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0419.md): 逻辑表达式的操作符和运算规则,请参见逻辑操作符。常用的比较操作符,请参见比较操作符。除比较操作符外,还可以使用以下句式结构:BETWEEN操作符:a BETWEEN x AND y等效于a >= x AND a <= ya NOT BETWEEN x AND y等效于a < x OR a > ya BETWEEN x AND - [条件表达式](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0420.md): 在执行SQL语句时,可通过条件表达式筛选出符合条件的数据。条件表达式主要有以下几种:CASECASE表达式是条件表达式,类似于其他编程语言中的CASE语句。CASE表达式的语法图如图1所示。case::=CASE子句可以用于合法的表达式中。condition是一个返回BOOLEAN数据类型的表达式:如果结果为真,CASE表达式的结果就是符 - [子查询表达式](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0421.md): 子查询表达式主要有以下几种:EXISTS/NOT EXISTSEXISTS/NOT EXISTS的语法图如图1所示。EXISTS/NOT EXISTS::=EXISTS的参数是一个任意的SELECT语句,即子查询。系统对子查询进行运算以判断它是否返回行。如果它至少返回一行,则EXISTS结果就为“真”;如果子查询没有返回任何行, EXIS - [数组表达式](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0422.md): expressionIN(value [, ...])右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。示例如下:如果表达式结果为null,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空 - [行表达式](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0423.md): 语法:row_constructor operator row_constructor两边都是一个行构造器,两行值必须具有相同数目的字段,每一行都进行比较,行比较允许使用=,<>,<,<=,>=等操作符,或其中一个相似的语义符。对于<,<=,>,> =的情况下,行中元素从左到右依次比较,直到遇到一对不相等的元素或者一对为空的元素。如果这对 - [时间间隔表达式](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0424.md): 语法: INTERVAL EXPR UNIT说明:EXPR表示数值,UNIT说明符用于解释数值的单位,如HOUR、DAY、WEEK等。关键字INTERVAL和说明符不区分大小写。时间间隔表达式中UNIT的取值范围如下表1所示,允许任何标点符号分隔EXPR格式。表1中显示的是建议的分隔符。INTERVAL表达式仅在sql_compatibi - [伪列](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0425.md): ROWNUM是一个伪列,它返回一个数字,表示从查询中获取结果的行编号。第一行的ROWNUM为1,第二行的为2,以此类推,使用ROWNUM来限制查询返回的行数,如以下示例所示:gaussdb=# CREATE TABLE Students (name varchar(20), id int) with (STORAGE_TYPE = UST - [概述](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0427.md): 在SQL语言中,每个数据都与一个决定其行为和用法的数据类型相关。GaussDB提供一个可扩展的数据类型系统,该系统比其它SQL实现更具通用性和灵活性。因此,GaussDB中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。GaussDB扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大 - [操作符](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0428.md): 从系统表pg_operator中选出要考虑的操作符。如果可以找到一个参数类型以及参数个数都一致的操作符,那么这个操作符就是最终使用的操作符。如果找到了多个备选的操作符,将从中选择一个最合适的。寻找最优匹配。抛弃那些输入类型不匹配并且也不能隐式转换成匹配的候选操作符。unknown文本在这种情况下可以转换成任何东西。如果只剩下一个候选项,则 - [函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0429.md): 从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名称,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。查找和输入参 - [值存储](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0430.md): 查找与目标字段准确的匹配。试着将表达式直接转换成目标类型。如果已知这两种类型之间存在一个已注册的转换函数,那么直接调用该转换函数即可。如果表达式是一个未知类型文本,该文本字符串的内容将交给目标类型的输入转换过程。检查目标类型是否有长度转换。长度转换是一个从某类型到自身的转换。如果在pg_cast表里面找到一个,那么在存储到目标字段之前先在 - [UNION,CASE和相关构造](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0431.md): SQL UNION构造必须把那些可能不太相似的类型匹配起来成为一个结果集。解析算法分别应用于联合查询的每个输出字段。INTERSECT和EXCEPT构造对不相同的类型使用和UNION相同的算法进行解析。CASE、ARRAY、VALUES、GREATEST和LEAST构造也使用同样的算法匹配它的部件表达式并且选择一个结果数据类型。如果所有输 - [系统操作](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0467.md): GaussDB通过SQL语句执行不同的系统操作,比如:设置变量,显示执行计划和垃圾收集等操作。设置会话或事务中需要使用的各种参数,请参考SET。显示GaussDB为SQL语句规划的执行计划,请参考EXPLAIN。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。CHECKPOINT会立即进行检查,而不是等到下一次调度时的检 - [事务控制](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0468.md): 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。GaussDB通过START TRANSACTION和BEGIN语法启动事务,请参考START TRANSACTION和BEGIN。GaussDB通过SET TRANSACTION或者SET LOCAL TRANSACTION语法设置事务,请参考SE - [SQL语法格式说明](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0470.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [DCL语法一览表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0471.md): DCL(Data Control Language,数据控制语言),是用来设置或更改数据库用户或角色权限的语句。对业务系统用户进行权限授予或执行revoke操作时可能引发实例或业务异常,请谨慎操作。GaussDB提供了针对数据对象和角色授权的语句,请参见GRANT。GaussDB提供了收回权限的语句,请参见REVOKE。GaussDB允许 - [DDL语法一览表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0472.md): DDL(Data Definition Language,数据定义语言),用于定义或修改数据库中的对象。如:表、索引、视图等。GaussDB不支持CN不完整时进行DDL操作。例如:集群中有1个CN故障时执行新建数据库、表等操作都会失败。对业务数据结构的增、删、改操作可能造成实例或业务异常,请谨慎操作。GaussDB支持删除一个数据库角色所 - [DML语法一览表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0473.md): DML(Data Manipulation Language,数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。对业务数据的增、删、改操作可能造成业务数据丢失、覆盖或错误,请谨慎操作。插入数据是往数据库表中添加一条或多条记录,请参见INSERT。同时向多个表添加一条或多条记录,请参见INSERT ALL。修改数据 - [其他语法一览表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0474.md): 除了DCL、DDL和DML语法,GaussDB还提供了其他功能的语法。GaussDB支持使用shutdown命令关闭当前数据库节点,请参见SHUTDOWN。GaussDB支持用于扩容工具通知内核哪些bucket已经完成搬迁的语句,请参见MARK BUCKETS。GaussDB支持用于清理数据库连接的语句,请参见CLEAN CONNECTI - [ABORT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0476.md): 回滚当前事务并且撤销所有当前事务中所做的更改。作用等同于ROLLBACK,早期SQL使用的是ABORT,现在推荐使用ROLLBACK。在事务外部执行ABORT语句不会影响事务的执行,但会返回一个NOTICE信息。WORK | TRANSACTION可选关键字,除了增加可读性没有其他任何作用。可选关键字,除了增加可读性没有其他任何作用。SE - [ALTER AGGREGATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0477.md): 修改一个聚合函数的定义。包括名称、所有者和模式。用户要使用ALTER AGGREGATE,必须是该聚合函数的所有者。要改变一个聚合函数的模式,必须在新模式上有CREATE权限。 要改变所有者,必须是新所有角色的一个直接或间接成员,并且该角色必须在聚合函数的所属模式上有CREATE权限。(这些约束限制了所有者通过删除和重建聚合函数执行非法操 - [ALTER AUDIT POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0479.md): 修改统一审计策略。审计策略的维护有权限限制,只有POLADMIN,SYSADMIN或初始用户有权限进行此操作。需要打开enable_security_policy开关统一审计策略才可以生效。添加/删除审计策略中的操作类型。修改审计策略中的过滤条件。将审计策略中的过滤条件删除。修改审计策略描述。打开或者关闭审计策略。privilege_au - [ALTER COLUMN ENCRYPTION KEY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0480.md): CMK密钥轮转,轮换加密COLUMN ENCRYPTION KEY的CLIENT MASTER KEY,对COLUMN ENCRYPTION KEY明文进行重加密。本语法属于全密态数据库特有语法,当连接数据库服务器时,需打开全密态数据库的开关,才能使用本语法。本语法只能进行CMK轮转,对列加密密钥明文进行重加密,实际上列加密密钥明文不变, - [ALTER COORDINATOR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0481.md): 修改协调节点CN的状态。可以在集群任意一个正常的CN上执行SQL,修改pgxc_node系统表中指定节点的nodeis_active字段值,并且还可以指定在哪些节点上修改系统表。ALTER COORDINATOR是修改系统表的语句,限制只有管理员用户和内部维护模式(例如CM集群管理员)可以执行。这个语句是CN剔除特性专用,要配合其他操作, - [ALTER DATABASE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0482.md): 修改数据库的属性,包括它的名称、所有者、连接数限制、对象隔离属性等。只有数据库的所有者或者被授予了数据库ALTER权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。针对所要修改属性的不同,还有以下权限约束:修改数据库名称,必须拥有CREATEDB权限。修改数据库所有者,当前用户必须是该DATABASE的所有者或 - [ALTER DATABASE LINK](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0483.md): 修改DATABASE LINK对象。DATABASE LINK详细说明请见DATABASE LINK。目前仅支持修改DATABASE LINK对象的用户名和密码。dblink_name连接名称。连接名称。user_name远端被连接数据库用户名。远端被连接数据库用户名。password远端被连接数据库用户密码。远端被连接数据库用户密码。P - [ALTER DEFAULT PRIVILEGES](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0485.md): ALTER DEFAULT PRIVILEGES语句用于修改数据库中用户在特定对象上默认拥有的权限,不会影响到分配已有对象中的权限。目前只支持表(包括视图)、序列、函数,类型,密态数据库客户端主密钥和列加密密钥的权限更改。其中abbreviated_grant_or_revoke子句用于指定对哪些对象进行授权或回收权限。grant_on_ - [ALTER DIRECTORY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0486.md): 对directory属性进行修改。目前只支持修改directory所有者。当enable_access_server_directory=off时,只允许初始用户修改directory所有者;当enable_access_server_directory=on时,具有SYSADMIN权限的用户和directory对象的所有者可以修改dir - [ALTER FUNCTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0488.md): 修改自定义函数的属性或重编译函数。只有函数的所有者或者被授予了函数ALTER权限的用户才能执行ALTER FUNCTION命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还存在以下权限约束:如果函数中涉及对临时表相关的操作,则无法使用ALTER FUNCTION。修改函数的所有者或修改函数的模式,当前用户必须是该函数的所有者或者系 - [ALTER GLOBAL CONFIGURATION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0489.md): 新增、修改系统表gs_global_config的key-value值。如果修改的参数已经存在,则修改;如果不存在则新增。仅支持数据库初始用户运行此命令。参数名称不能为weak_password、undostoragetype。参数名称为扩容重分布预留参数时,需设置GUC参数enable_cluster_resize为on,或者使用扩容工 - [ALTER GROUP](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0490.md): 修改一个用户组的属性。ALTER GROUP非SQL标准语法,不推荐使用。其中两个子句(ADD USER,DROP USER)向用户组增加或删除用户(任何用户都可以是“用户”或者“用户组”)。这两个子句实际等效于将用户或者角色的权限授权或者回收给其他用户或角色,因此建议用GRANT或者REVOKE替代。RENAME TO子句修改用户组的名 - [ALTER INDEX](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0491.md): ALTER INDEX用于修改现有索引的定义。索引的所有者、拥有索引所在表的INDEX权限的用户或者被授予了ALTER ANY INDEX权限的用户有权限执行此命令,当三权分立开关关闭时,系统管理员默认拥有此权限。请勿在同一基表上保持大量的不可见索引,否则可能会对INSERT、UPDATE、DELETE等DML操作的性能产生影响。重命名表 - [ALTER LANGUAGE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0492.md): 修改一个过程语言的定义。前版本形态暂不支持用户对过程语言进行修改操作,不支持使用该语法。 - [ALTER MASKING POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0494.md): 修改脱敏策略。只有poladmin,sysadmin或初始用户才能执行此操作。需要开启安全策略开关,即设置GUC参数enable_security_policy=on,脱敏策略才可以生效。修改策略描述:ALTER MASKING POLICY policy_name COMMENTS policy_comments;修改脱敏方式:ALTE - [ALTER MATERIALIZED VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0495.md): 更改一个现有物化视图的多个辅助属性。可用于ALTER MATERIALIZED VIEW的语句形式和动作是ALTER TABLE的一个子集,并且在用于物化视图时具有相同的含义。详见ALTER TABLE。只有物化视图的所有者有权限执行ALTER MATERIALIZED VIEW命令,系统管理员默认拥有此权限。不支持更改物化视图结构。修改 - [ALTER NODE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0496.md): 修改一个现有集群节点的定义。ALTER NODE是集群管理工具封装的接口,用来实现集群管理,管理员用户才有权限使用该接口。该接口不建议用户直接使用,以免对集群状态造成影响。PORT选项指定的端口号为节点间内部通信绑定的端口号,不同于外部客户端连接节点的端口号,可通过pgxc_node表查询。nodename节点名称。取值范围:字符串,要符 - [ALTER NODE GROUP](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0497.md): 修改一个集群节点组的信息。只有系统管理员或者被授予了NODE GROUP的ALTER权限的用户可以修改NODE GROUP信息。修改NODE GROUP操作都是系统内部操作,除了SET DEFAULT语法之外,其他操作都需要在维护模式下(调用SET xc_maintenance_mode=on;)。ALTER NODE GROUP语法仅仅 - [ALTER PACKAGE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0498.md): 修改PACKAGE的属性或重编译包。目前仅支持ALTER PACKAGE OWNER功能,系统管理员默认拥有该权限,有以下权限约束:当前用户必须是该package的所有者或者系统管理员,且该用户是新所有者角色的成员。当前用户必须是该package的所有者或者系统管理员,且该用户是新所有者角色的成员。当打开三权分立时,即使是系统管理员,也必 - [ALTER RESOURCE LABEL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0499.md): ALTER RESOURCE LABEL语句用于修改资源标签。只有poladmin、sysadmin或初始用户才能执行此操作。label_item_list:resource_type(resource_path[, ...])resource_type:TABLE | COLUMN | SCHEMA | VIEW | FUNCTIONl - [ALTER RESOURCE POOL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0500.md): 修改一个资源池,指定其他控制组。只有sysadmin或初始用户才能执行此操作。升级期间不支持本语法。pool_name资源池名称。资源池名称为已创建的资源池。取值范围:字符串,要符合标识符命名规范。资源池名称。资源池名称为已创建的资源池。取值范围:字符串,要符合标识符命名规范。group_name控制组名称。设置控制组名称时,语法可以使用 - [ALTER ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0501.md): 修改角色属性。无。修改角色的权限。ALTER ROLE role_name [ [ WITH ] option [ ... ] ];其中权限项子句option为:{CREATEDB | NOCREATEDB} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} - [ALTER ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0502.md): 对已存在的行访问控制策略(包括行访问控制策略的名称,行访问控制指定的用户,行访问控制的策略表达式)进行修改。表的所有者或管理员用户才能进行此操作。修改已存在行访问控制策略的名称。ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name RENAME TO new_polic - [ALTER SCHEMA](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0503.md): 修改模式属性。只有模式的所有者或者被授予了模式ALTER权限的用户有权限执行ALTER SCHEMA命令,三权分立开关关闭时,系统管理员默认拥有此权限。但要修改模式的所有者,当前用户必须是该模式的所有者或者系统管理员,且该用户是新所有者角色的成员。对于除public以外的系统模式,如pg_catalog、sys等,只允许初始用户修改模式的 - [ALTER SEQUENCE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0504.md): 修改一个现有的序列的参数。序列的所有者或者被授予了序列ALTER权限的用户或者被授予了ALTER ANY SEQUENCE权限的用户才能执行ALTER SEQUENCE命令,三权分立开关关闭时,系统管理员默认拥有该权限。但要修改序列的所有者,当前用户必须是该序列的所有者或者系统管理员,且该用户是新所有者角色的成员。当前版本仅支持修改拥有者 - [ALTER SERVER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0505.md): 增加、修改和删除一个现有server的参数。现有server可以从pg_foreign_server系统表查询。只有server的所有者或者被授予了server的ALTER权限的用户才可以执行ALTER SERVER命令,系统管理员默认拥有该权限。但要修改server的所有者,当前用户必须是该server的所有者或者系统管理员,且该用户是 - [ALTER SESSION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0506.md): ALTER SESSION命令用于定义或修改对当前会话有影响的条件或参数。修改后的会话参数会一直保持,直到断开当前会话。如果执行SET TRANSACTION之前没有执行START TRANSACTION,则事务立即结束,命令无法显示效果。可以用START TRANSACTION里面声明所需要的transaction_mode(s)的方法 - [ALTER SYNONYM](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0507.md): 修改SYNONYM对象的属性。目前仅支持修改SYNONYM对象的所有者。只有系统管理员有权限修改SYNONYM对象的所有者信息。当三权分立开关打开时,系统管理员默认没有权限修改SYNONYM对象的所有者。新所有者必须具有SYNONYM对象所在模式的CREATE权限。不支持修改PUBLIC同义词。synonym_name待修改的同义词名字, - [ALTER SYSTEM KILL SESSION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0508.md): ALTER SYSTEM KILL SESSION命令用于结束一个会话。pid, sessionid会话的PID和SESSIONID(具体的格式如示例所示)。可通过pg_stat_activity系统表配合查询当前活跃线程,但执行ALTER SYSTEM KILL SESSION命令时线程可能已结束。取值范围:通过查看系统表pg_stat - [ALTER TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0509.md): 修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。基表为HASH分布时,若创建不包含基表分布键的主键或唯一索引,需要使用全局二级索引(指定BY GLOBAL INDEX字段),若创建包含基表分布键的主键或唯一索引,需要使用普通索引(不指定BY GLOBAL - [ALTER TABLE PARTITION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0510.md): 修改表分区,包括增加/删除分区、切割/合并分区、清空分区、移动分区表空间、交换分区、重命名分区,以及修改分区属性等。只有分区表的所有者或者被授予了分区表ALTER权限的用户有权限执行ALTER TABLE PARTITION命令,当三权分立开关关闭时,系统管理员默认拥有此权限。添加分区的表空间不能是PG_GLOBAL。添加分区的名称不能与 - [ALTER TABLESPACE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0511.md): 修改表空间的属性。只有表空间的所有者或者被赋予了表空间ALTER权限的用户有权限执行ALTER TABLESPACE命令,系统管理员默认拥有此权限。但要修改表空间的所有者,当前用户必须是该表空间的所有者或系统管理员,且该用户是new_owner角色的成员。对行存表的ALTER TABLESPACE操作不支持在事务块中执行。要修改表空间的所 - [ALTER TRIGGER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0514.md): ALTER TRIGGER语句用于修改触发器名称及所有者。目前只支持修改触发器的名称及所有者。触发器所在表的所有者或者被授予了ALTER ANY TRIGGER权限的用户可以执行ALTER TRIGGER操作,系统管理员默认拥有此权限。若要修改触发器owner,当前用户必须是该触发器的所有者或者系统管理员,且当前用户必须是新owner所属 - [ALTER TYPE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0515.md): 修改一个类型的定义。类型的所有者、被授予了类型ALTER权限的用户、或者被授予了ALTER ANY TYPE权限的用户可以执行ALTER TYPE命令,三权分立开关关闭时,系统管理员默认拥有此权限。若要修改类型的所有者或者修改类型的模式,当前用户必须是该类型的所有者或者系统管理员,且该用户是新所有者角色的成员。修改类型。ALTER TYP - [ALTER USER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0516.md): ALTER USER语句用于修改数据库用户的属性。ALTER USER中修改的会话参数只针对指定的用户,且在下一次会话中有效。修改用户的权限等信息。ALTER USER user_name [ [ WITH ] option [ ... ] ]; ALTER USER user_name RENAME TO new_name; A - [ALTER VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0517.md): ALTER VIEW更改视图的各种辅助属性(如果用户是更改视图的查询定义,要使用CREATE OR REPLACE VIEW)。只有视图的所有者或者被授予了视图ALTER权限的用户才可以执行ALTER VIEW命令,三权分立开关关闭时,系统管理员默认拥有该权限。针对所要修改属性的不同,对其还有以下权限约束:修改视图的模式,当前用户必须是视 - [ANALYZE | ANALYSE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0519.md): 用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC、PG_STATISTIC_EXT下,执行ANALYZE命令后,可在上述系统表中查询收集到的统计信息,也可以通过系统视图PG_STATS、PG_EXT_STATS查询信息。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。如果没有指定参数,AN - [BEGIN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0521.md): BEGIN可以用于开始一个匿名块,也可以用于开始一个事务。匿名块是能够动态地创建和执行过程代码的结构,而不需要以持久化的方式将代码作为数据库对象储存在数据库中。无。开启匿名块。[DECLARE [declare_statements]] BEGIN execution_statements END; /开启事务。BEGIN [ WO - [CALL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0523.md): 使用CALL命令可以调用已定义的函数和存储过程。函数或存储过程的所有者、被授予了函数或存储过程EXECUTE权限的用户、或被授予EXECUTE ANY FUNCTION权限的用户,有权使用CALL命令,当三权分立开关关闭时,系统管理员默认拥有此权限。schema函数或存储过程所在的模式名称。函数或存储过程所在的模式名称。package函数 - [CHECKPOINT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0524.md): 检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。可以使用gs_guc命令设置相关运行时参数(checkpoint_segments, checkpoint_timeout和i - [CLEAN CONNECTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0525.md): 清理CN节点到其他指定数据库节点(CN/DN)的网络连接,force模式下会强制清理CN/DN的客户端连接。允许清理CN节点中指定数据库、指定用户的相关空闲/无效连接、强制清理活跃的连接。在非force模式下,该功能只清理数据库集群节点(CN/DN)之间的连接,不会影响客户端连接。在非force模式下,该功能只清理CN中已缓存的空闲/无效 - [CLOSE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0526.md): CLOSE释放和一个游标关联的所有资源。不允许对一个已关闭的游标再做任何操作。一个不再使用的游标应该尽早关闭。当创建游标的事务用COMMIT或ROLLBACK终止之后,每个不可保持的已打开游标都隐含关闭。当创建游标的事务通过ROLLBACK退出之后,每个可以保持的游标都将隐含关闭。当创建游标的事务成功提交,可保持的游标将保持打开,直到执行 - [CLUSTER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0527.md): 根据一个索引对表进行聚簇排序。CLUSTER指定GaussDB通过索引名指定的索引聚簇由表名指定的表。表名上必须已经定义该索引。当对一个表聚簇后,该表将基于索引信息进行物理存储。聚簇是一次性操作:当表被更新之后,更改的内容不会被聚簇。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚簇。在对一个表聚簇之后,GaussDB - [COMMENT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0528.md): 定义或修改一个对象的注释。每个对象只存储一条注释,因此要修改一个注释,对同一个对象发出一条新的COMMENT命令即可。要删除注释,在文本字符串的位置写上NULL即可。当删除对象时,注释自动被删除。目前注释浏览没有安全机制,任何连接到某数据库上的用户都可以看到所有该数据库对象的注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连 - [COMMIT | END](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0529.md): 通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作。执行COMMIT这个命令的时候,命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。COMMIT | END提交当前事务,让所有当前事务的更改为其他事务可见。提交当前事务,让所有当前事务的更改为其他事务可见。WORK | TRANSACTI - [COMMIT PREPARED](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0530.md): 提交一个早先为两阶段提交准备好的事务。该功能为内部使用功能,不建议用户使用。该功能仅在维护模式(GUC参数xc_maintenance_mode为on时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。事务功能由数据库自动维护,不 - [COPY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0531.md): 通过COPY命令实现在表和文件之间复制数据。COPY FROM从一个文件复制数据到一个表,COPY TO把一个表的数据复制到一个文件。当参数enable_copy_server_files关闭时,只允许初始用户执行COPY FROM FILENAME或COPY TO FILENAME命令,当参数enable_copy_server_fil - [CREATE AGGREGATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0532.md): 创建一个新的聚集函数。也可使用:name要创建的聚集函数名(可以有模式修饰))。要创建的聚集函数名(可以有模式修饰))。input_data_type该聚集函数要处理的输入数据类型。要创建一个零参数聚集函数,可以使用*代替输入数据类型列表。(count(*)就是这种聚集函数的一个实例。)该聚集函数要处理的输入数据类型。要创建一个零参数聚集 - [CREATE AUDIT POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0534.md): 创建统一审计策略。审计策略的创建与维护有权限限制,只有poladmin、sysadmin或初始用户有权限进行此操作。在创建审计策略之前,需要确保已经开启安全策略开关,即设置GUC参数“enable_security_policy=on”后,脱敏策略才会生效。系统管理员或安全策略管理员可以访问GS_AUDITING_POLICY、GS_AU - [CREATE BARRIER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0535.md): CREATE BARRIER语句用于创建一个新集群节点间的同步点。该同步点可用于数据恢复。该功能为内部使用功能,不建议用户使用。CREATE BARRIER通常只用于备份恢复操作,因此只允许在以下两种场景下执行。数据库初始化用户可执行。在CN节点上开启备份恢复模式,即GUC参数operation_mode=on的前提下,具备OPRADMI - [CREATE CLIENT MASTER KEY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0536.md): 密态等值查询特性使用多级加密模型,主密钥加密列密钥,列密钥加密数据。本语法用于创建主密钥对象。本语法属于全密态数据库特有语法。连接数据库时,在数据库驱动侧,需开启密态等值查询特性连接参数,才可执行本语法。主密钥由外部密钥管理者提供,本语法仅处理密钥来源、密钥ID等信息,已支持的外部密钥管理者包括:华为云密钥管理服务huawei_kms。用 - [CREATE COLUMN ENCRYPTION KEY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0537.md): 创建一个列加密密钥,该密钥可用于加密表中的指定列。本语法属于全密态数据库特有语法。当使用gsql连接数据库服务器时,需使用“-C”参数,打开全密态数据库的开关,才能使用本语法。由该语法创建CEK对象可用于列级加密。在定义表中列字段时,可指定一个CEK对象,用于加密该列。column_encryption_key_name密钥对象名。在同一 - [CREATE CONVERSION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0538.md): CREATE CONVERSION语句用于定义一种两个字符集编码之间的新转换。该功能为内部使用功能,不建议用户使用。参数DEFAULT将在客户端和服务器之间默认执行源编码到目标编码之间的转换。要支持这个用法,需要定义双向转换,即从A到B和从B到A之间的转换。创建转换需拥有函数的EXECUTE权限及目标模式的CREATE权限。源编码和目标编 - [CREATE DATABASE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0539.md): 创建一个新的数据库。默认情况下,新的数据库将通过复制标准系统数据库template0模板进行创建。仅拥有CREATEDB权限的用户可以创建新数据库,系统管理员默认拥有此权限。不能在事务块中执行创建数据库语句操作。在创建数据库过程中,若出现类似“could not initialize database directory”的错误提示,可能 - [CREATE DATABASE LINK](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0540.md): 创建DATABASE LINK对象。DATABASE LINK详细说明请见DATABASE LINK。DATABASE LINK特性只能在ORA兼容版本下使用。禁止使用DATABASE LINK连接初始用户。禁止初始用户创建、修改和删除DATABASE LINK对象。升级未提交情况下无法创建使用DATABASE LINK。当使用CURRE - [CREATE DIRECTORY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0542.md): 使用CREATE DIRECTORY语句创建一个目录对象,该目录对象定义了服务器文件系统上目录的别名,用于存放用户使用的数据文件,用户可以通过dbe_file高级包来读写这些文件。该目录对象对于指定用户可以赋予READ和WRITE的操作权限,用于给dbe_file提供权限控制。当enable_access_server_directory - [CREATE EXTENSION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0543.md): 扩展功能为内部使用功能,不建议用户使用。当前仅支持对postgis、postgis_sfcgal、postgis_raster、postgis_topology、yukon_geomodel、yukon_geogridcoder、pkg_bpchar_opc以及tablefunc进行CREATE EXTENSION操作。安装一个扩展。在使 - [CREATE FOREIGN TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0544.md): 创建GDS外表。在GaussDB中,创建外表(CREATE FOREIGN TABLE)是一种方便的机制,用于访问外部数据源并对其进行统一管理和查询。通过创建外表,用户可以将存储在文件系统、外部表、视图等外部数据源中的数据集成到GaussDB数据库中,并像操作普通表一样进行查询、连接和并行操作等。在当前数据库创建一个GDS外表,用于数据并 - [CREATE FUNCTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0545.md): 创建一个函数。如果创建函数时参数或返回值带有精度,不进行精度检测。创建函数时,函数定义中对表对象的操作建议都显式指定模式,否则可能会导致函数执行异常。在创建函数时,函数内部通过SET语句设置current_schema和search_path无效。执行完函数后的search_path和current_schema与执行函数前的search - [CREATE GLOBAL INDEX](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0546.md): 在指定的表上创建全局二级索引(Global Secondary Index,简称GSI)。全局二级索引允许用户定义与基表分布不一致的索引,从而实现基表非分布列查询的单节点计划和基表非分布列上的unique/主键约束。建议在GSI的基表创建普通索引提升IUD执行效率。另外,在基表上创建GSI后将影响IUD的性能,带来劣化。只支持GTM-LI - [CREATE GROUP](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0547.md): 创建一个新用户组。CREATE GROUP是CREATE ROLE的别名,非SQL标准语法,不推荐使用,建议用户直接使用CREATE ROLE替代。其中可选项option子句语法为:请参见参数说明。ALTER GROUP,DROP GROUP,CREATE ROLE - [CREATE INCREMENTAL MATERIALIZED VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0548.md): CREATE INCREMENTAL MATERIALIZED VIEW会创建一个增量物化视图,后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)刷新物化视图的数据。CREATE INCREMENTAL MATERIALIZED - [CREATE INDEX](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0549.md): 在指定的表上创建索引。索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引:经常执行查询的字段。在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如:select * from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以 - [CREATE LANGUAGE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0550.md): 定义一种新的过程语言。当前版本形态暂不支持用户创建新的过程语言功能,不支持使用该语法。 - [CREATE MASKING POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0551.md): 创建脱敏策略。只有poladmin,sysadmin或初始用户能执行此操作。需要开启安全策略开关,即设置GUC参数enable_security_policy=on,脱敏策略才可以生效。在使用DATABASE LINK功能的场景下,客户端发起的DATABASE LINK请求,实际的发送方是服务端,发送端IP地址等相关的属性将是服务端的值。 - [CREATE MATERIALIZED VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0552.md): CREATE MATERIALIZED VIEW会创建一个全量物化视图,并且后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)刷新物化视图的数据。CREATE MATERIALIZED VIEW类似于CREATE TABLE AS,与后者相比它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物 - [CREATE MODEL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0553.md): 训练机器学习模型并保存模型。当前版本形态暂不支持模型训练功能,不支持使用该语法。 - [CREATE NODE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0554.md): 创建一个新的集群节点。CREATE NODE是集群管理工具封装的接口,用来实现集群管理。该接口不建议用户直接使用,以免对集群状态造成影响。管理员用户才有权限使用该接口。PORT选项指定的端口号为节点间内部通信绑定的端口号,不同于外部客户端连接节点的端口号,可通过pgxc_node表查询。nodename节点名称。取值范围:字符串,要符合标 - [CREATE NODE GROUP](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0555.md): 创建一个新的集群节点组。CREATE NODE GROUP是集群管理工具封装的接口,用来实现集群管理。该接口仅对管理员用户开放使用。groupname节点组名称。取值范围:字符串,要符合标识符命名规范。且最大长度不超过63个字符。节点组命名支持ASCII字符集上所有字符,但是建议用户按照标识符命名规范命名。节点组名称。取值范围:字符串,要 - [CREATE PACKAGE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0556.md): 创建一个新的PACKAGE。在分布式下,PACKAGE仅支持在ORA兼容性数据库中使用。在package specification中声明过的函数或者存储过程,必须在package body中找到定义。创建存储过程时,仅对CREATE的存储过程或PACKAGE本身加写锁,仅对执行过程中编译、执行会对函数和函数依赖的PACKAGE均加读锁。 - [CREATE PROCEDURE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0557.md): 创建一个新的存储过程。如果创建存储过程时参数或返回值带有精度,不进行精度检测。创建存储过程时,存储过程定义中对表对象的操作建议都显式指定模式,否则可能会导致存储过程执行异常。创建存储过程时,仅对CREATE的存储过程或PACKAGE本身加写锁,仅对执行过程中编译、执行会对函数和函数依赖的PACKAGE均加读锁。创建存储过程时,存储过程内部 - [CREATE RESOURCE LABEL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0558.md): CREATE RESOURCE LABEL语句用于创建资源标签。只有POLADMIN、SYSADMIN或初始用户能正常执行此操作。label_item_list:resource_type(resource_path[, ...])resource_type:{ TABLE | COLUMN | SCHEMA | VIEW | FUNCT - [CREATE RESOURCE POOL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0559.md): 创建一个资源池,并指定此资源池相关联的控制组。只有sysadmin或初始用户才能执行此操作。升级期间不支持本语法。pool_name资源池名称。资源池名称不能和当前数据库里已有的资源池重名。取值范围:字符串,要符合标识符命名规范。资源池名称。资源池名称不能和当前数据库里已有的资源池重名。取值范围:字符串,要符合标识符命名规范。group_ - [CREATE ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0560.md): 创建角色。角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。在数据库中添加一个新角色,角色无登录权限。创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。其中角色信息设置子句option语法为:{SYSADMIN | NOSYSADMIN} | {MONADMIN | NO - [CREATE ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0561.md): 对表创建行访问控制策略。当对表创建了行访问控制策略,只有打开该表的行访问控制开关(ALTER TABLE ... ENABLE ROW LEVEL SECURITY),策略才能生效。否则不生效。当前行访问控制影响数据表的读取操作(SELECT、UPDATE、DELETE),暂不影响数据表的写入操作(INSERT、MERGE INTO)。表 - [CREATE SCHEMA](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0562.md): 创建模式。访问命名对象时可以使用模式名作为前缀进行访问,如果无模式名前缀,则访问当前模式下的命名对象。创建命名对象时也可用模式名作为前缀修饰。另外,CREATE SCHEMA可以包括在新模式中创建对象的子命令,这些子命令和那些在创建完模式后发出的命令没有任何区别。如果使用了AUTHORIZATION子句,则所有创建的对象都将被该用户所拥有 - [CREATE SECURITY LABEL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0563.md): CREATE SECURITY LABEL语句可用于在当前数据库中为指定的安全策略创建新的安全标签。初始用户,具有SYSADMIN权限的用户或者继承了内置角色gs_role_seclabel权限的用户有权限创建安全标签。label_name安全标签名称,需在数据库内唯一。取值范围:字符串,要符合标识符命名规范,且最大长度不超过63个字符。 - [CREATE SEQUENCE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0564.md): CREATE SEQUENCE用于向当前数据库增加一个新的序列。序列的Owner为创建此序列的用户。SEQUENCE是一个存放等差数列的特殊表。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。如果给出一个模式名,则该序列就在给定的模式中创建,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名称不同 - [CREATE SERVER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0565.md): 创建一个外部服务器。外部服务器是存储其他同构集群信息的载体。默认只有系统管理员才可以创建外部服务器,否则需要对所使用的FOREIGN DATA WRAPPER授权才可以创建,授权语法为:其中fdw_name为FOREIGN DATA WRAPPER的名称,username为创建SERVER的用户名。OPTIONS中的敏感字段(如passw - [CREATE SYNONYM](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0566.md): 创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。创建同义词的用户将成为其所有者。若指定模式名称,则同义词在指定模式中创建。否则,在当前模式下创建。支持通过同义词访问的数据库对象包括:表、视图、类型、包、函数和存储过程、序列和其他同义词对象。使用同义词时,用户需要 - [CREATE TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0567.md): 在当前数据库中创建一个新的空白表,该表由命令执行者所有。当前默认创建行存表。若对非分布键添加主键约束或唯一约束,将默认建立全局二级索引。分布方式默认取值为HASH(column_name),column_name取表的主键列或唯一约束列(如果有的话)或首个数据类型支持作为分布列的列,优先级别:主键列>唯一约束列>首个数据类型支持作为分布列 - [CREATE TABLESPACE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0568.md): 在数据库中创建一个新的表空间。系统管理员或者继承了内置角色gs_role_tablespace权限的用户可以创建表空间。不允许在一个事务块内部执行CREATE TABLESPACE。执行CREATE TABLESPACE失败,如果内部创建目录(文件)操作成功了就会产生残留的目录(文件),重新创建时需要用户手动清理表空间指定的目录下残留的内 - [CREATE TABLE AS](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0569.md): 根据查询结果创建表。CREATE TABLE AS创建一个表并且用来自SELECT命令的结果填充该表。该表的字段和SELECT输出字段的名称及数据类型相关。不过用户可以通过明确地给出一个字段名称列表来覆盖SELECT输出字段的名称。CREATE TABLE AS和创建视图有些相似,CREATE TABLE AS会创建一个新表并且只计算该查 - [CREATE TABLE PARTITION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0570.md): 创建分区表。分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。常见的分区方案有范围分区(Range Partitioning)、间隔分区(Interval Partitioning)、哈希分区(Hash Partitionin - [CREATE TRIGGER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0573.md): CREATE TRIGGER语句用于创建一个触发器。触发器是一种特殊类型的存储过程,触发器主要用于复杂的业务规则和要求,有助于引用的完整性, 触发器将与指定的表或视图关联,并在特定条件下执行指定的函数,这样便于在添加、更新或删除表中的行时保留表中已定义的关系。当前仅支持在普通行存表上创建触发器,不支持在临时表、unlogged表等类型表上 - [CREATE TYPE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0574.md): 在当前数据库中定义一种新的数据类型。定义数据类型的用户将成为该数据类型的拥有者。类型只适用于行存表。有五种形式的CREATE TYPE,分别为:复合类型、基本类型、shell类型、枚举类型和集合类型。复合类型复合类型由一个属性名和数据类型的列表指定。如果属性的数据类型是可排序的,也可以指定该属性的排序规则。复合类型本质上和表的行类型相同, - [CREATE USER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0575.md): 创建一个带有指定密码的新用户,用户是GaussDB数据库认证的基本元素,您可以通过正确的用户名和密码登录GaussDB数据库,然后授权不同的用户拥有不同的权限,以便不同的用户进行不同的操作。通过CREATE USER创建的用户,默认具有LOGIN权限。通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个 - [CREATE VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0576.md): 创建一个视图。视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。将经常使用的数据定义为视图,可以将复杂的查询SQL语句进行封装。简化操作 - [CREATE WEAK PASSWORD DICTIONARY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0578.md): CREATE WEAK PASSWORD DICTIONARY语句用于创建弱口令字典,弱口令字典默认为空,用户可以通过此语法向系统表gs_global_config中新增一条或多条弱口令。只有初始用户、系统管理员和安全管理员拥有权限执行本语法。弱口令字典中的口令存放在gs_global_config系统表中。弱口令字典默认为空,用户通过本 - [CURSOR](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0579.md): CURSOR命令用于创建一个游标,从一个查询里面检索出指定的几行数据。为了处理SQL语句,存储过程线程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。游标命令只能在事务块里使用。通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一 - [DEALLOCATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0581.md): DEALLOCATE用于删除预备语句。如果用户没有明确删除一个预备语句,那么它将在会话结束的时候被删除。语法中PREPARE关键字总会被忽略。name将要删除的预备语句。将要删除的预备语句。ALL删除所有预备语句。删除所有预备语句。 - [DECLARE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0582.md): DECLARE命令既可以定义一个游标,用于在一个大的查询里面检索少数几行数据,也可以作为一个匿名块的开始。本节主要描述定义为游标的用法,定义为匿名块的用法见BEGIN。为了处理SQL语句,存储过程线程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。通常游标和SELECT一样返 - [DELETE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0583.md): DELETE从指定的表里删除满足WHERE子句的行。如果WHERE子句不存在,将删除表中所有行,结果只保留表结构。表的所有者、被授予表DELETE权限的用户或被授予DELETE ANY TABLE权限的用户有权删除表中数据,当三权分立开关关闭时,系统管理员默认拥有此权限。同时在进行DELETE操作时,用户也必须拥有USING子句所引用的表 - [DO](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0584.md): DO语句用于执行匿名代码块。代码块被看作是没有参数的一段函数体,返回值类型是void。它的解析和执行是同一时刻发生的。程序语言在使用之前,必须通过命令CREATE LANGUAGE安装到当前的数据库中。 plpgsql是默认的安装语言,其它语言安装时必须指定。如果语言是不受信任的,用户必须有使用程序语言的USAGE权限,或者是系统管理员权 - [DROP AGGREGATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0585.md): 删除一个聚集函数。DROP AGGREGATE删除一个现存的聚集函数,执行这条命令的用户必须是该聚集函数的所有者。IF EXISTS如果指定的聚集函数不存在,会产生一个NOTICE提示,但不会产生一个错误。如果指定的聚集函数不存在,会产生一个NOTICE提示,但不会产生一个错误。name现存的聚集函数名(可以有模式修饰)。现存的聚集函数名 - [DROP AUDIT POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0587.md): 删除一个审计策略。只有POLADMIN,SYSADMIN或初始用户才能进行此操作。policy_name审计策略名称,需要唯一,不可重复。取值范围:字符串,要符合标识符命名规范。审计策略名称,需要唯一,不可重复。取值范围:字符串,要符合标识符命名规范。IF EXISTS判断审计策略是否存在。如果存在则删除成功,否则发出一个NOTICE信息 - [DROP CLIENT MASTER KEY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0588.md): 删除客户端加密主密钥(CMK)。只有客户端加密主密钥所有者或者被授予了DROP权限的用户有权限执行该命令,系统管理员默认拥有此权限。该命令只能删除数据库中系统表记录的元数据信息,不能真正删除CMK密钥文件,需要通过KeyTool工具才能删除CMK密钥文件。IF EXISTS如果指定的客户端加密主密钥不存在,则发出一个notice而不是抛出 - [DROP COLUMN ENCRYPTION KEY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0589.md): 删除一个列加密密钥(CEK)。只有列加密密钥所有者或者被授予了DROP权限的用户有权限执行该命令,系统管理员默认拥有此权限。IF EXISTS如果指定的列加密密钥不存在,则发出一个notice而不是抛出一个错误。如果指定的列加密密钥不存在,则发出一个notice而不是抛出一个错误。client_column_key_name要删除的列加密 - [DROP DATABASE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0590.md): 删除一个数据库。只有数据库所有者或者被授予了数据库DROP权限的用户有权限执行DROP DATABASE命令,系统管理员默认拥有此权限。不能对系统默认安装的四个数据库(POSTGRES、TEMPLATE0、TEMPLATE1和TEMPLATEA)执行删除操作,系统做了保护。如果想查看当前服务中有哪几个数据库,可以用gsql的\l命令查看。 - [DROP DATABASE LINK](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0591.md): 删除DATABASE LINK对象。dblink_name连接对象的名称。连接对象的名称。IF EXISTS如果指定的DATABASE LINK不存在,则发出一个notice而不是报错。如果指定的DATABASE LINK不存在,则发出一个notice而不是报错。PUBLIC连接类型,不加PUBLIC默认为PRIVATE。连接类型,不加P - [DROP DIRECTORY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0593.md): 删除指定的DIRECTORY对象。当enable_access_server_directory=off时,只允许初始用户删除directory对象。当enable_access_server_directory=on时,具有SYSADMIN权限的用户、directory对象的属主、被授予了该directory的DROP权限的用户或者继承 - [DROP FOREIGN TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0594.md): 删除指定的外表。DROP FOREIGN TABLE会强制删除指定的表,删除表后,依赖该表的索引会被删除,使用到该表的函数和存储过程将无法执行。IF EXISTS如果指定的表不存在,则发出一个notice而不是抛出一个错误。如果指定的表不存在,则发出一个notice而不是抛出一个错误。table_name表名称。取值范围:已存在的表名。表 - [DROP FUNCTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0595.md): 删除一个已存在的函数。如果函数中涉及对临时表的相关操作,则无法使用DROP FUNCTION删除函数。只有函数的所有者或者被授予了函数DROP权限的用户才能执行DROP FUNCTION命令,系统管理员默认拥有该权限。仅初始用户有权对初始用户的函数进行DROP操作。IF EXISTSIF EXISTS表示如果函数存在则执行删除操作,函数不 - [DROP GLOBAL CONFIGURATION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0596.md): 删除系统表gs_global_config中的参数值。仅支持数据库初始用户运行此命令。参数名称不能为weak_password、undostoragetype。参数名称为扩容重分布预留参数时,需设置GUC参数enable_cluster_resize为on。涉及的参数名称包括:lockwait_timeout、lockwait_inter - [DROP GROUP](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0597.md): 删除用户组。DROP GROUP是DROP ROLE的别名。仅对有CREATE ROLE权限的用户开放,CREATE ROLE权限通过管理员用户赋予。IF EXISTS如果不存在该角色,不会报出错误,而会发出通知,告知通知该角色不存在。如果不存在该角色,不会报出错误,而会发出通知,告知通知该角色不存在。group_name要删除的角色名称 - [DROP INDEX](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0598.md): 删除索引。索引的所有者、索引所在模式的所有者、拥有索引所在表的INDEX权限的用户或者被授予了DROP ANY INDEX权限的用户有权限执行DROP INDEX命令,三权分立关闭时的系统管理员默认拥有此权限。IF EXISTS如果指定的索引不存在,则发出一个notice而不是抛出一个error。如果指定的索引不存在,则发出一个notic - [DROP LANGUAGE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0599.md): 删除一个过程语言。当前版本形态暂不支持对用户创建的过程语言进行删除,不支持使用该语法。 - [DROP MASKING POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0600.md): 删除脱敏策略。只有POLADMIN,SYSADMIN或初始用户才能执行此操作。policy_name审计策略名称,不可重复。取值范围:字符串,已存在的策略名称。审计策略名称,不可重复。取值范围:字符串,已存在的策略名称。ALTER MASKING POLICY,CREATE MASKING POLICY。 - [DROP MATERIALIZED VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0601.md): 删除数据库中已有的物化视图。物化视图的所有者、物化视图所在模式的所有者、被授予了物化视图DROP权限的用户或拥有DROP ANY TABLE权限的用户才有权限执行DROP MATERIALIZED VIEW命令,系统管理员默认拥有此权限。IF EXISTS如果指定的物化视图不存在,则发出一个notice而不是抛出一个错误。如果指定的物化视 - [DROP MODEL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0602.md): 删除指定的训练模型。当前版本形态暂不支持模型训练功能,不支持使用该语法。 - [DROP NODE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0603.md): 删除集群节点。DROP NODE是集群管理工具封装的接口,用来实现集群管理。该接口不建议用户直接使用,以免对集群状态造成影响。管理员用户才有权限使用该接口。IF EXISTS如果指定的节点不存在,则发出一个notice而不是抛出一个错误。如果指定的节点不存在,则发出一个notice而不是抛出一个错误。nodename要删除的节点名。取值范 - [DROP NODE GROUP](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0604.md): 删除节点组。DROP NODE GROUP是集群管理工具封装的接口,用来实现集群管理。只有系统管理员或者被授予了节点组DROP权限的用户才能执行该操作。groupname要删除的节点组名。取值范围:已存在的节点组。ALTER NODE GROUP,CREATE NODE GROUP - [DROP OWNED](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0605.md): 删除一个数据库角色所拥有的数据库对象。所有该角色在当前数据库里和以及共享对象(数据库,表空间) 上的所有对象上的权限都将被撤销。DROP OWNED常常被用来为移除一个或者多个角色做准备。因为DROP OWNED只影响当前数据库中的对象,通常需要在包含将被移除角色所拥有的对象的每一个数据库中都执行这个命令。使用CASCADE选项可能导致这 - [DROP PACKAGE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0606.md): 删除已存在的PACKAGE或者PACKAGE BODY。删除PACKAGE BODY后,PACKAGE内的存储过程及函数会同时失效。仅初始用户有权对初始用户的PACKAGE进行DROP操作。IF EXISTS如果指定的存储过程不存在,会提示一个notice而不是产生一个错误。如果指定的存储过程不存在,会提示一个notice而不是产生一个错 - [DROP PROCEDURE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0607.md): 删除已存在的存储过程。仅初始用户有权对初始用户的存储过程进行DROP操作。IF EXISTS如果指定的存储过程不存在,发出一个notice而不是抛出一个错误。如果指定的存储过程不存在,发出一个notice而不是抛出一个错误。procedure_name要删除的存储过程名称。取值范围:已存在的存储过程名。要删除的存储过程名称。取值范围:已存 - [DROP RESOURCE LABEL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0608.md): DROP RESOURCE LABEL语句用于删除资源标签。只有POLADMIN,SYSADMIN或初始用户才能执行此操作。label_name资源标签名称;取值范围:字符串,要符合标识符命名规范。资源标签名称;取值范围:字符串,要符合标识符命名规范。ALTER RESOURCE LABEL,CREATE RESOURCE LABEL。 - [DROP RESOURCE POOL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0609.md): 删除一个资源池。如果某个角色已关联到该资源池,无法删除。只有SYSADMIN或初始用户才能执行此操作。升级期间不支持本语法。IF EXISTS如果指定的资源池不存在,发出一个notice而不是抛出一个错误。如果指定的资源池不存在,发出一个notice而不是抛出一个错误。pool_name已创建过的资源池名称。取值范围:字符串,要符合标识符 - [DROP ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0610.md): 删除指定的角色。IF EXISTS如果指定的角色不存在,则发出一个notice而不是抛出一个错误。如果指定的角色不存在,则发出一个notice而不是抛出一个错误。role_name要删除的角色名称。取值范围:已存在的角色。要删除的角色名称。取值范围:已存在的角色。CREATE ROLE,ALTER ROLE,SET ROLE - [DROP ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0611.md): 删除表上某个行访问控制策略。仅表的所有者或者管理员用户才能删除表的行访问控制策略。IF EXISTS如果指定的行访问控制策略不存在,发出一个notice而不是抛出一个错误。如果指定的行访问控制策略不存在,发出一个notice而不是抛出一个错误。policy_name要删除的行访问控制策略的名称。要删除的行访问控制策略的名称。table_n - [DROP SCHEMA](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0612.md): 从数据库中删除模式。只有Schema的所有者或者被授予了模式DROP权限的用户有权限执行DROP SCHEMA命令,当三权分立开关关闭时,系统管理员默认拥有此权限。除初始用户和运维管理员外,其他用户无法DROP掉运维管理员的SCHEMA。allow_system_table_mods关闭时,禁止删除DBE_PLDEVELOPER。对于系统 - [DROP SECURITY LABEL](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0613.md): DROP SECURITY LABEL语句可用于删除当前数据库中的安全标签。初始用户、具有SYSADMIN权限的用户或者继承了内置角色gs_role_seclabel权限的用户有权限删除安全标签。label_name安全标签名称,删除的安全标签必须在数据库中是存在的。安全标签名称,删除的安全标签必须在数据库中是存在的。CREATE SEC - [DROP SEQUENCE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0614.md): 从当前数据库里删除序列。序列的所有者、序列所在模式的所有者、被授予了序列DROP权限的用户或者被授予了DROP ANY SEQUENCE权限的用户才能删除。当三权分立开关关闭时,系统管理员默认拥有该权限。IF EXISTS如果指定的序列不存在,则发出一个notice而不是抛出一个错误。如果指定的序列不存在,则发出一个notice而不是抛出 - [DROP SERVER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0615.md): 删除现有的一个数据服务器。只有SERVER的所有者或者被授予了SERVER的DROP权限的用户才可以删除,系统管理员默认拥有该权限。IF EXISTS如果指定的数据服务器不存在,则发出一个notice而不是抛出一个错误。如果指定的数据服务器不存在,则发出一个notice而不是抛出一个错误。server_name服务器名称。服务器名称。CA - [DROP SYNONYM](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0616.md): 删除指定的SYNONYM对象。SYNONYM的所有者或者被授予了DROP ANY SYNONYM权限的用户有权限执行DROP SYNONYM命令,系统管理员默认拥有此权限。PUBLIC可选。删除PUBLIC同义词时使用。可选。删除PUBLIC同义词时使用。IF EXISTS如果指定的同义词不存在,则发出一个notice而不是抛出一个错误。 - [DROP TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0617.md): 删除指定的表。DROP TABLE删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。表的所有者、表所在模式的所有者、被授予了表的DROP权限的用户或被授予DROP ANY TABLE权限的用户,有权删除指定表,三权分立关闭时的系统管理员默认拥有该权限。IF EXISTS如果 - [DROP TABLESPACE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0618.md): 删除一个表空间。只有表空间所有者或者被授予了表空间DROP权限的用户有权限执行DROP TABLESPACE命令,系统管理员默认拥有此权限。在删除一个表空间之前,表空间里面不能有任何数据库对象,否则会报错。DROP TABLESPACE不支持回滚,因此,不能出现在事务块内部。执行DROP TABLESPACE操作时,如果有另外的会话执行\ - [DROP TRIGGER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0621.md): DROP TRIGGER语句用于删除触发器。触发器的所有者或者被授予了DROP ANY TRIGGER权限的用户可以执行DROP TRIGGER操作,系统管理员默认拥有此权限。IF EXISTS如果指定的触发器不存在,则发出一个notice而不是抛出一个错误。如果指定的触发器不存在,则发出一个notice而不是抛出一个错误。trigger - [DROP TYPE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0622.md): 删除一个用户定义的数据类型。类型的所有者、被授予了类型DROP权限的用户或者被授予了DROP ANY TYPE权限的用户有权限执行DROP TYPE命令,当三权分立开关关闭时,系统管理员默认拥有此权限。IF EXISTS如果指定的类型不存在,那么发出一个notice而不是抛出一个错误。如果指定的类型不存在,那么发出一个notice而不是抛 - [DROP USER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0623.md): DROP USER用于GaussDB数据库中执行对用户的删除操作,该权限需要具备创建用户的权限才能执行。当执行删除用户的指令成功后,同时会删除同名的schema。须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的线程被终止。在数 - [DROP VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0624.md): DROP VIEW语句用于删除数据库中的视图。视图的所有者、视图所在模式的所有者、被授予了视图DROP权限的用户或拥有DROP ANY TABLE权限的用户,有权限执行DROP VIEW的命令,三权分立关闭时的系统管理员默认拥有此权限。IF EXISTS如果指定的视图不存在,则发出一个notice而不是抛出一个错误。如果指定的视图不存在, - [DROP WEAK PASSWORD DICTIONARY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0626.md): DROP WEAK PASSWORD DICTIONARY语句用于清空弱口令字典,用户可以通过此语句清空系统表gs_global_config中的全部弱口令。只有初始用户、系统管理员和安全管理员拥有权限执行本语法。CREATE WEAK PASSWORD DICTIONARY - [EXECUTE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0628.md): 执行一个准备好的预备语句。因为预备语句只在会话的生命期里存在,所以预备语句必须是在当前会话中更早用PREPARE语句创建的。如果创建预备语句时,PREPARE语句声明了一些参数,那么传递给EXECUTE语句的必须是一个兼容的参数集,否则会出现错误。name要执行的预备语句的名称。要执行的预备语句的名称。parameter给预备语句的参数的 - [EXECUTE DIRECT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0629.md): 在指定的节点上执行SQL语句。一般情况下,SQL语句的执行是由集群负载自动分配到合适的节点上,EXECUTE DIRECT主要用于数据库维护和测试。当enable_nonsysadmin_execute_direct=off时,只有系统管理员和监控管理员才能执行EXECUTE DIRECT。为了各个节点上数据的一致性,SQL语句仅支持SE - [EXPDP DATABASE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0630.md): 导出DATABASE的全部物理文件。db_name导出的库名。导出的库名。directory导出文件的存储目录。导出文件的存储目录。 - [EXPDP TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0631.md): 导出与表相关的索引、sequence、分区、toast、toast index等全部文件。table_name导出的表名。导出的表名。directory导出文件的存储目录。导出文件的存储目录。 - [EXPLAIN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0632.md): 显示SQL语句的执行计划。执行计划将显示SQL语句所引用的表会采用什么样的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示用到的JOIN算法。执行计划的最关键的部分是语句的预计执行开销,影响计划生成器估算执行该语句将花费多长的时间。若指定了ANALYZE选项,则该语句会被执行,然后根据实际的运行结果显示统计数据 - [EXPLAIN PLAN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0633.md): 通过EXPLAIN PLAN命令可以将查询执行的计划信息存储于PLAN_TABLE表中。与EXPLAIN命令不同的是,EXPLAIN PLAN仅将计划信息进行存储,而不会打印到屏幕。EXPLAIN PLAN不支持在DN上执行。对于执行错误的SQL语句无法进行计划信息的收集。PLAN_TABLE中的数据是session级生命周期并且sess - [FETCH](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0635.md): FETCH通过已创建的游标来检索数据。每个游标都有一个供FETCH使用的关联位置。游标的关联位置可以在查询结果的第一行之前,或者在结果中的任意行,或者在结果的最后一行之后:游标刚创建完之后,关联位置在第一行之前。在抓取了一些移动行之后,关联位置在检索到的最后一行上。如果FETCH抓取完了所有可用行,它就停在最后一行后面,或者在反向抓取的情 - [GRANT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0637.md): 对角色和用户进行授权操作。对业务系统用户进行权限授予或执行revoke操作时可能引发实例或业务异常,请谨慎操作。使用GRANT命令进行用户授权包括以下场景:将系统权限授权给角色或用户系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMI - [IMPDP DATABASE CREATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0639.md): 导入DATABASE的准备阶段。db_name导入后的新库名,如不指定则导入后保持原库名。导入后的新库名,如不指定则导入后保持原库名。directory导入的database的数据源目录。导入的database的数据源目录。user导入后库的属主。导入后库的属主。LOCAL指定该字段表示导入到原集群,如不指定表示导入到新集群。指定该字段表 - [IMPDP RECOVER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0640.md): 导入DATABASE的执行阶段。directory导入的database的数据源目录。导入的database的数据源目录。user导入后库的属主。导入后库的属主。LOCAL指定该字段表示导入到原集群,如不指定表示导入到新集群。指定该字段表示导入到原集群,如不指定表示导入到新集群。 - [IMPDP TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0641.md): 导入表的执行阶段。table_name导入后的新表名,如不指定则导入后保持原表名。导入后的新表名,如不指定则导入后保持原表名。directory导入的表的数据源目录。导入的表的数据源目录。user导入后表的属主。导入后表的属主。 - [IMPDP TABLE PREPARE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0642.md): 导入表的准备阶段。directory导入的表的数据源目录。导入的表的数据源目录。user导入后表的属主。导入后表的属主。 - [INSERT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0643.md): 向表中插入一行或多行数据。表的所有者、拥有表INSERT权限的用户或拥有INSERT ANY TABLE权限的用户,可向表中插入数据,三权分立关闭时的系统管理员默认拥有此权限。如果使用RETURNING子句,用户必须要有该表的SELECT权限。如果使用ON DUPLICATE KEY UPDATE,用户必须要有该表的INSERT、UPDA - [LOAD DATA](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0645.md): 将文件中的数据导入到数据库指定表中。LOAD DATA语法仅在MYSQL兼容模式(sql_compatibility = 'MYSQL')下支持。LOAD DATA语法仅在开启b_format_version='5.7'和b_format_dev_version='s2'参数后与MYSQL功能一致。LOAD DATA语法权限相关GUC参数 - [LOCK](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0646.md): LOCK TABLE命令用于获取表级锁。GaussDB在为一个引用了表的命令自动请求锁时,尽可能选择最小限制的锁模式。如果用户需要一种更为严格的锁模式,可以使用LOCK命令。例如,一个应用是在Read Committed隔离级别上运行事务,并且它需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,可以在查询之前对表使用SHARE - [LOCK BUCKETS](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0647.md): bucket粒度的锁。仅支持在hashbucket扩容期间调用。LOCK BUCKETS只能在一个事务块的内部有用,因为锁在事务结束时就会被释放。出现在任意事务块外面的LOCK BUCKETS都会报错。LOCK BUCKETS的参数说明如下所示:bucketlist要锁定的bucket的列表。取值范围:对于每个bucket,取值范围为[0 - [MARK BUCKETS](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0649.md): 用于扩容工具通知内核哪些bucket已经完成搬迁。仅支持在hashbucket扩容期间调用。只支持管理员权限用户调用。bucketlist已完成搬迁的bucket列表。取值范围:对于每个bucket,取值范围为[0,1023]。已完成搬迁的bucket列表。取值范围:对于每个bucket,取值范围为[0,1023]。datanode_na - [MERGE INTO](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0650.md): 通过MERGE INTO语句,将目标表和源表中的数据针对关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,无法匹配时对目标表执行INSERT。此语法可以很方便地用来合并执行UPDATE和INSERT,避免多次执行。进行MERGE INTO操作的用户需要同时拥有目标表的UPDATE和INSERT权限,以及源表的SELECT权限。不 - [MOVE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0651.md): MOVE在不检索数据的情况下重新定位一个游标。MOVE的作用类似于FETCH命令,区别是MOVE只重定位游标而不返回行。其中direction子句为可选参数。MOVE命令的参数与FETCH的相同,详细请参见FETCH的参数说明。成功完成时,MOVE命令将返回一个“MOVE count”的标签,count是一个使用相同参数的FETCH命令会 - [PREDICT BY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0653.md): 利用完成训练的模型进行推测任务。当前版本形态暂不支持训练模型进行推测任务,不支持使用该语法。 - [PREPARE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0654.md): 创建一个预备语句。预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。 - [PREPARE TRANSACTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0655.md): 为当前事务做两阶段提交的准备。在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。一旦准备好了,一个事务就可以在稍后用COMMIT PREPARED或 ROLLBACK PREPARED命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初 - [PURGE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0656.md): 使用PURGE语句可以实现如下功能:从回收站中清理表或索引,并释放对象相关的全部空间。清理回收站。清理回收站中指定表空间的对象。清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、回收站(PURGE RECYCLEBIN)。清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE I - [REASSIGN OWNED](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0658.md): 修改数据库对象的所有者。REASSIGN OWNED用于将旧角色的数据库对象所有者改为新角色。REASSIGN OWNED常用于在删除角色之前的准备工作。执行REASSIGN OWNED需要有原角色和目标角色上的权限。old_role旧属主的角色名。旧属主的角色名。new_role将要成为这些对象属主的新角色的名称。注意:只有初始用户才可 - [REFRESH INCREMENTAL MATERIALIZED VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0659.md): REFRESH INCREMENTAL MATERIALIZED VIEW会以增量刷新的方式对物化视图进行刷新。增量刷新仅支持增量物化视图。刷新物化视图需要当前用户拥有基表的SELECT权限。mv_name要刷新的物化视图的名称。要刷新的物化视图的名称。ALTER MATERIALIZED VIEW,CREATE INCREMENTAL - [REFRESH MATERIALIZED VIEW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0660.md): REFRESH MATERIALIZED VIEW会以全量刷新的方式对物化视图进行刷新。全量刷新既可以对全量物化视图执行,也可以对增量物化视图执行。刷新物化视图需要当前用户拥有基表的SELECT权限。mv_name要刷新的物化视图的名称。要刷新的物化视图的名称。ALTER MATERIALIZED VIEW,CREATE INCREMEN - [REINDEX](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0661.md): 为表中的数据重建索引。在以下几种情况下需要使用REINDEX重建索引:索引崩溃,并且不再包含有效的数据。索引变得“臃肿”,包含大量的空页或接近空页。为索引更改了存储参数(例如填充因子),并且希望这个更改完全生效。REINDEX DATABASE和SYSTEM这种形式的重建索引不能在事务块中执行。对于全局二级索引,当前仅支持REINDEX - [RELEASE SAVEPOINT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0662.md): RELEASE SAVEPOINT删除一个当前事务先前定义的保存点。把一个保存点删除就令其无法作为回滚点使用,除此之外它没有其它用户可见的行为。它并不能撤销在保存点建立起来之后执行的命令的影响,要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。当不再需要的时候删除一个保存点可以令系统在事务结束之前提前回收一些资源。REL - [RENAME TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0663.md): 同一条语句中,修改单个表或多个表的名称,对名称的修改不会影响所存储的数据。当对单个表修改表名称时,与ALTER TABLE中RENAME语法等价。当对多个表修改表名称时,与同时执行多次ALTER TABLE中RENAME语法等价;但不支持多组表中,同时存在本地临时表和非本地临时表修改表名称场景。修改表的名称。在MYSQL模式库中的5.7版 - [REPLACE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0664.md): 在表中插入或者替换新的数据。当插入的数据与原有数据存在主键或唯一键冲突时,执行REPLACE语句会先删除原有数据,再插入新的数据。REPLACE语句有如下三种形式:值替换插入。即通过VALUES或VALUE构造一行记录并插入到表中。查询替换插入。通过SELECT子句返回的结果集构造一行或多行记录插入到表中。设定指定字段值。与值插入类似,对 - [RESET](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0665.md): RESET将指定的运行时参数恢复为缺省值。这些参数的缺省值是指gaussdb.conf配置文件中所描述的参数缺省值。RESET命令与如下命令的作用相同:RESET的事务性行为和SET相同,它的影响将会被事务回滚撤销。configuration_parameter运行时参数的名称。取值范围:可以使用SHOW ALL命令查看运行时参数。部分通 - [REVOKE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0666.md): REVOKE用于撤销一个或多个角色的权限。对业务系统用户进行权限授予或执行revoke操作时可能引发实例或业务异常,请谨慎操作。非对象所有者试图在对象上REVOKE权限,命令按照以下规则执行:如果授权用户没有该对象上的权限,则命令立即失败。如果授权用户有部分权限,则只撤销那些有授权选项的权限。如果授权用户没有授权选项,REVOKE ALL - [ROLLBACK](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0667.md): 回滚当前事务并取消当前事务中的所有更新。在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,数据库状态回到事务开始时。如果不在一个事务内部发出ROLLBACK就不会有问题,但是将抛出一个NOTICE信息。WORK | TRANSACTION可选关键字。除了增加可读性,没有任何其他作用。COM - [ROLLBACK PREPARED](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0668.md): 取消一个先前为两阶段提交准备好的事务。该功能仅在维护模式(GUC参数xc_maintenance_mode为on时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。要想回滚一个预备事务,必须是最初发起事务的用户,或者是系统管理员。事务功能由数据库自动维护,不应显式使用事务功能。分布式环境对外部不支持ROLLBA - [ROLLBACK TO SAVEPOINT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0669.md): ROLLBACK TO SAVEPOINT用于回滚到一个保存点,隐含地删除所有在该保存点之后建立的保存点。回滚所有指定保存点建立之后执行的命令。保存点仍然有效,并且需要时可以再次回滚到该点。不能回滚到一个未定义的保存点,语法上会报错。在保存点方面,游标有一些非事务性的行为。任何在保存点里打开的游标都会在回滚掉这个保存点之后关闭。如果一个前 - [SAVEPOINT](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0671.md): SAVEPOINT用于在当前事务里建立一个新的保存点。保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。保存点只能在一个事务 - [SECURITY LABEL ON](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0672.md): 应用更新或取消安全标签。初始用户,具有SYSADMIN权限的用户或者继承了内置角色gs_role_seclabel权限的用户有权限应用更新或取消安全标签。objname对于ROLE和USER,objname表示角色/用户名。对于TABLE,objname表示表名,名称前可加上模式名。对于COLUMN,objname表示表名.列名,名称前可 - [简单查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0674.md): 简单查询是指从一个或多个表或视图中检索一个或多个列数据的操作。以下示例作为一个典型的简单查询,展示在指定的表中查询部分信息和全部信息的操作。 - [条件查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0675.md): 条件查询是指查询出符合条件的数据。以下示例作为一个典型的条件查询,展示在指定的表中根据具体的查询条件进行查询结果展示的操作。 - [分组查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0676.md): 分组查询通常用于配合聚集函数,查询分类统计的信息。常见的聚集函数有总行数count()、求和sum()、平均值avg()、最小值min()、最大值max()。一般和GROUP BY联合使用。sql_mode中包含ONLY_FULL_GROUP_BY选项,用于校验GROUP BY 列表与SELECT列表。--建表并插入数据。 gaussdb - [分页查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0677.md): 语法如下:offset :表示从第几行向后开始。count:表示向后查询几条数据。ALL:表示向后查询所有的数据。 - [分区查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0678.md): 查询指定分区的数据。以下示例作为一个典型的分区查询,展示在指定的表中对信息进行分区操作,并根据指定分区进行查询的操作。 - [连接查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0679.md): 连接查询也可称为跨表查询,需要关联多个表进行查询。--建表并插入数据。 gaussdb=#CREATE TABLE emp( id int, --员工编号 name varchar, --员工姓名 deptno int --所属部门编号 ); gaussdb=#CREATE TAB - [子查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0680.md): 一个查询可以嵌套在另一个查询中,其结果作为另一个查询的数据来源或判断条件。其中外层查询也叫父查询,内层查询也叫子查询。按照子查询的返回记录数分类可分为单行子查询,多行子查询。按照子查询是否被执行多次分类可分为关联子查询,非关联子查询。单行子查询操作符有>=、>、<=、<、<>。多行子查询操作符:in:等于列表中的任意一个。any:需要和单 - [复合查询](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0681.md): 包含复合运算符的查询,即复合查询。所有的复合查询都具有相同的优先级,参加集合操作的各查询结果的列数、表达式的数量都必须一致,类型必须兼容。常见的集合运算有:UNION:两个查询结果集的并集,对结果进行去重。UNION ALL:两个查询的并集,只将两个查询的结果合并。INTERSECT:两个查询的交集(只查询重复的数据)。MINUS:查询用 - [行转列与列转行](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0682.md): 行转列--建表并插入数据。 gaussdb=#CREATE TABLE test_p2(id INT, class VARCHAR(20), score INT); gaussdb=#INSERT INTO test_p2 VALUES (1,'math',64), (1,'english',78); gaussdb=#INSERT IN - [SELECT INTO](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0683.md): SELECT INTO用于根据查询结果创建一个新表,并且将查询到的数据插入到新表中。和普通的SELECT不同,SELECT INTO数据并不返回给客户端。新表的字段具有和SELECT的输出字段相同的名称和数据类型。CREATE TABLE AS的作用和SELECT INTO类似,且提供了SELECT INTO所提供功能的超集。建议使用CR - [SET](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0684.md): 用于修改运行时配置参数。大多数运行时参数都可以用SET在运行时设置,但有些则在服务运行过程中或会话开始之后不能修改。设置所处的时区。SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT };设置所属的模式。SET [ SESSION | LOCAL ] {C - [SET CONSTRAINTS](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0685.md): SET CONSTRAINTS设置当前事务检查行为的约束条件。IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED、DEFERRABLE INITIALLY IMMEDIATE和N - [SET ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0686.md): 设置当前会话的当前用户标识符。当前会话的用户必须是指定的rolename角色的成员,当三权分立关闭时,系统管理员可以选择任何角色。使用这条命令,它可能会增加一个用户的权限,也可能会限制一个用户的权限。如果会话用户的角色有INHERITS属性,则它自动拥有它能SET ROLE变成的角色的所有权限;在这种情况下,SET ROLE实际上是删除了 - [SET SESSION AUTHORIZATION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0687.md): 把当前会话里的会话用户标识和当前用户标识都设置为指定的用户。只有在初始会话用户有系统管理员权限的时候,会话用户标识符才能改变。否则,只有在指定了被认证的用户名的情况下,系统才接受该命令。为当前会话设置会话用户标识符和当前用户标识符。SET [ SESSION | LOCAL ] SESSION AUTHORIZATION role_nam - [SET TRANSACTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0688.md): 为事务设置特性。事务特性包括事务隔离级别、事务访问模式(读/写或者只读)。可以设置当前事务的特性(LOCAL),也可以设置会话的默认事务特性(SESSION)。设置当前事务特性需要在事务中执行(即执行SET TRANSACTION之前需要执行START TRANSACTION或者BEGIN),否则设置不生效。设置事务的隔离级别、读写模式。 - [SHOW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0689.md): SHOW将显示当前运行时参数的数值。configuration_parameter运行时参数的名称。取值范围:可以使用SHOW ALL命令查看运行时参数。部分通过SHOW ALL查看的参数不能通过SET设置,如max_datanodes。运行时参数的名称。取值范围:可以使用SHOW ALL命令查看运行时参数。部分通过SHOW ALL查看的 - [SHUTDOWN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0690.md): SHUTDOWN将关闭当前连接的数据库节点。仅拥有管理员权限的用户可以运行此命令。分布式数据库不支持SHUTDOWN命令。FAST | IMMEDIATEFAST表示不等待客户端中断连接,将所有活跃事务回滚并且强制断开客户端,然后关闭数据库节点。IMMEDIATE表示强行关闭,在下次重新启动的时候将导致故障恢复。若不指定关闭模式,默认为F - [START TRANSACTION](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0691.md): 通过START TRANSACTION启动事务。如果声明了隔离级别、读写模式,那么新事务就使用这些特性,类似执行了SET TRANSACTION。使用START TRANSACTION时,自动提交保持禁用状态,直到COMMIT或结束事务ROLLBACK,自动提交模式才将恢复为初始状态。格式一:START TRANSACTION格式格式二: - [TIMECAPSULE TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0693.md): 在人为操作或应用程序错误时,使用TIMECAPSULE TABLE语句恢复可将表恢复到一个早期状态。表可以闪回到过去的时间点,这依赖于系统中保存的旧版本数据。此外GaussDB数据库不能恢复到通过DDL操作改变了表结构的早期状态。TIMECAPSULE TABLE语句的用法主要分为两大类:闪回旧版本数据和从回收站中闪回。TO TIMECA - [TRUNCATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0694.md): 清理表数据,TRUNCATE快速地从表中删除所有行。它和在目标表上进行无条件的DELETE有同样的效果,但由于TRUNCATE不做表扫描,因而快得多。在大表上操作效果更明显。TRUNCATE TABLE在功能上与不带WHERE子句DELETE语句相同:二者均删除表中的全部行。TRUNCATE TABLE比DELETE速度快且使用系统和事务 - [UPDATE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0696.md): 更新表中的数据,UPDATE对满足条件的所有行中指定的字段值进行修改;WHERE子句表示声明条件;SET子句中指定的字段将会被修改,没有出现的字段则保持原有的字段值。表的所有者、拥有表UPDATE权限的用户或拥有UPDATE ANY TABLE权限的用户,皆有权限更新表中的数据,当三权分立开关关闭时,系统管理员默认拥有此权限。UPDATE - [VACUUM](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0698.md): VACUUM回收表或B-Tree索引中已经删除的行所占据的存储空间。在一般的数据库操作里,那些已经DELETE的行并没有从它们所属的表中物理删除;在完成VACUUM之前它们仍然存在。因此有必要周期地运行VACUUM,特别是在经常更新的表上。如果没有参数,VACUUM处理当前数据库里用户拥有相应权限的每个表。如果参数指定了一个表,VACUU - [VALUES](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0699.md): 根据给定的值表达式计算一个或一组行的值。它通常用于在一个较大的命令内生成一个“常数表”。应当避免使用VALUES返回数量非常大的结果行,否则可能会出现内存耗尽或者性能低下的情况。出现在INSERT中的VALUES是一个特殊情况,因为目标字段类型可以从INSERT的目标表获知,并不需要通过扫描VALUES列表来推测,所以在此情况下可以处理非 - [扩展函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0706.md): 下表列举了GaussDB中支持的扩展函数,不作为商用特性交付,仅供参考。 - [美元引用的字符串常量](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0708.md): 如果在字符串序列中包含有'(单引号),那么应当将'(单引号)加倍为''(两个单引号)否则sql语句很可能无法执行。如果字符串中包含很多单引号或者反斜杠,那么理解字符串的内容可能就会变得很苦涩,并且容易出错,因为单引号都要加倍。为了让这种场合下的查询更具可读性,允许另外一种称作“美元符界定”的字符串常量书写办法。一个通过美元符界定声明的字符 - [DATABASE LINK](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0709.md): 在本地数据库利用DATABASE LINK与远程数据库建立连接,并通过DATABASE LINK对远程数据库进行访问。DATABASE LINK可以分为public或private,private DATABASE LINK仅能被创建者访问,而当DATABASE LINK为public时则所有用户都能访问。所有已创建的DATABASE L - [行表达式函数白名单](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0710.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [SQL查询最佳实践](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0713.md): 根据数据库的SQL执行机制以及大量的实践总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。使用UNION ALL代替UNIONUNION在合并两个集合时会执行去重操作,而UNION ALL则直接将两个结果集合并、不执行去重。执行去重会消耗大量的时间,因此,在一些实际应用场景中,如果通过业务逻辑已确认两 - [权限配置最佳实践](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0714.md): 一个数据库可能有很多的用户需要访问,为了方便管理这些用户,将用户组成一个数据库角色。一个数据库角色可以视为一个数据库用户或者一组数据库用户。对于数据库来说,用户和角色是基本相同的概念,不同之处在于,使用CREATE ROLE创建角色,不会创建同名的SCHEMA,并且默认没有LOGIN权限;而使用CREATE USER创建用户,会自动创建同 - [快速定位查询存储倾斜的表](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0716.md): 目前提供的倾斜查询接口有函数:table_distribution(schemaname text, tablename text)、table_distribution()以及视图PGXC_GET_TABLE_SKEWNESS,客户可以根据自身业务情况来选择使用。首先,通过pg_stat_get_last_data_changed_ti - [PL/SQL语言函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0752.md): PL/SQL是一种可载入的过程语言。用PL/SQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可用于创建复杂条件的计算函数、定义操作符以及索引表达式。SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。这意味着客户端应用对于每一个查询都要执行以下过程:发送查询到数据库服务器 - [存储过程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0754.md): 商业规则和业务逻辑可以通过程序存储在GaussDB中,这个程序就是存储过程。存储过程是SQL、PL/SQL和Java语句的组合。通过存储过程,执行商业规则的代码可以从应用程序层迁移至到数据库层,从而实现代码复用,即代码只需存储一次即可被多个程序调用。存储过程的创建及调用方法,请参见CREATE PROCEDURE。PL/SQL语言函数中所 - [数据类型](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0755.md): 数据类型是一组值的集合以及定义在这个值集上的一组操作。GaussDB数据库是由表的集合组成的,而各表中的列定义了该表,每一列都属于一种数据类型,GaussDB会根据数据类型提供对应的函数进行操作,例如对数值型数据进行加、减、乘、除等操作。XML类型数据支持作为存储过程的入参、出参和自定义变量和返回值。支持自治事务的存储过程。 - [数据类型转换](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0756.md): 数据库系统中,部分数据类型支持隐式类型转换(例如赋值、函数调用的参数等),而部分数据类型禁止隐式数据类型转换(例如INT和复合类型)。可尝试使用GaussDB提供的类型转换函数(如CAST函数)进行数据类型强转。GaussDB数据库常见的隐式类型转换如表1所示。GaussDB支持的DATE的效限范围是:公元前4713年到公元294276年 - [数组类型的使用](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0759.md): 在使用数组之前,需要自定义一个数组类型。在存储过程中紧跟AS关键字后面定义数组类型。定义方法为:TYPE array_type IS VARRAY(size) OF data_type;其中:array_type:要定义的数组类型名。size:取值为正整数,表示可以容纳的成员的最大数量。data_type:要创建的数组中成员的类型。Gau - [数组支持的函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0760.md): 以下示例为ORA兼容模式下的示例,函数定义说明里[]中的内容代表可选项,如count[()]表示可以写成count或count()。暂不支持数组未初始化报错(Reference to uninitialized collection)、数组下标越界报错(Subscript beyond count)、数组下标超限制报错(Subscript - [集合类型的使用](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0762.md): 在使用集合之前,需要自定义一个集合类型。在存储过程中紧跟AS关键字后面定义集合类型。定义方法如下。其中:table_type:要定义的集合类型名。data_type:要创建的集合中成员的类型。indexby_type:创建集合索引的类型。以变长数组的方式存储指定数据类型的成员,用户可以通过extend函数扩展存储空间,通过trim函数释放 - [集合支持的函数](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0763.md): =参数:nesttable类型。返回值:TRUE或FALSE,BOOLEAN类型。功能描述:判断两个集合是否相等。示例:gaussdb=#declare gaussdb-# type nest is table of int; gaussdb-# a nest := nest(1,2); gaussdb-# b n - [record](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0764.md): 定义一个record类型 ,然后使用该类型来声明一个变量,该变量即为record变量。定义record类型的语法为:其中field_declaration为:对以上语法格式的解释如下:type_name:声明的类型名称。field_name:record类型中的成员名称。datatype:record类型中成员的类型。expression - [基本结构](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0766.md): PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下:声明部分:声明PL/SQL用到的变量、类型、游标以及局部存储过程和函数。DECLARE不涉及变量声明时声明部分可以没有。对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。对存储过程来说,不使用DECLARE关键字时, AS关键字等同于 - [匿名块](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0767.md): 匿名块(Anonymous Block)一般用于不频繁执行的脚本或不重复进行的活动。它们在一个会话中执行,并不被存储。匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。输入“/”按回车执行它。最后的结束符“/”必须独占一行,不能直接跟在END后面。最后的结束符“/”必须独占一行,不能直接跟在END后面。声明部分包 - [独立的子程序](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0769.md): 在Schema内创建的子程序,在Schema内创建的存储过程、函数、包等。详细使用请参考:CREATE PACKAGECREATE FUNCTIONCREATE PROCEDURE - [包内的子程序](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0770.md): 在包体内创建的子程序,在包内声明创建的存储过程及函数。详细使用请参考:CREATE PACKAGE。 - [嵌套的子程序](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0771.md): 在PL/SQL块内创建的子程序,支持在匿名块、存储过程、函数、包内的存储过程及函数中,声明并创建子存储过程或子函数。在ORA兼容性数据库下使用。最大嵌套层数限制通过GUC参数max_subpro_nested_layers控制(默认值为3,取值范围0~100)。如果嵌套子程序中含有匿名块,匿名块不计算层数,但匿名块内的嵌套子程序计入到总层 - [定义变量](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0773.md): 介绍PL/SQL中变量的声明,以及该变量在代码中的作用域。变量声明语法如图1所示。对以上语法格式的解释如下:variable_name,为变量名。type,为变量类型。value,是该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。示例变量类型除了支持基本类型,还可使用%TYPE和%ROWTYPE去声明一些与 - [赋值语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0774.md): 给变量赋值的语法如图1所示。对以上语法格式的解释如下:variable_name,为变量名。value,可以是值或表达式。值value的类型需要和变量variable_name的类型兼容才能正确赋值。将存储过程内语句返回的值存储到变量内,BULK COLLECT INTO允许将部分或全部返回值暂存到数组内部。对以上语法格式的解释如下:se - [调用语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0775.md): 调用一个语句的语法请参见图1。对以上语法格式的解释如下:procedure_name,为存储过程名。parameter,为存储过程的参数,可以没有或者有多个参数。 - [执行动态查询语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0777.md): 介绍执行动态查询语句。GaussDB提供两种方式:使用EXECUTE IMMEDIATE、OPEN FOR实现动态查询。前者通过动态执行SELECT语句,后者结合了游标的使用。当需要将查询的结果保存在一个数据集用于提取时,可使用OPEN FOR实现动态查询。语法图请参见图1。using_clause子句的语法图参见图2。对以上语法格式的解 - [执行动态非查询语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0778.md): 语法请参见图1。using_clause子句的语法参见图2。对以上语法格式的解释如下:USING IN bind_argument用于指定存放传递给动态SQL值的变量,在dynamic_noselect_string中存在占位符时使用,即动态SQL语句执行时,bind_argument将替换相对应的占位符。要注意的是,bind_argum - [动态调用存储过程](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0779.md): 动态调用存储过程必须使用匿名的语句块将存储过程或语句块包在里面,使用EXECUTE IMMEDIATE…USING语句后面带IN、OUT来输入、输出参数。语法请参见图1。using_clause子句的语法参见图2。对以上语法格式的解释如下:CALL procedure_name,调用存储过程。[:placeholder1,:placeho - [动态调用匿名块](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0780.md): 动态调用匿名块是指在动态语句中执行匿名块,使用EXECUTE IMMEDIATE…USING语句后面带IN、OUT来输入、输出参数。动态调用匿名块语法如图1所示。using_clause子句的语法如图2所示。对以上语法格式的解释如下:匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。USING [IN|OUT| - [RETURN](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0783.md): 返回语句的语法请参见图1。对以上语法的解释如下:用于将存储过程或函数返回结果赋值给调用者。请参见调用语句的示例。 - [RETURN NEXT及RETURN QUERY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0784.md): 创建函数时需要指定返回值SETOF datatype。return_next_clause::=return_next_clause::=语句如图1所示。return_next_clause::=return_next_clause::=语句如图1所示。return_query_clause::=return_query_clause:: - [条件语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0785.md): 条件语句的主要作用判断参数或者语句是否满足已给定的条件,根据判定结果执行相应的操作。GaussDB有五种形式的IF:IF_THENIF_THEN::=语句如图1所示。IF_THEN::=IF_THEN语句是IF的最简单形式。如果条件为真,statements将被执行。否则,将忽略它们的结果使该IF_THEN语句执行结束。示例gaussdb - [循环语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0786.md): 语法图loop::=语句如图1所示。label declaration ::=语句如图2所示。示例该循环必须要结合EXIT使用,否则将陷入死循环。语法图while_loop::=语句如图3所示。label declaration ::=语句如图4所示。只要条件表达式为真,WHILE语句就会不停地在一系列语句上进行循环,在每次进入循环体的时 - [分支语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0787.md): 分支语句的语法请参见图1。when_clause子句的语法图参见图2。参数说明:case_expression:变量或表达式。when_expression:常量或者条件表达式。statement:执行语句。 - [空语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0788.md): 在PL/SQL程序中,可以用NULL语句来说明“不用做任何事情”,相当于一个占位符,可以使某些语句变得有意义,提高程序的可读性。空语句的用法如下:参数说明:v_num:变量或表达式。 - [错误捕获语句](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0789.md): 缺省时,当PL/SQL函数执行过程中发生错误时退出函数执行,并且周围的事务也会回滚。可以用一个带有EXCEPTION子句的BEGIN块捕获错误并且从中恢复。其语法是正常的BEGIN块语法的一个扩展:[<