华为云用户手册

  • MY_IND_COLUMNS MY_IND_COLUMNS视图显示当前用户下所有索引的字段信息。所有用户都可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。具体字段信息如表1所示。 表1 MY_IND_COLUMNS字段 名称 类型 描述 index_owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名。 table_owner character varying(64) 表的所有者。 table_name character varying(64) 表名。 column_name name 列名。 column_position smallint 索引中列的位置。 column_length numeric 列的长度,如果列是变长类型,该字段取值为NULL。 char_length numeric 列的最大字节长度。 descend character varying(4) 表示列是按降序(DESC)还是升序(ASC)排序。 collated_column_id numeric 暂不支持,值为NULL。 父主题: 其他系统视图
  • GLOBAL_STAT_USER_TABLES 显示各节点所有Schema中用户自定义普通表的状态信息(在CN节点使用。显示DN节点用户自定义普通表的状态信息,不进行汇总),如表1所示。 表1 GLOBAL_STAT_USER_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表所在的Schema名。 relname name 表名。 seq_scan bigint 此表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 此表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计不活跃行数。在Ustore表中仅代表不活跃行指针数量。 last_vacuum timestamp with time zone 最后一次此表是手动清理的(不计算VACUUM FULL)时间。 last_autovacuum timestamp with time zone 上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次手动分析此表的时间。 last_autoanalyze timestamp with time zone 上次被autovacuum守护线程分析的时间。 vacuum_count bigint 此表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count bigint 此表被autovacuum清理的次数。 analyze_count bigint 此表被手动分析的次数。 autoanalyze_count bigint 此表被autovacuum守护线程分析的次数。 父主题: Object
  • enable_rls_match_index 参数说明:控制是否支持在行级访问控制特性使用场景中,基于目标谓词条件对基表执行索引扫描。目标场景为:基表设置并开启了RLS(Row Level Security)策略,查询谓词中包含unleakproof类型系统函数或like操作符。 参数类型:布尔型 参数单位:无 取值范围: on:支持目标场景下的基表索引扫描。 off:不支持目标场景下的基表索引扫描。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。若业务热点查询语句为目标场景,且基表行级访问策略数量较少,可打开该开关以显著提升查询性能。 设置不当的风险与影响:此参数设置为on,在位图扫描算子切换为lossy模式且RLS策略数目较多时,会导致过滤谓词重复执行,影响性能。 该参数的修改,会影响目标场景下执行计划的生成,可通过重连、创建操作符等方式手动使缓存计划失效。 该参数开启后,会影响到位图扫描算子的生成,RLS策略谓词将被插入到Recheck过滤条件中;因此,在该算子切换为lossy模式且RLS策略数目较多时,会对性能产生一定影响。
  • restrict_nonsystem_relation_kind 参数说明:控制是否能访问用户创建的关系对象类型。 参数类型:字符串 参数单位:无 取值范围: "":表示不进行任何限制。 "view":表示禁用对用户创建的视图进行访问。 "foreign-table":表示禁用对用户创建的外表进行访问。 默认值:"" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:设置为默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。 在gs_dump执行导出的过程中,为防止恶意攻击,需要禁用访问用户创建的视图和外表,工具会将此参数的值会话级设置为'view, foreign-table',无需用户手动配置。
  • elastic_search_ip_addr 参数说明:Elastic Search系统IP地址,使用https协议格式为:https://ip:port:username;使用http协议格式为:http://ip:port。其中,ip为Elastic Search服务器的IP,port为Elastic Search HTTP通信的侦听端口,范围为9200 - 9299,username为用户在Elastic Search注册账号所使用的用户名,初始用户为elastic。使用https协议需要配置相关证书,详见《安全加固指南》中“统一审计“章节。 参数类型:字符串 参数单位:无 取值范围:合法IP字符串或空字符串。 默认值:"" 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,需要将统一审计日志发送至Elastic Search系统时且use_elastic_search为on时设置。 设置不当的风险与影响:需要保证该参数取值对应的es服务可正常连通,否则进程启动会失败。
  • tde_index_default_encrypt 参数说明:创建索引时,如果开启本参数,并且索引的基表是加密表,则数据库会自动将索引设置为加密索引,并自动为索引复制基表的加密算法、密钥等加密参数,对索引中的数据先加密再存储。 参数类型:布尔型 参数单位:无 取值范围: on:自动对加密表的索引设置加密参数。 off:不自动对加密表的索引设置加密参数。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:如果所有加密表的索引都需要被加密,可开启该参数,无需手动将索引设置为加密索引。 设置不当的风险与影响:如果将参数设置为on,在加密表上创建的索引将被自动加密,影响查询索引的性能。
  • block_encryption_mode 参数说明:aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。 参数类型:枚举类型 参数单位:无 取值范围:有效值有aes-128-cbc、aes-192-cbc、aes-256-cbc、aes-128-cfb1、aes-192-cfb1、aes-256-cfb1、aes-128-cfb8、aes-192-cfb8、aes-256-cfb8、aes-128-cfb128、aes-192-cfb128、aes-256-cfb128、aes-128-ofb、aes-192-ofb、aes-256-ofb。其中aes表示加/解密算法,128/192/256表示密钥长度(单位:bit),cbc/cfb1/cfb8/cfb128/ofb表示块加/解密模式。 默认值:aes-128-cbc 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,可以根据实际业务需要进行调整。 设置不当的风险与影响:影响aes_encrypt和aes_decrypt函数的使用。
  • enable_mac_check 参数说明:表示基于标签的强制访问控制是否生效。 参数类型:布尔型 参数单位:无 取值范围: on:表示基于标签的强制访问控制生效。 off:表示基于标签的强制访问控制不生效。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,可以根据实际业务需要进行调整。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • tde_dkcache_remain_time 参数说明:用于设置透明加密数据密钥缓存有效时长。 参数类型:整型 参数单位:h(时) 取值范围:0 ~ 1440 默认值:1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:建议设置为默认值,不做调整。 设置不当的风险与影响:设置为0或过大值可能导致数据库内存中长期驻留不被使用的透明加密数据密钥缓存。 该参数设置为零值,则透明加密数据密钥缓存永久生效,不会从内存中清理。 该参数设置为非零值,则透明加密数据密钥缓存仅在超过tde_dkcache_remain_time小时未被使用时,才会从内存中清理(每小时周期性清理)。
  • use_elastic_search 参数说明:统一审计发送日志至Elastic Search系统,enable_security_policy打开且本参数打开后,统一审计日志会通过http(https)传递至Elastic Search系统(默认使用https安全协议)。 参数类型:布尔型 参数单位:无 取值范围: on:开启统一审计日志发送至Elastic Search。 off:关闭统一审计日志发送至Elastic Search。 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,需要将统一审计日志发送至Elastic Search系统时开启。 设置不当的风险与影响:此参数打开后需要保证elastic_search_ip_addr对应的es服务可正常连通,否则进程启动失败。
  • Schema GaussDB 的Schema如表1所示。 数据库禁止在提供功能接口的Schema下创建用户的业务数据,包括但不限于表、函数等(dbe_*, pkg_*)。 表1 GaussDB支持的Schema Schema名称 描述 blockchain 用于存储账本数据库特性中创建防篡改表时自动创建的用户历史表。 dbe_perf DBE_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源。数据库安装后,默认只有初始用户和监控管理员具有模式dbe_perf的权限,有权查看该模式下的视图和函数。 snapshot 用于管理WDR snapshot的相关的数据信息,默认初始化用户或监控管理员用户可以访问。 sqladvsior 用于分布列推荐,具体使用方法见分布列推荐函数。 sys 用于提供系统信息视图接口。 pg_catalog 用于维护系统的catalog信息,包含系统表和所有内置数据类型、函数、操作符。 pg_toast 用于存储大对象(系统内部使用)。 public 公共模式,用于存储公共对象。search_path参数缺省时,如果存在用户同名的模式则将创建的表(以及其他对象)默认创建到同名模式下,不存在用户同名模式则自动放入public模式。 pkg_service 用于管理package服务相关信息。 pkg_util 用于管理package工具相关信息。 dbe_raw 高级功能包dbe_raw,用于raw类型数据的转化、取子串、求长度等操作。 dbe_session 高级功能包dbe_session,用于设置指定属性的值,并支持用户查询校验。 dbe_lob 高级功能包dbe_lob,用于大文件(clob/blob)的读取、写入、复制等操作。 dbe_match 高级功能包dbe_match,用于字符串相似度比较。 dbe_task 高级功能包dbe_task,用于作业任务的调度包括提交任务、取消任务、同步任务状态、更新任务信息等可以使数据库定期执行特定的任务。 dbe_sql 高级功能包dbe_sql,用于执行动态sql,可以在应用的运行时间构建查询和其它的命令。 dbe_file 高级功能包dbe_file,用于数据库外部文件的读取、复制、写入、删除、重命名等。 dbe_output 高级功能包dbe_output,用于打印输出信息。 dbe_random 高级功能包dbe_random,用于生成随机种子和随机数。 dbe_application_info 高级功能包dbe_application_info,用于记录客户端信息。 dbe_utility 高级功能包dbe_utility,用于存储过程调用调试工具,例如打印错误堆栈等。 dbe_scheduler 高级功能包dbe_scheduler,用于创建定时任务,通过程序(program)、调度(schedule)使数据库定期执行特定的任务。也可以通过授权、提供证书执行数据库外部任务。 information_schema 用于存储有关当前数据库中定义的对象的信息。 dbe_sql_util SQL运维功能,目前包含SQL Patch的运维接口。 dbe_xmlgen 高级功能包dbe_xmlgen,用于将查询结果转换成xml字符串。 dbe_describe 高级功能包dbe_describe,用于查询存储过程或函数的参数信息。 表2 GaussDB目前禁用的Schema Schema名称 描述 dbe_pldebugger 用于调试PL/SQL函数及存储过程,目前暂不支持,该视图下接口调用报错unsupported。 db4ai 用于管理AI训练中不同版本的数据信息。 Information Schema DBE_PERF Schema WDR Snapshot Schema DBE_SQL_UTIL Schema DBE_PLDEBUGGER Schema DBE_PLDEVELOPER
  • 注意事项 当分配的句柄并非环境句柄时,如果SQLAllocHandle返回的值为SQL_ERROR,则它会将OutputHandlePtr的值设置为SQL_NULL_HDBC、SQL_NULL_HSTMT或SQL_NULL_HDESC。之后,通过调用带有适当参数的SQLGetDiagRec,其中HandleType和Handle被设置为IntputHandle的值,可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
  • 参数 表1 SQLAllocHandle参数 关键字 参数说明 HandleType 由SQLAllocHandle分配的句柄类型。必须为下列值之一: SQL_HANDLE_ENV(环境句柄) SQL_HANDLE_DBC(连接句柄) SQL_HANDLE_STMT(语句句柄) SQL_HANDLE_DESC(描述句柄) 申请句柄顺序为,先申请环境句柄,再申请连接句柄,最后申请语句句柄。后申请的句柄依赖它前面申请的句柄。 InputHandle 将要分配的新句柄的类型。InputHandle参数用于指定创建句柄的父句柄,以建立句柄之间的层次关系。不同类型的句柄有不同的层次关系,InputHandle参数用于指定这种关系。 如果HandleType为SQL_HANDLE_ENV,则该值为SQL_NULL_HANDLE,表示没有父句柄。 如果HandleType为SQL_HANDLE_DBC,则它一定是一个环境句柄,表示该连接句柄是在该环境下创建的。 如果HandleType为SQL_HANDLE_STMT或SQL_HANDLE_DESC,则它一定是一个连接句柄,表示该语句句柄是在该连接下创建的。 OutputHandlePtr 输出参数:OutputHandlePtr是一个指向SQLHANDLE类型的指针,用于返回分配的新句柄。
  • 参数 表1 数据库连接参数 参数名称 参数说明 host 主机IP地址,也可通过环境变量${PGHOST}来指定。 port 主机服务器的端口号,也可通过环境变量${PGPORT}来指定。 dbname 数据库名,也可通过环境变量${PGDATABASE}来指定。 user 要连接的用户名,也可通过环境变量${PGUSER}来指定。 password 要连接用户对应的连接密码。 connect_timeout 用于连接服务器操作的超时值,也可通过环境变量${PGCONNECT_TIMEOUT}来指定。 sslmode 启用SSL加密的方式,也可通过环境变量${PGSSLMODE}来指定。 参数取值范围: disable:不使用SSL安全连接。 allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 prefer:如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。 require:必须使用SSL安全连接,但是只做了 数据加密 ,而并不验证数据库服务器的真实性。 verify-ca:必须使用SSL安全连接,并验证服务器是否具有由可信任的证书机构签发的证书。 verify-full:必须使用SSL安全连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致。 sslkey 指定用于客户端证书的密钥位置,如果需要使用SSL连接,并且该参数未指定,可通过设置环境变量${PGSSLKEY}来指定。 sslcert 指定客户端SSL证书的文件名,或者通过设置环境变量${PGSSLCERT}来指定。 sslrootcert 指定一个包含SSL证书机构(CA)证书的文件名称,或者通过设置环境变量${PGSSLROOTCERT}来指定。 sslcrl 指定SSL证书撤销列表(CRL)的文件名。列在这个文件中的证书如果存在,在尝试认证该服务器证书时会被拒绝,从而连接失败。也可通过环境变量${PGSSLCRL}来指定。 sslpassword 指定对密钥解密成明文的密码短语,当指定该参数的时候表示sslkey是一个加密存储的文件,当前sslkey支持des/aes加密方式。 说明: DES加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 disable_prepared_binary_result 字符串类型,若设置为yes,表示此连接在从预准备语句接收查询结果时不应使用二进制格式。该参数仅用于调试。 取值范围:yes/no。 binary_parameters 字符串类型,该参数表示是否始终以二进制形式发送[]byte。取值范围:yes/no。若该参数设置为yes,建议绑定参数按照[]byte绑定,可以减少内部类型转换。 target_session_attrs 指定数据库的连接类型,该参数用于识别主备节点,也可通过环境变量${PGTARGETSESSIONATTRS}来指定。默认值为“any”,共有六种:any、master、slave、preferSlave、read-write、read-only。 any:尝试连接URL连接串中的任何一个数据节点。 master:尝试连接到URL连接串中的主节点,如果找不到就抛出异常。 slave:尝试连接到URL连接串中的备节点,如果找不到就抛出异常。 preferSlave:尝试连接到URL连接串中的备数据节点(如果有可用的话),否则连接到主数据节点。 read-write:读写模式,表示只能连接主节点。 read-only:只读模式,表示只能连接备节点。 loggerLevel 日志级别,打印相关调试信息,也可通过环境变量${PGLOGGERLEVEL}来指定。 支持trace/debug/info/warn/error/none,级别从高到低。 说明: 日志或报错信息中若含有安全相关关键字(PASSWORD、GS_ENCRYPT、IDENTIFIED等),Go驱动会使用******代替相关信息。 application_name 设置正在使用连接的GO驱动的名称。缺省值为go-driver,该参数不建议用户配置。 RuntimeParams 设置连接会话时默认运行的set类型的guc参数的值。例如参数名search_path、application_name、timezone等。各参数的详细介绍参见客户端连接缺省设置,可通过show语法查看参数是否设置成功。 autoBalance 字符串类型,分布式环境下,使用该参数开启负载均衡连接。默认值为false,共有六种:true、balance、roundrobin、shuffle、priorityn、false。 设置为true、balance或roundrobin时,表示开启go sql负载均衡功能,将应用程序的多个连接均衡到数据库集群中各个可用的CN。 例如: gaussdb://user:password@host1:port1,host2:port2/database?autoBalance=true Driver将定期获取(周期刷新可使用参数refreshCNIpsTime配置,默认为10s)整个集群可用CN列表,比如获取到的列表为:host1:port1,host2:port2,host3:port3,host4:port4。 host1和host2在autoBalance启用时,仅在首次连接作高可用用途,后续Driver将从host3、host4、host1、host2中依次选择可用的CN刷新可用CN列表,后续用户调用的Connector.Connect将使用RoundRobin算法从host1、host2、host3、host4选取CN主机进行连接。 设置为priorityn表示开启Driver优先级负载均衡功能,将应用程序的多个连接首先均衡到url上配置的前n个中可用的CN数据库节点,当url上配置前n个节点全部不可用时,连接会随机分配到数据库集群中其他可用CN数据库节点。n为数字,不小于0,且小于url上配置的CN数量。 例如: gaussdb://user:password@host1:port1,host2:port2,host3:port3/database?autoBalance=priority2 Driver将定期获取(周期按refreshCNIpsTime定义)整个集群可用CN列表,比如获取到的列表为:host1:port1,host2:port2,host3:port3,host4:port4,host5:port5,host6:port6,其中host1和host2处于AZ1,host3和host4处于AZ2。 Driver将从优先从host1,host2中做负载均衡,host1和host2全部不可用才从host3、host4、host5、host6中随机选择CN主机连接。 设置为shuffle表示开启Driver随机负载均衡功能,将应用程序的多个连接随机均衡到数据库集群中的各个可用CN。 例如: gaussdb://user:password@host1:port1,host2:port2,host3:port3/database?autoBalance=shuffle Driver将定期获取(周期刷新可使用参数refreshCNIpsTime配置,默认为10S)整个集群的可用CN列表,比如获取到的列表为:host1:port1,host2:port2,host3:port3,host4:port4。 host1:port1,host2:port2,host3:port3,仅在首次连接做高可用,后续连接将在刷新后的CN列表中,使用shuffle算法随机选用一个CN节点进行连接。 设置为false时为集中式场景,不开启Driver负载均衡功能和优先级负载均衡功能。默认为false。 说明: 负载均衡是基于连接级别,不是基于事务级别。如果连接是长连接,并且连接上的负载不均衡,无法保证CN主机上的负载是均衡的。 负载均衡仅能在分布式场景下使用,集中式环境中不可使用。 recheckTime integer类型,定期检测数据库集群中CN状态,获取可用CN的IP列表的时间间隔,取值范围为5到60秒,默认为10秒。 usingEip 字符串类型。此值用于控制是否使用弹性公网IP做负载均衡。默认值为yes,表示使用弹性公网IP做负载均衡;no表示使用数据IP做负载均衡。
  • ecpg ecpg(embedded SQL C preprocessor for GaussDB Kernel)是一种用于C语言程序的嵌入式SQL预处理器。一个嵌入式SQL程序由一种普通编程语言编写的代码(此处为C语言)和SQL命令共同组成。要构建该程序,源代码(*.pgc)首先通过嵌入式SQL预处理器,将源代码转换成一个普通C语言程序(*.c),然后再通过编译器处理。转换过的ecpg应用通过嵌入式SQL库(ecpglib)调用libpq库中的函数,与GaussDB Kernel服务器使用普通的前端/后端协议通信。 嵌入式SQL程序是插入了数据库相关动作的特殊代码的C语言程序。这种特殊代码形式通常如下: EXEC SQL ...; 这些语句在语法上取代了一个C语句,可以出现在全局或者是一个函数中。嵌入式SQL语句遵循普通SQL代码的大小写敏感规则,也允许嵌套的C语言代码风格注释(SQL标准的一部分)。不过,程序的C语言部分遵循C语言程序的标准,不支持嵌套注释。 基于ecpg开发详细教程请参见基于ecpg开发。
  • Go Go驱动是一个用于连接和操作 GaussDB数据库 的Go语言驱动。它提供了一些用于连接和操作GaussDB数据库的接口,可以用于执行查询、插入、更新和删除等操作。 以下是Go驱动当前支持的部分功能及其用法: 数据库连接:Go驱动支持通过db.Open连接数据库。连接串支持URL和DSN两种格式。 SQL执行与查询:Go驱动提供接口如db.Exec、db.Query等,可以用于SQL的执行与查询 。 事务管理:Go驱动支持Tx接口进行事务管理,其中实现了启动、提交、回滚事务等方法,确保数据库操作的一致性和完整性。 元数据访问: Go驱动提供ColumnType接口用于查询数据库中列属性信息,包括是否可以为空、数据库类型名称、长度和小数位数等信息。 可重用性:Go驱动提供Prepare方法用于预编译SQL,该SQL可以被多次执行,只需改变传入参数,提高数据库可重用性。 基于Go驱动开发详细教程请参见基于Go驱动开发。
  • ODBC ODBC(Open Database Connectivity,开放数据库互连)是由Microsoft公司基于X/OPEN CLI提出的以C/C++语言来访问数据库的应用程序编程接口。它提供了一种统一的方法,让应用程序可以访问各种数据库管理系统(DBMS),而不用考虑具体的数据库类型或者操作系统平台。ODBC允许应用程序使用SQL来查询、插入、更新和删除数据库中的数据。应用程序通过ODBC提供的API与数据库进行交互,增强了应用程序的可移植性、扩展性和可维护性。 ODBC的架构包括三个主要组件:应用程序、ODBC驱动管理程序和ODBC驱动程序。应用程序使用ODBC API与ODBC驱动管理程序通信,而ODBC驱动管理程序负责加载和管理ODBC驱动程序。ODBC驱动程序则负责与特定的数据库通信,执行SQL查询并返回结果。ODBC的系统架构请参见图1。 总而言之,ODBC提供了一种灵活且跨平台的方法,使得用户可以轻松地将应用程序连接到各种数据库,而无需担心特定数据库系统的细节。 基于ODBC开发详细教程请参见基于ODBC开发。 图1 ODBC系统架构 GaussDB目前在以下环境中提供对ODBC3.5的支持。
  • Psycopg Psycopg是一种用于执行SQL语句的PythonAPI,可以为GaussDB数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配GaussDB数据类型。通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode。 GaussDB数据库提供了对Psycopg2特性的支持,并且支持psycopg2通过SSL模式连接。 基于Psycopg开发详细教程请参见基于Psycopg开发。 表2 Psycopg支持平台 操作系统 平台 Python版本 EulerOS V2.0SP5 ARM64位 x86_64位 3.8.5 SUSE 12.5 x86_64位 3.8.5 EulerOS V2.0SP9 ARM64位 x86_64位 3.7.4 EulerOS V2.0SP10、Kylin v10、UnionTech20 ARM64位 x86_64位 3.7.9 EulerOS V2.0SP11 ARM64位 x86_64位 3.9.11 Huawei Cloud EulerOS 2.0 ARM64位 x86_64位 3.9.9 psycopg2在编译过程中,会链接(link)GaussDB的openssl,GaussDB的openssl与操作系统自带的openssl可能不兼容。如果遇到不兼容现象,例如提示"version 'OPENSSL_1_1_1f' not found",请使用环境变量LD_LIBRARY_PATH进行隔离,以避免混用操作系统自带的openssl与GaussDB依赖的openssl。 例如,在执行某个调用psycopg2的应用软件client.py时,将环境变量显性赋予该应用软件: export LD_LIBRARY_PATH=/path/to/gaussdb/libs:$LD_LIBRARY_PATH python client.py 其中,/path/to/pyscopg2/lib 表示GaussDB依赖的openssl库所在目录,需根据文件实际存储路径修改。
  • JDBC JDBC(Java Database Connectivity,Java数据库连接)是用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口。它允许Java应用程序通过SQL语句来执行数据库操作,包括查询、插入、更新和删除数据等。 以下是JDBC的一些关键特点和用法: 数据库连接管理:JDBC允许应用程序建立与数据库的连接,并管理这些连接的生命周期。 SQL执行: 使用JDBC,可以执行SQL查询、更新、删除等操作。这通过在Java代码中构建SQL语句并将其发送到数据库来实现。 事务管理:JDBC支持事务管理,可以通过JDBC API来启动、提交或回滚事务,确保数据库操作的一致性和完整性。 异常处理: JDBC定义了一组异常类来处理数据库操作期间可能发生的各种异常情况,开发人员可以使用try-catch块来捕获和处理这些异常。 批处理操作:JDBC提供了批处理功能,允许一次性执行多个SQL语句,从而提高数据库操作的效率。 元数据访问: 通过JDBC,可以获取数据库的元数据信息,如表结构、列名、数据类型等,从而动态地构建SQL查询或根据数据库结构进行操作。 总的来说,JDBC提供了一个灵活且强大的桥梁,使Java应用程序能够与各种不同的数据库进行交互,从而实现数据的持久化和管理。GaussDB库提供了对JDBC 4.2特性的支持,需要使用JDK1.8版本编译程序代码,不支持JDBC桥接ODBC方式。 基于JDBC开发详细教程请参见基于JDBC开发。
  • DV_SESSIONS DV_SESSIONS视图显示当前所有活动的后台线程的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。 表1 DV_SESSIONS字段 名称 类型 描述 sid bigint 当前活动的后台线程的OID。 serial# integer 当前活动的后台线程的序号,在GaussDB中为0。 user# oid 登录此后台线程的用户的OID。oid为0表示此后台线程为全局辅助线程(auxiliary)。 username name 登录此后台线程的用户名。username为空表示此后台线程为全局辅助线程(auxiliary)。 可以通过和pg_stat_get_activity()关联查询,识别出application_name。 例如: SELECT s.*,a.application_name FROM DV_SESSIONS AS s LEFT JOIN pg_stat_get_activity(NULL) AS a ON s.sid=a.sessionid; 父主题: 其他系统视图
  • ADM_SUBPART_KEY_COLUMNS ADM_SUBPART_KEY_COLUMNS视图显示数据库中所有的二级分区表或分区索引的分区键列的相关信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。分布式暂不支持二级分区表,该视图所有字段值为null。 表1 ADM_SUBPART_KEY_COLUMNS字段 名称 类型 描述 owner character varying(128) 暂不支持,值为NULL。 name character varying(128) 暂不支持,值为NULL。 object_type character varying(128) 暂不支持,值为NULL。 column_name character varying(4000) 暂不支持,值为NULL。 column_position numeric 暂不支持,值为NULL。 collated_column_id numeric 暂不支持,值为NULL。 父主题: 分区表
  • SUMMARY_STATIO_SYS_TABLES SUMMARY_STATIO_SYS_TABLES视图显示集群内各节点的系统表的I/O状态汇总信息,如表1所示。 表1 SUMMARY_STATIO_SYS_TABLES字段 名称 类型 描述 schemaname name 该表模式名。 relname name 表名。 heap_blks_read numeric 从该表中读取的磁盘块数。 heap_blks_hit numeric 该表缓存命中数。 idx_blks_read numeric 从表中所有索引读取的磁盘块数。 idx_blks_hit numeric 表中所有索引命中缓存数。 toast_blks_read numeric 该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit numeric 该表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read numeric 该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit numeric 该表的TOAST表索引命中缓冲区数(如果存在)。 父主题: Cache/IO
  • 条件表达式 在执行SQL语句时,可通过条件表达式筛选出符合条件的数据。 条件表达式主要有以下几种: CASE CASE表达式是条件表达式,类似于其他编程语言中的CASE语句。 CASE表达式的语法图如图1所示。 图1 case::= CASE子句可以用于合法的表达式中。condition是一个返回BOOLEAN数据类型的表达式: 如果结果为真,CASE表达式的结果就是符合该条件所对应的result。 如果结果为假,则以相同方式处理随后的WHEN或ELSE子句。 如果各WHEN condition都不为真,表达式的结果就是在ELSE子句执行的result。如果省略了ELSE子句且没有匹配的条件,结果为NULL。 支持对XML类型数据操作。 GUC参数enable_case_intervaltonumeric设置为true时,支持将INTERVAL转换为NUMERIC而不报错。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 gaussdb=# CREATE TABLE case_when_t1(CW_COL1 INT) DISTRIBUTE BY HASH (CW_COL1); gaussdb=# INSERT INTO case_when_t1 VALUES (1), (2), (3); gaussdb=# SELECT * FROM case_when_t1; cw_col1 --- 1 2 3 (3 rows) gaussdb=# SELECT CW_COL1, CASE WHEN CW_COL1=1 THEN 'one' WHEN CW_COL1=2 THEN 'two' ELSE 'other' END FROM case_when_t1 ORDER BY 1; cw_col1 | case ---------+------- 1 | one 2 | two 3 | other (3 rows) gaussdb=# DROP TABLE case_when_t1; -- GUC参数默认为false,此时报错。 gaussdb=# SHOW enable_case_intervaltonumeric; enable_case_intervaltonumeric ------------------------------- off (1 row) gaussdb=# SELECT CASE gaussdb-# WHEN 1=1 THEN gaussdb-# to_date('20240118','yyyymmdd')-to_date('20240116','yyyymmdd') gaussdb-# ELSE gaussdb-# 1 gaussdb-# end; ERROR: CASE types integer and interval cannot be matched LINE 3: to_date('20240118','yyyymmdd')-to_date('20240116','y... ^ CONTEXT: referenced column: case -- 打开GUC参数,能正确返回结果。 gaussdb=# SET enable_case_intervaltonumeric=true; SET gaussdb=# SELECT CASE gaussdb-# WHEN 1=1 THEN gaussdb-# to_date('20240118','yyyymmdd')-to_date('20240116','yyyymmdd') gaussdb-# ELSE gaussdb-# 1::int1 gaussdb-# END; case ------ 2 (1 row) DECODE DECODE的语法图如图2所示。 图2 decode::= 将表达式base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。 支持对XML类型数据操作。 示例请参见条件表达式函数。 1 2 3 4 5 gaussdb=# SELECT DECODE('A','A',1,'B',2,0); case ------ 1 (1 row) COALESCE COALESCE的语法图如图3所示。 图3 coalesce::= COALESCE返回它的第一个非NULL的参数值。如果参数都为NULL,则返回NULL。它常用于在显示数据时用缺省值替换NULL。和CASE表达式一样,COALESCE只计算用来判断结果的参数,即在第一个非空参数右边的参数不会被计算。 支持对XML类型数据操作。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 gaussdb=# CREATE TABLE c_tabl(description varchar(10), short_description varchar(10), last_value varchar(10)) DISTRIBUTE BY HASH (last_value); gaussdb=# INSERT INTO c_tabl VALUES('abc', 'efg', '123'); gaussdb=# INSERT INTO c_tabl VALUES(NULL, 'efg', '123'); gaussdb=# INSERT INTO c_tabl VALUES(NULL, NULL, '123'); gaussdb=# SELECT description, short_description, last_value, COALESCE(description, short_description, last_value) FROM c_tabl ORDER BY 1, 2, 3, 4; description | short_description | last_value | coalesce -------------+-------------------+------------+---------- abc | efg | 123 | abc | efg | 123 | efg | | 123 | 123 (3 rows) gaussdb=# DROP TABLE c_tabl; 如果description不为NULL,则返回description的值,否则计算下一个参数short_description;如果short_description不为NULL,则返回short_description的值,否则计算下一个参数last_value;如果last_value不为NULL,则返回last_value的值,否则返回(none)。 1 2 3 4 5 gaussdb=# SELECT COALESCE(NULL,'Hello World'); coalesce --------------- Hello World (1 row) NULLIF NULLIF的语法图如图4所示。 图4 nullif::= 只有当value1和value2相等时,NULLIF才返回NULL。否则它返回value1。支持对XML类型数据操作。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 gaussdb=# CREATE TABLE null_if_t1 ( NI_VALUE1 VARCHAR(10), NI_VALUE2 VARCHAR(10) )DISTRIBUTE BY HASH (NI_VALUE1); gaussdb=# INSERT INTO null_if_t1 VALUES('abc', 'abc'); gaussdb=# INSERT INTO null_if_t1 VALUES('abc', 'efg'); gaussdb=# SELECT NI_VALUE1, NI_VALUE2, NULLIF(NI_VALUE1, NI_VALUE2) FROM null_if_t1 ORDER BY 1, 2, 3; ni_value1 | ni_value2 | nullif -----------+-----------+-------- abc | abc | abc | efg | abc (2 rows) gaussdb=# DROP TABLE null_if_t1; 如果value1等于value2则返回NULL,否则返回value1。 1 2 3 4 5 gaussdb=# SELECT NULLIF('Hello','Hello World'); nullif -------- Hello (1 row) GREATEST(最大值),LEAST(最小值) GREATEST的语法图如图5所示。 图5 greatest::= 从一个任意数字表达式的列表里选取最大的数值。支持对XML类型数据操作。 1 2 3 4 5 gaussdb=# SELECT greatest(9000,155555,2.01); greatest ---------- 155555 (1 row) LEAST的语法图如图6所示。 图6 least::= 从一个任意数字表达式的列表里选取最小的数值。 以上的数字表达式必须都可以转换成一个普通的数据类型,该数据类型将是结果类型。 列表中的NULL值将被忽略。只有所有表达式的结果都是NULL的时候,结果才是NULL。 支持对XML类型数据操作。 1 2 3 4 5 gaussdb=# SELECT least(9000,2); least ------- 2 (1 row) 示例请参见条件表达式函数。 NVL NVL的语法图如图7所示。 图7 nvl::= 如果value1为NULL,则返回value2,如果value1非NULL,则返回value1。支持对XML类型数据操作。 示例: 1 2 3 4 5 gaussdb=# SELECT nvl(null,1); nvl ----- 1 (1 row) 1 2 3 4 5 gaussdb=# SELECT nvl('Hello World',1); nvl --------------- Hello World (1 row) 父主题: 表达式
  • 对象标识符类型 GaussDB在内部使用对象标识符(OID)作为各种系统表的主键。系统不会自动为用户创建的表添加一个OID字段,OID类型表示一个对象标识符。对象标识符类型如表1所示。 目前OID类型用一个四字节的无符号整数实现。因此不建议在创建的表中使用OID字段做主键。 表1 对象标识符类型 名称 引用 描述 示例 OID - 数字化的对象标识符。 564182 CID - 命令标识符。它是系统字段cmin和cmax的数据类型。命令标识符是32位的量。 - XID - 事务标识符。它是系统字段xmin和xmax的数据类型。事务标识符是64位的量。 - TID - 行标识符。它是系统表字段ctid的数据类型。行ID是一对数值(块号,块内的行索引),它标识该行在其所在表内的物理位置。 - REGCONFIG pg_ts_config 文本搜索配置。 english REGDICTIONARY pg_ts_dict 文本搜索字典。 simple REGOPER pg_operator 操作符名。 - REGOPERATOR pg_operator 带参数类型的操作符。 *(integer,integer)或-(NONE,integer) REGPROC pg_proc 函数名称。 sum REGPROCEDURE pg_proc 带参数类型的函数。 sum(int4) REGCLASS pg_class 关系名。 pg_type REGTYPE pg_type 数据类型名。 integer OID类型:主要作为数据库系统表中字段使用。 示例: 1 2 3 4 5 gaussdb=# SELECT oid FROM pg_class WHERE relname = 'pg_type'; oid ------ 1247 (1 row) OID别名类型REGCLASS:主要用于对象OID值的简化查找。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 gaussdb=# SELECT attrelid,attname,atttypid,attstattarget FROM pg_attribute WHERE attrelid = 'pg_type'::REGCLASS; attrelid | attname | atttypid | attstattarget ----------+------------+----------+--------------- 1247 | xc_node_id | 23 | 0 1247 | tableoid | 26 | 0 1247 | cmax | 29 | 0 1247 | xmax | 28 | 0 1247 | cmin | 29 | 0 1247 | xmin | 28 | 0 1247 | oid | 26 | 0 1247 | ctid | 27 | 0 1247 | typname | 19 | -1 1247 | typnamespace | 26 | -1 1247 | typowner | 26 | -1 1247 | typlen | 21 | -1 1247 | typbyval | 16 | -1 1247 | typtype | 18 | -1 1247 | typcategory | 18 | -1 1247 | typispreferred | 16 | -1 1247 | typisdefined | 16 | -1 1247 | typdelim | 18 | -1 1247 | typrelid | 26 | -1 1247 | typelem | 26 | -1 1247 | typarray | 26 | -1 1247 | typinput | 24 | -1 1247 | typoutput | 24 | -1 1247 | typreceive | 24 | -1 1247 | typsend | 24 | -1 1247 | typmodin | 24 | -1 1247 | typmodout | 24 | -1 1247 | typanalyze | 24 | -1 1247 | typalign | 18 | -1 1247 | typstorage | 18 | -1 1247 | typnotnull | 16 | -1 1247 | typbasetype | 26 | -1 1247 | typtypmod | 23 | -1 1247 | typndims | 23 | -1 1247 | typcollation | 26 | -1 1247 | typdefaultbin | 194 | -1 1247 | typdefault | 25 | -1 1247 | typacl | 1034 | -1 1247 | typelemmod | 23 | -1 (39 rows) 父主题: 数据类型
  • ADM_CONSTRAINTS ADM_CONSTRAINTS视图显示数据库表中约束的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_CONSTRAINTS字段 名称 类型 描述 owner character varying(64) 约束的创建者。 constraint_name character varying(64) 约束名。 constraint_type text 约束类型。 c:检查约束。 f:外键约束。 p:主键约束。 u:唯一约束。 table_name character varying(64) 约束相关的表名。 index_owner character varying(64) 约束相关的索引的所有者(只针对唯一约束和主键约束)。 index_name character varying(64) 约束相关的索引名(只针对唯一约束和主键约束)。 status character varying(8) 约束的状态。 generated character varying(14) 暂不支持,值为NULL。 search_condition text 暂不支持,值为NULL。 search_condition_vc character varying(4000) 暂不支持,值为NULL。 r_owner character varying(128) 暂不支持,值为NULL。 r_constraint_name character varying(128) 暂不支持,值为NULL。 delete_rule character varying(9) 暂不支持,值为NULL。 con_deferrable character varying(14) 暂不支持,值为NULL。 deferred character varying(9) 暂不支持,值为NULL。 validated character varying(13) 暂不支持,值为NULL。 bad character varying(3) 暂不支持,值为NULL。 rely character varying(4) 暂不支持,值为NULL。 last_change date 暂不支持,值为NULL。 invalid character varying(7) 暂不支持,值为NULL。 view_related character varying(14) 暂不支持,值为NULL。 origin_con_id character varying(256) 暂不支持,值为NULL。 父主题: 其他系统视图
  • 功能描述 DECLARE命令既可以定义一个游标,用于在一个大的查询里面检索少数几行数据,也可以作为一个匿名块的开始。 本节主要描述定义为游标的用法,定义为匿名块的用法见BEGIN。 为了处理SQL语句,存储过程线程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用FETCH语句,游标可以返回文本或二进制格式。
  • 参数说明 cursor_name 将要创建的游标名。 取值范围:遵循数据库对象命名规范。 BINARY 指明游标以二进制而不是文本格式返回数据。 NO SCROLL 声明游标检索数据行的方式。 NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 WITH HOLD WITHOUT HOLD 声明当创建游标的事务结束后,游标是否能继续使用。 WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 如果不指定WITH HOLD或WITHOUT HOLD,默认行为是WITHOUT HOLD。 声明为WITH HOLD的游标,在事务结束时,会缓存游标所有数据,若游标数据量较大,此过程耗时可能较长。 query 使用SELECT或VALUES子句指定游标返回的行。 取值范围:SELECT或VALUES子句。 declare_statements 声明变量,包括变量名和变量类型,如“sales_cnt int”。 execution_statements 匿名块中要执行的语句。 取值范围:已存在的函数名称。
  • 日期/时间类型哪些带时区,哪些不带时区? 答:date、time、timestamp、smalldatetime等类型不带时区,timetz、timestamptz等类型带时区。 示例如下: --timestamp类型不带时区。 gaussdb=# SELECT '2019-01-01'::timestamp; timestamp --------------------- 2019-01-01 00:00:00 (1 row) --timestamptz类型带时区。 gaussdb=# SELECT '2019-01-01'::timestamptz; timestamptz ------------------------ 2019-01-01 00:00:00+08 (1 row) 父主题: FAQ
  • audit_file_remain_time 参数说明:表示需记录审计日志的最短时间要求,该参数在audit_resource_policy为off时生效。 参数类型:整型 参数单位:d(天) 取值范围:0 ~ 730,0表示无时间限制。 默认值:90 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。取值不能带单位。 设置建议:根据实际需要保留审计日志的时间设置。audit_resource_policy为on时请不要随意调整此参数。 设置不当的风险与影响:该参数在audit_resource_policy为off时生效。设置过小会导致保留的审计日志量过少,审计追溯有效时长降低;设置过大会导致审计目录下保存过多审计日志,影响审计查询/删除的性能、占用磁盘空间。
  • audit_thread_num 参数说明:该参数表明用于审计的线程个数。 参数类型:整型 参数单位:个(表示线程数量) 取值范围:1 ~ 48 默认值:1 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 设置建议:当audit_dml_state开关打开且在高性能场景下,建议增大此参数保证审计消息可以被及时处理和记录;其他情况建议设置为默认值。 设置不当的风险与影响:线程数量设置越多,对系统性能的影响越大,占用的系统CPU和I/O越多。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全