华为云用户手册

  • GLOBAL_SESSION_MEMORY 统计各节点的Session级别的内存使用情况,包含执行作业在数据节点上 GaussDB 线程和Stream线程分配的所有内存,单位为MB,如表1所示。 表1 GLOBAL_SESSION_MEMORY字段 名称 类型 描述 node_name name 节点名称。 sessid text 线程启动时间+线程标识。 init_mem integer 当前正在执行作业进入执行器前已分配的内存。 used_mem integer 当前正在执行作业已分配的内存。 peak_mem integer 当前正在执行作业已分配的内存峰值。 父主题: Session/Thread
  • MY_JOBS MY_JOBS视图显示当前用户拥有的定时任务的详细信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。具体字段信息如表1所示。 表1 MY_JOBS字段 名称 类型 描述 job bigint 作业id。 log_user name 创建者的UserName。 priv_user name 作业执行者的UserName。 dbname name 创建作业的数据库名称。 schema_user name 定时任务的默认模式名。 start_date timestamp without time zone 作业第一次开始执行的时间。 start_suc text 作业第一次成功执行对应的开始时间。 last_date timestamp without time zone 上次运行的开始时间。 last_suc text 上次成功运行的开始时间。 last_sec text 上次成功运行的开始时间,提供兼容性支持。 this_date timestamp without time zone 正在运行任务的开始时间。 this_suc text 正在运行任务的开始时间。 this_sec text 正在运行任务的开始时间,提供兼容性支持。 next_date timestamp without time zone 任务下次执行时间。 next_suc text 任务下次执行时间。 next_sec text 任务下次执行时间,提供兼容性支持。 total_time numeric 任务最近一次的执行时长。 broken text 如果status字段取值为d,broken则为'y',否则broken为n。 status "char" 本步骤的执行状态,取值范围:(r、s、f、d),默认为r,取值含义: r:运行中。 s:执行成功。 f:执行失败。 d:取消执行。 interval text 用来计算下次运行时间的时间表达式,如果为null则表示定时任务只执行一次。 failures smallint 失败计数,若作业连续执行失败16次,则不再继续执行。 what text 可执行的作业。 nls_env character varying(4000) 暂不支持,值为NULL。 misc_env raw 暂不支持,值为NULL。 instance numeric 暂不支持,值为NULL。 父主题: 其他系统视图
  • PG_STAT_REPLICATION PG_STAT_REPLICATION视图显示日志同步线程的信息,如发起端发送日志位置,接收端接收日志位置等。具体字段信息如表1所示。 表1 PG_STAT_REPLICATION字段 名称 类型 描述 pid bigint 线程的PID。 usesysid oid 用户系统id。 usename name 用户名。 application_name text 程序名称。 client_addr inet 客户端地址。 client_hostname text 客户端名。 client_port integer 客户端端口。 backend_start timestamp with time zone 程序启动时间。 state text 日志同步线程的状态。 startup:线程正在启动。 catchup:线程正在建立备用服务器和主服务器的连接。 streaming:线程已建立备用服务器和主服务器的连接,正在进行数据的流复制。 backup:线程正在发送备份。 stopping:线程正在停止。 sender_sent_location text 发送端发送日志位置。 receiver_write_location text 接收端write日志位置。 receiver_flush_location text 接收端flush日志位置。 receiver_replay_location text 接收端replay日志位置。 sync_priority integer 同步复制的优先级(0表示异步)。 sync_state text 同步状态: async:异步复制。 sync:同步复制。 potential:该备用服务器现在是异步的,但假如一个当前的同步服务器发生故障,该服务器会变成同步的。 quorum:在同步与异步之间切换,保证备机中有大于一定数量的同步备机,同步备机数量一般为(n+1)/2-1,n为总副本个数。是否为同步备机取决于是否先接到了日志。详情可参考synchronous_standby_names参数描述。 父主题: 其他系统视图
  • 处理结果集 ODBC处理结果集是从数据库中获取数据并将其提供给应用程序进行处理,作用包括但不限于:检索数据、数据展示、数据处理、数据传输和业务逻辑实现等。 ODBC提供处理结果集的相关API如表1所示。 表1 相关API说明 功能 API 绑定缓冲区到结果集的列中 SQLBindCol 结果集中取行集 SQLFetch 返回结果集中某一列的数据 SQLGetData 获取结果集中列的描述信息 SQLColAttribute 查看最近一次操作错误信息 SQLGetDiagRec 示例如下(完整示例请参考获取和处理数据库中的数据): // 在执行完成SQL语句后,获取结果集某一列的属性。 SQLColAttribute(V_OD_hstmt,1,SQL_DESC_TYPE,typename,100,NULL,NULL); printf("SQLColAtrribute %s\n",typename); // 绑定结果集。 SQLBindCol(V_OD_hstmt,1,SQL_C_SLONG, (SQLPOINTER)&V_OD_buffer,150, (SQLLEN *)&V_OD_err); // 通过SQLFetch取结果集中数据。 V_OD_erg=SQLFetch(V_OD_hstmt); // 通过SQLGetData获取并返回数据。 while(V_OD_erg != SQL_NO_DATA) { SQLGetData(V_OD_hstmt,1,SQL_C_SLONG,(SQLPOINTER)&V_OD_id,0,NULL); printf("SQLGetData ----ID = %d\n",V_OD_id); V_OD_erg=SQLFetch(V_OD_hstmt); }; printf("Done !\n"); 父主题: 开发步骤
  • ChainedStreamBuilder的继承关系 ChainedStreamBuilder是逻辑复制的接口,实现类是ReplicationStreamBuilder,该类位于com.huawei.gaussdb.jdbc.replication.fluent Package中,该类的声明如下: public class ReplicationStreamBuilder implements ChainedStreamBuilder
  • ADM_TAB_PRIVS ADM_TAB_PRIVS视图显示数据库中所有对象的授权信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TAB_PRIVS字段 名称 类型 描述 grantee character varying(128) 被授予权限的用户或角色的名称。 owner character varying(128) 对象的所有者。 table_name character varying(128) 对象的名称。 grantor character varying(128) 执行授权的用户名。 privilege character varying(40) 对象上的权限,包括USAGE、UPDATE、DELETE、INSERT、CONNECT、SELECT、EXECUTE。 grantable character varying(3) 该授权是否包含GRANT选项。 YES:包含GRANT选项。 NO:不包含GRANT选项。 type character varying(24) 对象的类型。包括NODE GROUP、COLUMN_ENCRYPTION_KEY、PACKAGE、COLUMN、TABLE、VIEW、SEQUENCE、TYPE、INDEX、DATABASE、DIRECTORY、FOREIGN DATA WRAPPER、FOREIGN SERVER、LANGUAGE、SCHEMA、TEMPLATE、FUNCTION、PROCEDURE、TABLESPACE。 hierarchy character varying(3) 暂不支持,值为NULL。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • GS_COMM_LISTEN_ADDRESS_EXT_INFO GS_COMM_LISTEN_ADDRESS_EXT_INFO描述了查询连接当前DN扩展IP的相关线程、会话以及socket等DFX信息。使用场景参见系统函数描述gs_comm_listen_address_ext_info()。 表1 GS_COMM_LISTEN_ADDRESS_EXT_INFO字段 名称 类型 描述 node_name text 当前实例名。 app text 当前连接DN的客户端。 tid bigint 当前线程的线程号。 lwtid integer 当前线程的轻量级线程号。 query_id bigint 当前线程的查询ID。 socket integer 当前物理连接的socket fd。 remote_ip text 当前连接对端IP。 remote_port text 当前连接对端port。 local_ip text 当前连接本端IP。 local_port text 当前连接本端port。 父主题: 通信
  • GS_AUDITING_POLICY_PRIVILEGES GS_AUDITING_POLICY_PRIVILEGES系统表记录统一审计DDL数据库相关操作信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_AUDITING_POLICY_PRIVI字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 privilegetype name DDL数据库操作相关类型。例如CREATE、ALTER、DROP等。 labelname name 资源标签名称。对应系统表12.2.9.1 GS_AUDITING_POLICY中的polname字段。 policyoid oid 对应审计策略系统表12.2.9.1 GS_AUDITING_POLICY中的oid。 modifydate timestamp without time zone 创建或修改的最新时间戳。 父主题: 审计
  • GaussDB导出之后自行解析数据文件的场景 该场景下一般不希望导出的TEXT文件中有GaussDB独有的转义行为,此时需要按如下方式进行处理: 首先确认字段数据中是否存在行结束符或分隔符; 如果包含,需要使用EOL或delimiter参数改用其他字符。需要确保指定的新EOL或delimiter不会在字段数据中存在,建议从不可见字符(0x01 ~ 0x1F)中选取; 可以通过NULL选项指定对数据中的NULL值在导出时的表示方法。 最后添加without escaping参数,禁止转义输出。 导出命令: 1 2 3 --data_source可以是一个表名称,也可以是一个SELECT语句 --server_encoding可以通过SHOW server_encoding获得 COPY {data_source} TO '/path/export.txt' WITHOUT escaping COL e'\x1E' DELIMITER e'\x1F' NULL '\N' ENCODING '{server_encoding}';
  • GaussDB导出并导入到GaussDB场景 建议导出命令: 1 2 3 --data_source可以是一个表名称,也可以是一个select语句。 --server_encoding可以通过SHOW server_encoding获得。 COPY {data_source} TO '/path/export.txt' eol e'\n' delimiter e'\t' ENCODING '{server_encoding}'; 对应导入命令: 1 2 3 --data_destination只能是一个表名称。 --file_encoding为该二进制文件导出时指定的编码格式。 COPY {data_destination} FROM '/path/export.txt' eol e'\n' delimiter e'\t' ENCODING '{file_encoding}';
  • 如何定位数据库死行等统计信息不准 可以使用ANALYZE命令来更新统计信息。如果在执行ANALYZE前后,死行数据差异较大,则表明统计信息不准确。需要注意的是,ANALYZE是通过采样进行统计的,因此存在一定的误差。当表中存在大量空页时,可能会影响统计信息收集的采样准确性。在这种情况下,可以利用上文提到的gs_parse_page_bypath工具增加采样率,以更准确地解析页面并计算死行。 父主题: 常见问题
  • GLOBAL_WLM_WORKLOAD_RUNTIME 显示当前用户在每个CN上执行作业时在CN上的状态信息,如表1所示。需要有监控管理员权限才可以访问。 表1 GLOBAL_WAL_WORKLOAD_RUNTIME字段 名称 类型 描述 node_name text 作业执行所在的CN的名称。 thread_id bigint 后端线程ID。 processid integer 线程的lwpid。 time_stamp bigint 语句执行的开始时间。 username name 登录到该后端的用户名。 memory integer 语句所需的内存大小。 active_points integer 语句在资源池上消耗的资源点数。 max_points integer 资源在资源池上的最大资源数。 priority integer 作业的优先级。 resource_pool text 作业所在资源池。 status text 作业执行的状态,包括: pending:阻塞状态。 running:执行状态。 finished:结束状态。 aborted:终止状态。 unknown:未知状态。 control_group name 作业所使用的Cgroups。 enqueue text 作业的排队信息,包括: GLOBAL:全局排队。 RESPOOL:资源池排队。 ACTIVE:不排队。 query text 正在执行的语句。 node_group text node group名称。 父主题: Workload Manager
  • 参数说明 plan_hint子句 以/*+ */的形式在INSERT关键字后,目前仅适配了语法格式,并未实现具体功能。 ALL/FIRST 如果不带条件子句(WHEN condition THEN),此关键字不可省略,且只能为ALL。如果含有条件子句,此关键字可以省略,默认为ALL,此时ALL和FIRST的含义分别为: ALL:遍历所有匹配条件的分支,只要满足条件就会将数据插入对应的表。 FIRST:查询到第一个满足条件的分支后,将数据插入该分支对应的表,不再继续检查剩余分支。 WHEN condition THEN 插入表时的条件判断,只有满足条件才会进行插入操作,condition中可以引用子查询(SUBQUERY)中的列。 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 alias_name INSERT语句不包含AS alias语法时的表别名。 INTO子句不包含AS alias语法时的表别名不能为关键字(如SELECT、VALUE)或者表达式,表别名要求符合标识符命名规范。 INTO子句不包含AS alias语法时的表别名不支持INTO table_name alias_name(alias_name.col1,...,alias_name.coln) VALUES(xxx);的语法格式。 INTO子句的分区表不包含AS alias语法时的表别名不支持指定分区插入操作。 partition_clause 指定分区插入操作。 PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } | SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] ) } 关键字具体信息请参见SELECT。 如果VALUE子句的值和指定分区不一致,结果会提示异常。 column_name 目标表中的字段名称。 字段名可以由子字段名或者数组下标修饰。 没有在字段列表中出现的每个字段,将由系统默认值或者声明时的默认值进行填充,若无默认值或未声明时则使用NULL填充。例如,向一个复合类型中的某些字段插入数据,其他字段使用NULL进行填充。 目标字段(column_name)按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 如果VALUE子句和QUERY中只提供了N个字段,则目标字段为前N个字段。 VALUE子句和QUERY提供的值在表中从左到右关联到对应列。 取值范围:已存在的字段名。 VALUES 不可跟多行。 expression 赋予对应column的一个有效表达式或值。 向表中字段插入单引号(')时需要使用单引号对自身进行转义。 如果插入行的表达式不是正确的数据类型,系统将自动进行类型转换,若转换失败,则插入数据失败,系统返回错误信息。 不支持聚集函数。 不支持子查询。 DEFAULT 对应字段名的缺省值。如果没有缺省值,则为NULL。 subquery 一个查询语句(SELECT语句),将查询结果作为插入的数据,不可省略,如果没有子查询可以使用SELECT * FROM DUAL。 如果子查询带表别名,不可在CONDITION子句和INTO子句中引用该别名。
  • 注意事项 只有拥有表INSERT权限的用户,才可以向表中插入数据。用户被授予INSERT ANY TABLE权限,即用户对除系统模式之外的任何模式具有USAGE权限,并且拥有这些模式下表的INSERT权限。 如果使用QUERY子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。 生成列不能被直接写入。在INSERT命令中不能为生成列指定值,但可以指定关键字DEFAULT。 仅支持在ORA兼容模式下执行该语法。
  • 语法格式 INSERT [/*+ plan_hint */] [ ALL | FIRST ] { [ WHEN condition THEN ] { INTO table_name [ { [alias_name] [ ( column_name [, ...] ) ] } | { [partition_clause] [ AS alias ] [ ( column_name [, ...] ) ] } ] [ VALUES {( { expression | DEFAULT } [, ...] ) } ] }[, ...] }[, ...] { subquery };
  • RepOriginId 参数说明:该参数是一个会话级别的GUC参数,在双向逻辑复制的场景下,为避免数据循环复制,需要设置为一个非0的值。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647‬ 默认值:0 设置方式:该参数属于USERSET类型参数,请参考表2中的方式三进行设置。 设置建议:在双向逻辑复制的场景下,需要设置为一个非0的值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • auto_csn_barrier 参数说明:流式容灾的主集群和GTM LITE集群是否开启barrier打点功能。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启。 off:表示关闭。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:容灾流程中会自动设置开启,不建议用户手动关闭。GTM LITE集群开启备机读功能,需要设置该参数为ON。 设置不当的风险与影响:关闭后,影响灾备集群和GTM LITE集群备机读数据一致性。
  • hadr_primary_cluster_name 参数说明:标识容灾中当前主集群的集群名称。用于1个主集群连接两个备集群的异地流式容灾部署下的主集群识别。 当流式容灾备集群的首备的hadr_primary_cluster_name配置为“invalid_cluster_uuid”时,将不再启动与主集群的日志同步,备集群将持续处于断连状态。 参数类型:字符串 参数单位:无 取值范围:合法的集群名称。 默认值:"" 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:容灾集群的识别参数,容灾流程使用,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改可能造成容灾功能异常。
  • enable_roach_standby_cluster 参数说明:设置双集群中备集群的各个实例是否为只读模式,仅sysadmin用户可以访问。 参数类型:布尔型 参数单位:无 取值范围: on:表示备集群开启只读模式。 off:表示备集群关闭只读模式。此情况下,备集群可读可写。 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:备份恢复使用,不建议用户修改。 设置不当的风险与影响:修改该参数取值可能导致集群出现意料之外的结果,请保持默认值。
  • hadr_process_type 参数说明:基于流式复制异地容灾解决方案或者同城双中心高可用方案的流程标识。 参数类型:枚举类型 参数单位:无 取值范围: none:表示当前无流程。 failover:表示当前处于灾备集群升主流程。 switchover_promote:表示主备集群倒换流程中灾备集群升主流程。 switchover_demote:表示主备集群倒换流程中主集群降为灾备集群流程。 dorado_failover:表示dorado灾备集群升主流程。 dorado_switchover_demote:表示dorado主备集群倒换流程中主集群降为灾备集群流程。 dorado_failover_abnormal:表示dorado主集群共享盘故障时,灾备集群升主流程。 dorado_failover_in_standby_stream:表示同城双中心高可用支持基于流式复制异地容灾解决方案中异地集群为容灾主集群时,dorado备集群升为dorado主集群(同时为异地容灾-灾备集群)流程。 dorado_failover_abnormal_in_standby_stream:表示同城双中心高可用支持基于流式复制异地容灾解决方案中异地集群为异地容灾主集群且dorado主集群(同时为异地容灾-灾备集群)共享盘故障时,dorado备集群升为dorado主集群(同时为异地容灾-灾备集群)流程。 默认值:none 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:容灾集群的状态参数,内部流程使用,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改会造成灾备集群异常。
  • cluster_name 参数说明:标识当前集群的集群名称。 集群名称cluster_name不可设置为“invalid_cluster_uuid”。 参数类型:字符串 参数单位:无 取值范围:合法的集群名称。 默认值:"" 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:该参数在容灾流程使用,容灾集群依赖该参数进行集群识别,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改可能造成容灾功能异常。
  • stream_cluster_run_mode 参数说明:流式容灾双集群容灾场景,标识CN/DN节点属于主集群还是备集群。 参数类型:枚举类型 参数单位:无 取值范围: cluster_primary:表示节点是主集群的节点。 cluster_standby:表示节点是备集群的节点。 默认值:cluster_primary 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:此参数为容灾集群的状态参数,内部流程使用,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改会造成灾备集群异常。
  • enable_global_syscache 参数说明:控制是否使用全局系统缓存功能。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启全局系统缓存功能。 off:表示不开启全局系统缓存功能。 默认值:on 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,开启全局系统缓存功能可以降低系统缓存内存占用,提高并发扩展能力。若打开该参数,需要结合使用global_syscache_threshold,此时推荐使用线程池模式。若打开该参数后需要访问备机,建议设置备机wal_level级别为hot_standby以上。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • global_syscache_threshold 参数说明:全局系统缓存占用内存的最大值,使用时需要打开enable_global_syscache参数。 参数类型:整型 参数单位:kB 取值范围:16384 ~ 1073741824 默认值:163840(即160MB) 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。例如,设置为163840,不带单位,表示163840kB;设置为160MB,带单位,表示160MB。取值如果要带单位,必须为kB、MB、GB。 设置建议:建议设置为热点DB个数和线程个数的最小值乘以每个DB分配的内存大小,即global_syscache_threshold = min(count(hot dbs),count(threads)) * memofdb。 热点DB数即访问较为频繁的数据库数量。线程数在线程池模式下取线程池线程个数和后台线程个数之和,非线程池模式不需要计算这个值,直接使用热点DB数。 memofdb即平均每个db应该分配的内存,每个DB的底噪内存是2M,平均每增加一个表或者索引,增加11k内存。 设置不当的风险与影响:如果设置的值过小,会导致内存频繁淘汰,内存存在大量碎片无法回收,导致内存控制失效。
  • 原型 1 2 3 4 SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength);
  • 参数 表1 SQLSetStmtAttr参数 关键字 参数说明 StatementHandle 语句句柄。 Attribute 需设置的属性。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位无符号整型值,或指向以空结束的字符串,二进制缓冲区,或者驱动定义值。如果ValuePtr参数是驱动程序指定值,ValuePtr可能是有符号的整数。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,则这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。
  • 什么是MVCC? 答:MVCC,即Muti-Version Concurrency Control(多版本并发控制)。MVCC是数据库并发控制协议的一种,写事务不会立即修改元组内容,每次操作都会在旧的版本之上创建新的版本,并且会保留旧的版本。当某个事务要读取数据时,数据库系统会从所有版本中选取出符合该事务隔离级别要求的版本。 MVCC的主要优点是:读数据的锁请求和写数据的锁请求不冲突,可以实现读不阻塞写,写不阻塞读。 父主题: FAQ
  • 账本数据库使用的数据类型 账本数据库使用HASH16数据类型来存储行级hash摘要或表级hash摘要,使用HASH32数据类型来存储全局hash摘要或者历史表校验hash。 表1 账本数据库HASH类型 名称 描述 存储空间 范围 HASH16 以无符号64位整数存储。 8字节 0 ~ +18446744073709551615 HASH32 以包含16个无符号整型元素数的组存储。 16字节 16个元素的无符号整型数组能够包含的取值范围。 HASH16数据类型用来在账本数据库中存储行级或表级hash摘要。在获得长度为16个字符的十六进制字符串的hash序列后,系统将调用hash16in函数将该序列转换为一个无符号64位整数存储进HASH16类型变量中。示例如下: 十六进制字符串:e697da2eaa3a775b 对应的无符号64位整数:16615989244166043483 十六进制字符串:ffffffffffffffff 对应的无符号64位整数:18446744073709551615 示例: gaussdb=# CREATE TABLE hash16test(id int, data hash16); gaussdb=# INSERT INTO hash16test VALUES (1, 'e697da2eaa3a775b'); gaussdb=# SELECT * FROM hash16test; id | data ----+---------------------------------- 1 | e697da2eaa3a775b (1 row) gaussdb=# DROP TABLE hash16test; HASH32数据类型用来在账本数据库中存储全局hash摘要或者历史表校验hash。在获得长度为32个字符的十六进制字符串的hash序列后,系统将调用hash32in函数将该序列转换到一个包含16个无符号整型元素的数组中。示例如下: 十六进制字符串:685847ed1fe38e18f6b0e2b18c00edee 对应的HASH32数组:[104,88,71,237,31,227,142,24,246,176,226,177,140,0,237,238] 示例: gaussdb=# CREATE TABLE hash32test(id int, data hash32); gaussdb=# INSERT INTO hash32test VALUES (1, '685847ed1fe38e18f6b0e2b18c00edee'); gaussdb=# SELECT * FROM hash32test; id | data ----+---------------------------------- 1 | 685847ed1fe38e18f6b0e2b18c00edee (1 row) gaussdb=# DROP TABLE hash32test; 父主题: 数据类型
  • DB_SCHEDULER_PROG RAM _ARGS DB_SCHEDULER_PROGRAM_ARG视图显示当前用户可访问程序的有关参数信息。该视图所有用户可访问,显示当前用户可访问的所有信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_SCHEDULER_PROGRAM_ARGS字段 名称 类型 描述 owner character varying(128) 参数所属程序的拥有者。 program_name character varying(128) 参数所属程序名。 argument_name character varying(128) 参数名称。 argument_position numeric 参数在参数列表中的位置。 argument_type character varying(257) 参数的数据类型,可以是用户的自定义数据类型。 metadata_attribute character varying(19) 暂不支持,值为NULL。 default_value character varying(4000) 参数默认值。 anydata_default_value character varying(4000) 暂不支持,值为NULL。 out_argument character varying(5) 保留字段,值为NULL。 父主题: 其他系统视图
  • 操作步骤 准备相关驱动和依赖库。可以从驱动包中获取,包名为GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Python.tar.gz。 解压后有两个文件夹: psycopg2:psycopg2库文件。 lib:lib库文件。 加载驱动。 在使用驱动之前,需要做如下操作: 先解压版本对应驱动包。 tar zxvf xxxx-Python.tar.gz 使用root用户将psycopg2复制到python安装目录下的site-packages文件夹下。 su root cp psycopg2 $(python3 -c 'import site; print(site.getsitepackages()[0])') -r 修改psycopg2目录权限为755。 chmod 755 $(python3 -c 'import site; print(site.getsitepackages()[0])')/psycopg2 -R 将psycopg2目录添加到环境变量$PYTHONPATH,并使之生效。 export PYTHONPATH=$(python3 -c 'import site; print(site.getsitepackages()[0])'):$PYTHONPATH 对于非数据库用户,需要将解压后的lib目录,配置在LD_LIBRARY_PATH中。 export LD_LIBRARY_PATH=path/to/lib:$LD_LIBRARY_PATH 在创建数据库连接之前,需要先加载如下数据库驱动程序: 1 import psycopg2 连接数据库。 非SSL方式连接数据库: 使用psycopg2.connect函数获得connection对象。 使用connection对象创建cursor对象。 SSL方式连接数据库: 用户通过psycopy2连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参见Openssl相关文档和命令。 使用*.ini文件(python的configparser包可以解析这种类型的配置文件)保存数据库连接的配置信息。 在连接选项中添加SSL连接相关参数:sslmode、sslcert、sslkey、sslrootcert。 sslmode:可选项见表2。 sslcert:客户端证书路径。 sslkey:客户端密钥路径。 sslrootcert:根证书路径。 使用psycopg2.connect函数获得connection对象。 使用connection对象创建cursor对象。 使用SSL安全连接数据库,需保证所使用的python解释器为生成动态链接库(.so)文件的方式编译,可通过如下步骤确认python解释器的连接方式。 在python解释器命令行中输入import ssl,导入SSL。 执行ps ux查询python解释器运行的pid(假设pid为******)。 在shell命令行中执行pmap -p ****** | grep ssl,查看返回结果中是否包含libssl.so的相关路径。如果有,则python解释器为动态链接方式编译。 表2 sslmode的可选项及其描述 sslmode 是否会启用SSL加密 描述 disable 否 不使用SSL安全连接。 allow 可能 如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 prefer 可能 如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。 require 是 必须使用SSL安全连接,但是仅进行 数据加密 ,而并不验证数据库服务器的真实性。 verify-ca 是 必须使用SSL安全连接,并且校验服务端CA有效性。 verify-full 是 必须使用SSL安全连接,目前GaussDB暂不支持。 执行SQL语句。 构造操作语句,使用%s作为占位符,执行时psycopg2会用参数值智能替换掉占位符。可以添加RETURNING子句,来得到自动生成的字段值。 使用cursor.execute方法来操作一行SQL语句,使用cursor.executemany方法来操作多行SQL语句。 处理结果集。 cursor.fetchone():这种方法提取的查询结果集的下一行,返回一个序列,没有数据可用时则返回空。 cursor.fetchall():这个方法获取所有查询结果(剩余)行,返回一个列表。空行时则返回空列表。 对于数据库特有数据类型,如tinyint类型,查询结果中相应字段为字符串形式。 关闭连接。 在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。关闭数据库连接可以直接调用其close方法,如connection.close()。 此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。
共100000条