华为云用户手册

  • loginTimeout 作用:控制与数据库建连时间,其中时间包括connectTimeout和socketTimeout,超过阈值则退出。计算方式为:loginTimeout=connectTimeout*节点数量+连接认证时间+初始化语句执行时间。 建议:配置后每次建连都会开启一个异步线程,在连接数较多的情况可能会导致客户端压力增大,如果业务确认需要设置此参数,在集中式环境下建议调整为3*connectTimeout防止在网络异常情况且第三个IP为主的情况下,无法连接,缺省值为0。 此参数设置后对于多IP而言,时间是尝试连接IP的时间,可能会出现因为设置的值较小导致后面的IP无法连接的问题,例如设置了三个IP,如果loginTimeout为5s,但前两个ip建连总共用了5s,第三个IP会无法进行连接。在集中式环境下,此最后一个IP恰好为主机,可能会导致自动寻主失败。
  • fetchsize 原理:fetchsize在设置为n时,数据库服务器端在执行查询后,调用者在执行resultset.next()的时候,JDBC会先与服务器端进行通信,取n条数据到JDBC的客户端中,然后返回第一条给调用者。当调用者取到第n+1条数据的时候,会再次到数据库服务端取数据。 作用:避免了数据库同时把所有结果全部传输到客户端,导致客户端的内存资源不足。 建议:建议根据自身的业务查询数据数量和客户端机器内存情况来配置此参数,设置fetchsize时要关闭自动提交autocommit=false模式,否则会导致fetchsize无法生效。
  • setAutocommit方法 作用:值为true时,执行每个语句都会自动开启事务,在执行结束后自动提交事务,即每个语句都是一个事务。值为false时,会自动开启一个事务,事务需要通过执行SQL手动提交。 建议:根据业务特征进行调整,如果基于性能或者其它方面考虑,需要关闭autocommit时,需要应用程序自己来保证事务的提交。例如,在指定的业务SQL执行完之后做显式提交,特别是客户端退出之前务必保证所有的事务已经提交。
  • targetServerType 原理:值为master时会依次尝试连接串中配置的IP,直到能够连接到集群中的主机。 值为slave时会依次尝试连接串中配置的IP,直到能够连接到集群中的备机(查询语句为:select local_role, db_state from pg_stat_get_stream_replications();)。 建议:有写操作的业务建议配置master,以保证主备切换后能正常连接主机,但是要注意在主备倒换过程中备机没有完全升主的时候无法正常建连,导致业务语句无法正常执行。
  • 参数说明 OR REPLACE 可选。如果同义词已存在,则重新定义。 synonym_name 创建的同义词名字,可以带模式名。 取值范围:字符串,要符合标识符命名规范。 object_name 关联的对象名字,可以带模式名。 取值范围:字符串,要符合标识符命名规范。 object_name可以是不存在的对象名称。 object_name可以是使用DATABASE LINK方式访问远程对象。DATABASE LINK详细使用方式请见DATABASE LINK。 避免对包含口令等敏感信息的函数,如加解密类函数gs_encrypt、gs_decrypt等创建别名并且使用别名调用,防止敏感信息泄露。
  • 示例 --创建模式ot。 gaussdb=# CREATE SCHEMA ot; --创建表ot.t1及其同义词t1。 gaussdb=# CREATE TABLE ot.t1(id int, name varchar2(10)); gaussdb=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; --使用同义词t1。 gaussdb=# SELECT * FROM t1; gaussdb=# INSERT INTO t1 VALUES (1, 'ada'), (2, 'bob'); gaussdb=# UPDATE t1 SET t1.name = 'cici' WHERE t1.id = 2; --创建同义词v1及其关联视图ot.v_t1。 gaussdb=# CREATE SYNONYM v1 FOR ot.v_t1; gaussdb=# CREATE VIEW ot.v_t1 AS SELECT * FROM ot.t1; --使用同义词v1。 gaussdb=# SELECT * FROM v1; --创建重载函数ot.add及其同义词add。 gaussdb=# CREATE OR REPLACE FUNCTION ot.add(a integer, b integer) RETURNS integer AS $$ SELECT $1 + $2 $$ LANGUAGE sql; gaussdb=# CREATE OR REPLACE FUNCTION ot.add(a decimal(5,2), b decimal(5,2)) RETURNS decimal(5,2) AS $$ SELECT $1 + $2 $$ LANGUAGE sql; gaussdb=# CREATE OR REPLACE SYNONYM add FOR ot.add; --使用同义词add。 gaussdb=# SELECT add(1,2); gaussdb=# SELECT add(1.2,2.3); --创建存储过程ot.register及其同义词register。 gaussdb=# CREATE PROCEDURE ot.register(n_id integer, n_name varchar2(10)) SECURITY INVOKER AS BEGIN INSERT INTO ot.t1 VALUES(n_id, n_name); END; / gaussdb=# CREATE OR REPLACE SYNONYM register FOR ot.register; --使用同义词register,调用存储过程。 gaussdb=# CALL register(3,'mia'); --删除同义词。 gaussdb=# DROP SYNONYM t1; gaussdb=# DROP SYNONYM IF EXISTS v1; gaussdb=# DROP SYNONYM IF EXISTS add; gaussdb=# DROP SYNONYM register; gaussdb=# DROP SCHEMA ot CASCADE;
  • 注意事项 定义同义词的用户成为其所有者。 若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。 支持通过同义词访问的数据库对象包括:表、视图、类型、包、函数和存储过程。 使用同义词时,用户需要具有对关联对象的相应权限。 支持使用同义词的DML语句包括:SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。 不建议对临时表创建同义词。如果需要创建的话,需要指定同义词的目标临时表的模式名,否则无法正常使用改同义词,并且在当前会话结束前执行DROP SYNONYM命令。 删除原对象后,与之关联同义词不会被级联删除,继续访问该同义词会报错,对于表提示已失效,对于函数、存储过程、包的等会提示对象不存在。 被授予了CREATE ANY SYNONYM权限的用户能够在用户模式下创建同义词。 不支持针对包含加密列的密态表及基于密态表的视图、函数、存储过程创建同义词。 同义词关联的对象可以是package,也可以是package下的函数。可以通过关联package的方式访问package下的函数;不支持同义词关联package下的函数后,通过同义词直接访问package下的函数。 同义词的SCHEMA是用户所在SCHEMA时,该同义词OWNER为SCHEMA的OWNER,其他场景同义词OWNER默认为同义词的创建者。 设置SEARCH_PATH,未指定同义词SCHEMA情况下,存储过程和函数会优先按照名称检索PG_PROC表,在没有同名函数时,检索同义词,最后按照SEARCH_PATH检索;其他对象优先检索SEARCH_PATH,同SCHEMA下,本名的对象优先于同义词被访问。 不支持通过DDL语句CREATE、DROP、ALTER操作同义词的方式访问同义词所关联的对象。
  • PG_LANGUAGE PG_LANGUAGE系统表登记编程语言,用户可以用这些语言或接口写函数或者存储过程。 表1 PG_LANGUAGE字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性;必须明确选择)。 lanname name - 语言的名称。 lanowner oid PG_AUTHID.oid 语言的所有者。 lanispl boolean - 对于内部语言而言是假(比如SQL),对于用户定义的语言则是真。目前,gs_dump仍然使用该字段判断哪种语言需要转储,但是这些可能在将来被其它机制取代。 lanpltrusted boolean - 如果这是可信语言则为真,意味着系统相信它不会被授予任何正常SQL执行环境之外的权限。不可信语言为假,只有初始用户可以用不可信的语言创建函数。 lanplcallfoid oid PG_PROC.oid 对于非内部语言,这是指向该语言处理器的引用,语言处理器是一个特殊函数, 负责执行以某种语言写的所有函数。 laninline oid PG_PROC.oid 这个字段引用一个负责执行“inline”匿名代码块的函数(DO块)。如果不支持内联块则为零。 lanvalidator oid PG_PROC.oid 这个字段引用一个语言校验器函数,它负责检查新创建的函数的语法和有效性。如果没有提供校验器,则为零。 lanacl aclitem[] - 访问权限。 父主题: 系统表
  • PG_SETTINGS PG_SETTINGS视图显示数据库运行时参数的相关信息。 表1 PG_SETTINGS字段 名称 类型 描述 name text 参数名称。 setting text 参数当前值。 unit text 参数的单位。 category text 参数的逻辑组。 short_desc text 参数的简单描述。 extra_desc text 参数的详细描述。 context text 设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser、user。 vartype text 参数类型,包括bool、enum、integer、real、string。 source text 参数的赋值方式。 min_val text 参数最小值。如果参数类型不是数值型,那么该字段值为null。 max_val text 参数最大值。如果参数类型不是数值型,那么该字段值为null。 enumvals text[] enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。 boot_val text 数据库启动时参数默认值。 reset_val text 数据库重置时参数默认值。 sourcefile text 设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。 sourceline integer 设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。 父主题: 系统视图
  • SUMMARY_STATIO_SYS_SEQUEN CES SUMMARY_STATIO_SYS_SEQUENCES视图显示数据库内汇聚的命名空间中所有系统序列的I/O状态信息。 表1 SUMMARY_STATIO_SYS_SEQUENCES字段 名称 类型 描述 schemaname name 序列中模式名。 relname name 序列名。 blks_read numeric 从序列中读取的磁盘块数。 blks_hit numeric 序列中缓存命中数。 父主题: Cache/IO
  • GS_AUDITING_POLICY GS_AUDITING_POLICY系统表记录统一审计的主体信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_AUDITING_POLICY字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 polname name 策略名称,需要唯一,不可重复。 polcomments name 策略描述字段,记录策略相关的描述信息,通过COMMENTS关键字体现。 modifydate timestamp without time zone 策略创建或修改的最新时间戳。 polenabled boolean 用来表示策略启动开关。 t(true):表示策略启动。 f(false):表示策略没有启动。 父主题: 系统表
  • 基本语句 在编写PL/SQL过程中,会定义一些变量,给变量赋值,调用其他存储过程等。介绍PL/SQL中的基本语句,包括定义变量、赋值语句、调用语句以及返回语句。 尽量不要在存储过程中调用包含密码的SQL语句,因为存储在数据库中的存储过程文本可能被其他有权限的用户看到导致密码信息被泄漏。如果存储过程中包含其他敏感信息也需要配置存储过程的访问权限,保证敏感信息不会泄漏。 定义变量 赋值语句 调用语句 父主题: 存储过程
  • vacuum_cost_delay 参数说明:指定开销超过vacuum_cost_limit的值时,进程睡眠的时间。 要注意在许多系统上,睡眠的有效分辨率是10毫秒。因此把vacuum_cost_delay设置为一个不是10的整数倍的数值与将它设置为下一个10的整数倍作用相同。 此参数一般设置较小,常见的设置是10或20毫秒。调整此特性资源占用率时,最好是调整其他参数,而不是此参数。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~100,单位为ms,正数值表示打开基于开销的清理延迟特性;0表示关闭基于开销的清理延迟特性。 默认值:1
  • GLOBAL_FILE_REDO_IOSTAT 显示数据库内各节点的Redo(WAL)相关统计信息。 表1 GLOBAL_FILE_REDO_IOSTAT字段 名称 类型 描述 node_name name 节点名称。 phywrts bigint 向wal buffer中写的次数。 phyblkwrt bigint 向wal buffer中写的block的块数。 writetim bigint 向xLog文件中写操作的时间(单位:微秒)。 avgiotim bigint 平均写xLog的时间(writetim/phywrts,单位:微秒)。 lstiotim bigint 最后一次写xLog的时间(单位:微秒)。 miniotim bigint 最小的写xLog时间(单位:微秒)。 maxiowtm bigint 最大的写xLog时间(单位:微秒)。 父主题: File
  • PG_REPLICATION_ORIGIN PG_REPLICATION_ORIGIN系统表包含所有已创建的复制源,该表在数据库实例的所有数据库之间共享,即每个实例只有一份,而不是每个数据库一份。 表1 PG_REPLICATION_ORIGIN字段 名称 类型 描述 roident oid 一个数据库实例范围内唯一的复制源标识符。 roname text 外部的由用户定义的复制源名称。 父主题: 系统表
  • java.sql.Driver java.sql.Driver是数据库驱动接口。 表1 对java.sql.Driver的支持情况 方法名 返回值类型 支持JDBC 4 acceptsURL(String url) Boolean Yes connect(String url, Properties info) Connection Yes jdbcCompliant() Boolean Yes getMajorVersion() int Yes getMinorVersion() int Yes getParentLogger() Logger Yes getPropertyInfo(String url, Properties info) DriverPropertyInfo[] Yes 父主题: JDBC接口参考
  • PG_GTT_STATS PG_GTT_STATS视图可用来查看当前会话所有全局临时表的单列统计信息,调用pg_get_gtt_statistics()函数。 表1 PG_GTT_STATS字段 名称 类型 描述 schemaname name schema名称。 tablename name 全局临时表名称。 attname name 属性名称。 inherited boolean 是否统计有继承关系的对象。 null_frac real 该字段中为NULL的记录的比率。 avg_width integer 非NULL记录的平均存储宽度,以字节计算。 n_distinct real 标识全局统计信息中字段里唯一的非NULL数据值的数目。 most_common_vals text[] 高频值列表,按照出现的频率排序。 most_common_freqs real[] 高频值的频率。 histogram_bounds text[] 等频直方图描述列中的数据分布(不包含高频值)。 correlation real 相关系数。 most_common_elems text[] 类型高频值列表,用于数组类型或一些其他类型。 most_common_elem_freqs real[] 类型高频值的频率。 elem_count_histogram real[] 数组类型直方图。 父主题: 系统视图
  • SUMMARY_REL_IOSTAT 获取所有节点上的数据文件I/O 统计信息的汇总求和结果。 表1 SUMMARY_REL_IOSTAT字段 名称 类型 描述 phyrds numeric 读物理文件的数目。 phywrts numeric 写物理文件的数目。 phyblkrd numeric 读物理文件的块的数目。 phyblkwrt numeric 写物理文件的块的数目。 父主题: File
  • 返回值 SQL_SUCCESS:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_NO_DATA:表示SQL语句不返回结果集。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。
  • ADM_TABLESPACES ADM_TABLESPACES视图显示所有的表空间信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。A数据库与 GaussDB 逻辑结构特性不一致。 表1 ADM_TABLESPACES字段 名称 类型 描述 tablespace_name character varying(64) 表空间名称。 block_size numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extents numeric 暂不支持,值为NULL。 max_extents numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 min_extlen numeric 暂不支持,值为NULL。 contents character varying(9) 暂不支持,值为NULL。 status character varying(9) 暂不支持,默认为ONLINE(在线)。 logging character varying(9) 暂不支持,值为NULL。 force_logging character varying(3) 暂不支持,值为NULL。 extent_management character varying(10) 暂不支持,值为NULL。 allocation_type character varying(9) 暂不支持,值为NULL。 plugged_in character varying(3) 暂不支持,值为NULL。 segment_space_management character varying(6) 暂不支持,值为NULL。 def_tab_compression character varying(8) 暂不支持,值为NULL。 retention character varying(11) 暂不支持,值为NULL。 bigfile character varying(3) 暂不支持,值为NULL。 predicate_evaluation character varying(7) 暂不支持,值为NULL。 encrypted character varying(3) 暂不支持,值为NULL。 compress_for character varying(30) 暂不支持,值为NULL。 def_inmemory character varying(8) 暂不支持,值为NULL。 def_inmemory_priority character varying(8) 暂不支持,值为NULL。 def_inmemory_distribute character varying(15) 暂不支持,值为NULL。 def_inmemory_compression character varying(17) 暂不支持,值为NULL。 def_inmemory_duplicate character varying(13) 暂不支持,值为NULL。 shared character varying(12) 暂不支持,值为NULL。 def_index_compression character varying(8) 暂不支持,值为NULL。 index_compress_for character varying(13) 暂不支持,值为NULL。 def_cellmemory character varying(14) 暂不支持,值为NULL。 def_inmemory_service character varying(12) 暂不支持,值为NULL。 def_inmemory_service_name character varying(1000) 暂不支持,值为NULL。 lost_write_protect character varying(7) 暂不支持,值为NULL。 chunk_tablespace character varying(1) 暂不支持,值为NULL。 父主题: 系统视图
  • PG_AM PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 表1 PG_AM字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 amname name - 访问方法的名称。 amstrategies smallint - 访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。 amsupport smallint - 访问方法的支持过程个数。 amcanorder boolean - 这种访问方式是否支持通过索引字段值的命令扫描排序。 amcanorderbyop boolean - 这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。 amcanbackward boolean - 访问方式是否支持向后扫描。 amcanunique boolean - 访问方式是否支持唯一索引。 amcanmulticol boolean - 访问方式是否支持多字段索引。 amoptionalkey boolean - 访问方式是否支持第一个索引字段上没有任何约束的扫描。 amsearcharray boolean - 访问方式是否支持ScalarArrayOpExpr搜索。 amsearchnulls boolean - 访问方式是否支持IS NULL/NOT NULL搜索。 amstorage boolean - 是否允许索引存储的数据类型与列的数据类型不同。 amclusterable boolean - 是否允许在一个这种类型的索引上聚簇。 ampredlocks boolean - 是否允许这种类型的一个索引管理细粒度的谓词锁定。 amkeytype oid PG_TYPE.oid 存储在索引里数据的类型,如果不是一个固定的类型则为0。 aminsert regproc PG_PROC.proname “插入这个行”函数。 ambeginscan regproc PG_PROC.proname “准备索引扫描”函数。 amgettuple regproc PG_PROC.proname “下一个有效行”函数,如果没有则为0。 amgetbitmap regproc PG_PROC.proname “抓取所有的有效行” 函数,如果没有则为0。 amrescan regproc PG_PROC.proname “(重新)开始索引扫描”函数。 amendscan regproc PG_PROC.proname “索引扫描后清理” 函数。 ammarkpos regproc PG_PROC.proname “标记当前扫描位置”函数。 amrestrpos regproc PG_PROC.proname “恢复已标记的扫描位置”函数。 ammerge regproc PG_PROC.proname “归并多个索引对象”函数。 ambuild regproc PG_PROC.proname “建立新索引”函数。 ambuildempty regproc PG_PROC.proname “建立空索引”函数。 ambulkdelete regproc PG_PROC.proname 批量删除函数。 amvacuumcleanup regproc PG_PROC.proname VACUUM后的清理函数。 amcanreturn regproc PG_PROC.proname 检查是否索引支持唯一索引扫描的函数,如果没有则为0。 amcostestimate regproc PG_PROC.proname 估计一个索引扫描开销的函数。 amoptions regproc PG_PROC.proname 为一个索引分析和确认reloptions的函数。 父主题: 系统表
  • DB_ERRORS DB_ERRORS视图显示用户可访问存储对象的最新编译错误信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_ERRORS字段 名称 类型 描述 owner character varying(128) 对象的所有者。 name character varying(128) 对象的名称。 type character varying(12) 对象类型。 sequence numeric 序列号。 line numeric 发生错误的行号。 position numeric 暂不支持,值为NULL。 text character varying(4000) 错误文本。 attribute character varying(9) 属性标记,错误(ERROR)。 message_number numeric 暂不支持,值为NULL。 父主题: 系统视图
  • GS_TOTAL_MEMORY_DETAIL GS_TOTAL_MEMORY_DETAIL视图显示当前数据库节点的内存使用情况,单位为MB。当GUC参数enable_memory_limit的值为off时,本视图不可用。 表1 GS_TOTAL_MEMORY_DETAIL字段 名称 类型 描述 nodename text 节点名称。 memorytype text 内存类型,包括以下几种: max_process_memory:GaussDB实例所占用的内存大小。 process_used_memory:GaussDB进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:最大动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 max_backend_memory:使用HA端口执行业务可使用的最大内存上限。 backend_used_memory:使用HA端口执行业务已使用的内存。 max_shared_memory:最大共享内存。 shared_used_memory:已使用的共享内存。 max_sctpcomm_memory:通信库所允许使用的最大内存。 sctpcomm_used_memory:通信库已使用的内存大小。 sctpcomm_peak_memory:通信库的内存峰值。 other_used_memory:其他已使用的内存大小。 memorymbytes integer 内存类型分配内存的大小。 父主题: 系统视图
  • 存储过程支持自治事务 自治事务可以在存储过程中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建存储过程语法相同,示例如下。 --建表 gaussdb=# create table t2(a int, b int); CREATE TABLE gaussdb=# insert into t2 values(1,2); INSERT 0 1 gaussdb=# select * from t2; a | b ---+--- 1 | 2 (1 row) --创建包含自治事务的存储过程 gaussdb=# CREATE OR REPLACE PROCEDURE autonomous_4(a int, b int) AS DECLARE num3 int := a; num4 int := b; PRAGMA AUTONOMOUS_TRANSACTION; BEGIN insert into t2 values(num3, num4); dbe_output.print_line('just use call.'); END; / CREATE PROCEDURE --创建调用自治事务存储过程的普通存储过程 gaussdb=# CREATE OR REPLACE PROCEDURE autonomous_5(a int, b int) AS DECLARE BEGIN dbe_output.print_line('just no use call.'); insert into t2 values(666, 666); autonomous_4(a,b); rollback; END; / CREATE PROCEDURE --调用普通存储过程 gaussdb=# select autonomous_5(11,22); just no use call. just use call. autonomous_5 -------------- (1 row) --查看表结果 gaussdb=# select * from t2 order by a; a | b ----+---- 1 | 2 11 | 22 (2 rows) 上述例子,最后在回滚的事务块中执行包含自治事务的存储过程,直接说明了自治事务的特性,即主事务的回滚,不会影响自治事务已经提交的内容。 父主题: 自治事务
  • type ColumnType type ColumnType如下表所示。 方法 描述 返回值 (ci *ColumnType)DatabaseTypeName() 返回列类型的数据库系统名称。返回空字符串表示该驱动类型名字并未被支持。 error (ci *ColumnType)DecimalSize() 返回小数类型的范围和精度。 返回值ok的值为false时,说明给定的类型不可用或者不支持。 precision, scale int64, ok boolean (ci *ColumnType)Length() 返回数据列类型长度。返回值ok的值为false时,说明给定的类型不存在长度。 length int64, ok boolean (ci *ColumnType)ScanType() 返回一种Go类型,该类型能够在Rows.scan进行扫描时使用。 reflect.Type (ci *ColumnType)Name() 返回数据列的名字。 string 父主题: Go接口参考
  • DB_SUBPART_COL_STATIS TICS DB_SUBPART_COL_STATISTI CS 视图存储了当前用户可访问的分区对象的子分区的列统计信息和直方图信息。所有用户都可以访问该视图.该视图同时存在于pg_catalog和sys schema下。 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表名。 subpartition_name character varying(128) 表子分区名称。 column_name character varying(4000) 列名。 num_distinct numeric 暂不支持,值为NULL。 low_value raw 暂不支持,值为NULL。 high_value raw 暂不支持,值为NULL。 density numeric 暂不支持,值为NULL。 num_nulls numeric 暂不支持,值为NULL。 num_buckets numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp(0) without time zone 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(41) 暂不支持,值为NULL。 avg_col_len numeric 暂不支持,值为NULL。 histogram character varying(15) 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 系统视图
  • 示例 示例1:连接数据库 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 //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。 public static Connection getConnect(String username, String passwd) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:postgresql://$ip:$port/postgres"; Connection conn = null; try { //加载驱动。 Class.forName(driver); } catch( Exception e ) { e.printStackTrace(); return null; } try { //创建连接。 conn = DriverManager.getConnection(sourceURL, username, passwd); System.out.println("Connection succeed!"); } catch(Exception e) { e.printStackTrace(); return null; } return conn; } 示例2:使用Properties对象作为参数建立连接 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 // 以下代码将使用Properties对象作为参数建立连接 public static Connection getConnectUseProp(String username, String passwd) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:postgresql://$ip:$port/postgres"; Connection conn = null; Properties info = new Properties(); try { //加载驱动。 Class.forName(driver); } catch( Exception e ) { e.printStackTrace(); return null; } try { info.setProperty("user", username); info.setProperty("password", passwd); //创建连接。 conn = DriverManager.getConnection(sourceURL, info); System.out.println("Connection succeed!"); } catch(Exception e) { e.printStackTrace(); return null; } return conn; } 常用参数详情请参见JDBC常用参数参考。
  • 参数 表1 数据库连接参数 参数 描述 url postgresql.jar数据库连接描述符。格式如下: jdbc:postgresql:database jdbc:postgresql://host/database jdbc:postgresql://host:port/database jdbc:postgresql://host:port/database?param1=value1¶m2=value2 jdbc:postgresql://host1:port1,host2:port2/database?param1=value1¶m2=value2 说明: database为要连接的数据库名称。 host为数据库服务器名称或IP地址。 由于安全原因,数据库主节点禁止数据库内部其他节点无认证接入。如果要在数据库内部访问数据库主节点,请将JDBC程序部署在数据库主节点所在机器,host使用“127.0.0.1”。否则可能会出现“FATAL: Forbid remote connection with trust method!”错误。 建议业务系统单独部署在数据库外部,否则可能会影响数据库运行性能。 缺省情况下,连接服务器为localhost。 port为数据库服务器端口。 缺省情况下,会尝试连接到5431端口的database。 param为参数名称,即数据库连接属性。 参数可以配置在URL中,以“?”开始配置,以“=”给参数赋值,以“&”作为不同参数的间隔。也可以采用info对象的属性方式进行配置,详情见示例。 value为参数值,即数据库连接属性值。 连接时需配置connectTimeout、socketTimeout,如果未配置,默认为0,即不会超时。在DN与客户端出现网络故障时,客户端一直未收到DN侧ACK确认报文,会启动超时重传机制,不断的进行重传。当超时时间达到系统默认的600s后才会报超时错误,这会导致RTO时间较高。 info 数据库连接属性(所有属性大小写敏感)。常用的属性如下: PGDBNAME:String类型。表示数据库名称(URL中无需配置该参数,自动从URL中解析)。 PGHOST:String类型。主机IP地址。详情见示例。 PGPORT:Integer类型。主机端口号。详情见示例。 user:String类型。表示创建连接的数据库用户。 password:String类型。表示数据库用户的密码。 enable_ce:String类型。其中enable_ce=1表示JDBC支持密态等值查询基本能力。 refreshClientEncryption:String类型。其中refreshClientEncryption=1表示密态数据库支持客户端缓存刷新(默认值为1)。 loggerLevel:String类型。目前支持3种级别:OFF、DEBUG、TRACE。设置为OFF关闭日志,设置为DEBUG和TRACE记录的日志信息详细程度不同。 loggerFile:String类型。Logger输出的文件名。需要显示指定日志文件名,若未指定目录则生成在客户端运行程序目录。此参数已废弃,不再生效,如需使用可通过 java.util.logging 属性文件或系统属性进行配置。 allowEncodingChanges:Boolean类型。设置该参数值为“true”进行字符集类型更改,配合characterEncoding=CHARSET设置字符集,二者使用“&”分隔。characterEncoding取值范围为UTF8、GBK、LATIN1、GB18030,缺省值为false。 说明: 当连接到字符集为GB18030_2022的数据库时,characterEncoding设置为GB18030_2022不生效,会默认使用UTF8,需要设置为GB18030才能正常解析服务端的GB18030_2022字符。 currentSchema:String类型。在search-path中指定要设置的Schema。如果Schema名包含除字母、数字、下划线之外的特殊字符,建议在Schema名上加引号,注意加引号后Schema名大小写敏感。如需配置多个Schema,要用“,”进行分隔,包含特殊字符的Schema也需要加引号处理。 例如:currentSchema=schema_a、"schema-b"、"schema/c"。 hostRecheckSeconds:Integer类型。JDBC尝试连接主机后会保存主机状态:连接成功或连接失败。在hostRecheckSeconds时间内保持可信,超过则状态失效。缺省值是10秒。 ssl:Boolean类型。以SSL方式连接。 ssl=true可支持NonValidatingFactory通道和使用证书的方式: 1、NonValidatingFactory通道需要配置用户名和密码,同时将SSL设置为true。 2、配置客户端证书、密钥、根证书,将SSL设置为true。 sslmode:String类型。SSL认证方式。取值范围为:disable、allow、prefer、require、verify-ca、verify-full。 disable:不使用SSL安全连接。 allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 prefer:如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。 require只尝试SSL连接,如果存在CA文件,则应设置成verify-ca的方式验证。 verify-ca只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。 verify-full只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致。 sslcert:String类型。提供证书文件的完整路径。客户端和服务端证书的类型为End Entity。 sslkey:String类型。提供密钥文件的完整路径。使用时将客户端证书转换为DER格式。 openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt sslrootcert:String类型。SSL根证书的文件名。根证书的类型为CA。 sslpassword:String类型。提供给ConsoleCallbackHandler使用。 sslpasswordcallback:String类型。SSL密码提供者的类名。缺省值:org.postgresql.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler。 sslfactory:String类型。提供的值是SSLSocketFactory在建立SSL连接时用的类名。 sslfactoryarg:String类型。此值是sslfactory类的构造函数的可选参数(不推荐使用)。 sslhostnameverifier:String类型。主机名验证程序的类名。接口实现javax.net.ssl.HostnameVerifier,默认使用org.postgresql.ssl.PGjdbcHostnameVerifier。 loginTimeout:Integer类型。指建立数据库连接的等待时间。超时时间单位为秒。当url配置多IP时,若获取连接花费的时间超过此值,则连接失败,不再尝试后续IP,缺省值为0。 connectTimeout:Integer类型。用于连接服务器操作的超时值。如果连接到服务器花费的时间超过此值,则连接断开。超时时间单位为秒,值为0时表示已禁用,timeout不生效。当url配置多IP时,表示连接单个IP的超时时间,缺省值为0。 socketTimeout:Integer类型。用于socket读取操作的超时值。如果从服务器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0时表示已禁用,timeout不生效,缺省值为0。 socketTimeoutInConnecting:Integer类型。用于控制建连阶段socket读取操作的超时值。如果建连时从服务器读取所花费的时间超过此值,则查找下一个节点建连。超时时间单位为秒,默认为5s。 statementTimeout:Integer类型。用于控制connection中statement执行时间的超时值。如果statement执行时间超过此值,则取消该statement执行。超时时间单位为毫秒,值为0表示已禁用,timeout不生效,缺省值为0。 driverInfoMode:String类型。用于控制驱动描述信息的输出模式。取值范围为postgresql、gaussdb,默认缺省值为postgresql,输出postgresql相关的驱动描述信息;设置为gaussdb时输出gaussdb相关的驱动描述信息。 cancelSignalTimeout:Integer类型。发送取消消息本身可能会阻塞,此属性控制用于取消命令的“connect超时”和“socket超时”。超时时间单位为秒,默认值为10秒。 tcpKeepAlive:Boolean类型。启用或禁用TCP保活探测功能。默认为false。 logUnclosedConnections:Boolean类型。客户端可能由于未调用Connection对象的close()方法而泄漏Connection对象。最终这些对象将被垃圾回收,并且调用finalize()方法。如果调用者忽略了此操作,该方法将关闭Connection,缺省值为false。 assumeMinServerVersion:String类型。客户端会发送请求进行float精度设置。该参数设置要连接的服务器版本,如assumeMinServerVersion=9.0,可以在建立时减少相关包的发送。 ApplicationName:String类型。设置正在使用连接的JDBC驱动的名称。通过在数据库主节点上查询pg_stat_activity表可以看到正在连接的客户端信息,JDBC驱动名称显示在application_name列。缺省值为PostgreSQL JDBC Driver。 connectionExtraInfo:Boolean类型。表示驱动是否上报当前驱动的部署路径、进程属主用户到数据库。 取值范围:true或false,默认值为false。设置connectionExtraInfo为true,JDBC驱动会将当前驱动的部署路径、进程属主用户、url连接配置信息上报到数据库中,记录在connection_info参数里,同时可以在PG_STAT_ACTIVITY中查询到。 autosave:String类型。共有3种:"always"、"never"、"conservative"。如果查询失败,指定驱动程序应该执行的操作。在autosave=always模式下,JDBC驱动程序在每次查询之前设置一个保存点,并在失败时回滚到该保存点。在autosave=never模式(默认)下,无保存点。在autosave=conservative模式下,每次查询都会设置保存点,但是只会在“statement XXX无效”等情况下回滚并重试,缺省值为never。 protocolVersion:Integer类型。连接协议版本号,目前仅支持1和3。设置1时仅代表连接的是V1服务端。设置3时将采用MD5加密方式,需要同步修改数据库的加密方式,将GUC参数password_encryption_type设置为1,重启数据库生效后需要创建用MD5方式加密口令的用户。同时修改pg_hba.conf,将客户端连接方式修改为MD5,用新建用户进行登录(不推荐)。 说明: MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 prepareThreshold:Integer类型。控制parse语句何时发送。默认值是5。第一次parse一个SQL比较慢,后面再parse就会比较快,因为有缓存了。如果一个会话连续多次执行同一个SQL,在达到prepareThreshold次数以上时,JDBC将不再对这个SQL发送parse命令。 preparedStatementCacheQueries:Integer类型。确定每个连接中缓存的查询数,默认情况下是256。若在prepareStatement()调用中使用超过256个不同的查询,则最近最少使用的查询缓存将被丢弃。“0”表示禁用缓存。 preparedStatementCacheSizeMiB:Integer类型。确定每个连接可缓存的最大值(以兆字节为单位),默认情况下是5。若缓存了超过5MB的查询,则最近最少使用的查询缓存将被丢弃。“0”表示禁用缓存。 databaseMetadataCacheFields:Integer类型。默认值是65536。指定每个连接可缓存的最大值。“0”表示禁用缓存。 databaseMetadataCacheFieldsMiB:Integer类型。默认值是5。每个连接可缓存的最大值,单位是MB。“0”表示禁用缓存。 stringtype:String类型。可选字段为:false、"unspecified"、"varchar"。设置通过setString()方法使用的PreparedStatement参数的类型,如果stringtype设置为VARCHAR(默认值),则这些参数将作为varchar参数发送给服务器。若stringtype设置为unspecified,则参数将作为untyped值发送到服务器,服务器将尝试推断适当的类型。 batchMode:String类型。用于确定是否使用batch模式连接。默认值为on,表示开启batch模式。设置batchMode=on执行成功的返回结果为[count, 0, 0...0],数组第一个元素为批量影响的总条数;设置batchMode=off执行成功的返回结果为[1, 1, 1...1],数组各元素对应单次修改的影响条数。 fetchsize:Integer类型。用于设置数据库连接所创建statement的默认fetchsize。默认值为0,表示一次获取所有结果。与defaultRowFetchSize等价。 reWriteBatchedInserts:Boolean类型。批量导入时,该参数设置为true,可将N条插入语句合并为一条:insert into TABLE_NAME values(values1, ..., valuesN), ..., (values1, ..., valuesN);使用该参数时,需设置batchMode=off,缺省值为false。 unknownLength:Integer类型。默认为Integer.MAX_VALUE。某些postgresql类型(例如TEXT)没有明确定义的长度,当通过ResultSetMetaData.getColumnDisplaySize和ResultSetMetaData.getPrecision等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。 uppercaseAttributeName:Boolean类型。默认值为false不开启,为true时开启。该参数开启后会将获取元数据的接口的查询结果转为大写。适用场景为数据库中存储元数据全为小写,但要使用大写的元数据作为出参和入参。 涉及到的接口请参见:java.sql.DatabaseMetaData、java.sql.ResultSetMetaData defaultRowFetchSize:Integer类型。确定一次fetch在ResultSet中读取的行数。限制每次访问数据库时读取的行数可以避免不必要的内存消耗,从而避免OutOfMemoryException。缺省值是0,意味着ResultSet中将一次获取所有行。本参数不允许设置为负值。 binaryTransfer:Boolean类型。使用二进制格式发送和接收数据,默认值为“false”。 binaryTransferEnable:String类型。启用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一,例如binaryTransferEnable=Integer4_ARRAY,Integer8_ARRAY。 比如:OID名称为BLOB,编号为88,可以如下配置: binaryTransferEnable=BLOB 或 binaryTransferEnable=88 binaryTransferDisEnable:String类型。禁用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一。覆盖binaryTransferEnable的设置。 blobMode:String类型。用于设置setBinaryStream方法为不同类型的数据赋值,设置为on时表示为blob类型数据赋值,设置为off时表示为bytea类型数据赋值,默认为on。 socketFactory:String类型。用于创建与服务器socket连接的类的名称。该类必须实现接口“javax.net.SocketFactory”,并定义无参或单String参数的构造函数。 socketFactoryArg:String类型。此值是上面提供的socketFactory类的构造函数的可选参数,不推荐使用。 receiveBufferSize:Integer类型。该值用于设置连接流上的SO_RCVBUF。 sendBufferSize:Integer类型。该值用于设置连接流上的SO_SNDBUF。 preferQueryMode:String类型。共有4种:"extended", "extendedForPrepared", "extendedCacheEverything", "simple"。用于指定执行查询的模式,simple模式会excute,不parse和bind;extended模式会bind和excute;extendedForPrepared模式为prepared statement扩展使用;extendedCacheEverything模式会缓存每个statement。 targetServerType: String类型。该参数识别主备数据节点是通过查询URL连接串中,数据节点是否允许写操作来实现的,默认为"any"。共有五种:"any"、"master"、"slave"、"preferSlave"、"clusterMainNode"。 master则尝试连接到URL连接串中的主节点,如果找不到将抛出异常。 slave则尝试连接到URL连接串中的备节点,如果找不到将抛出异常。 preferSlave则尝试连接到URL连接串中的备数据节点(如果有可用节点),否则连接到主数据节点。 any则尝试连接URL连接串中的任何一个数据节点。 clusterMainNode则尝试连接到URL串中的主节点或主备(容灾主节点),如果找不到将抛出异常。 priorityServers:Integer类型。此值用于指定url上配置的前n个节点作为主数据库实例被优先连接。默认值为NULL。该值为数字,大于0,且小于url上配置的DN数量。用于流式容灾场景。 例如:jdbc:postgresql://host1:port1,host2:port2,host3:port3,host4:port4,/database?priorityServers=2。即表示host1与host2为主数据库实例节点,host3与host4为容灾数据库实例节点。 forceTargetServerSlave:Boolean类型。此值用于控制是否开启强制连接备机功能,并在数据库实例发生主备切换时,禁止已存在的连接在升主备机上继续使用。默认值为false,表示不开启强制连接备机功能。true,表示开启强制连接备机功能。 traceInterfaceClass:String类型。默认值为NULL,用于获取traceId的实现类。值是实现获取traceId方法接口org.postgresql.log.Tracer的实现类的完整限定类名。 use_boolean:Boolean类型。用于设置extended模式下setBoolean方法绑定的oid类型,默认为false,绑定int2类型。设置为true则绑定Boolean类型。 allowReadOnly:Boolean类型。用于设置是否允许只读模式,默认为true,允许设置只读模式;设置为false则禁用只读模式。 TLSCiphersSupperted:String类型。用于设置支持的TLS加密套件,默认为TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384。 stripTrailingZeros:Boolean类型。默认值为false,设置为true则去除numeric类型后的0,仅对ResultSet.getObject(int columnIndex)生效。 enableTimeZone:Boolean类型。默认值为true,用于指定是否启用服务端时区设置,ture表示获取JVM时区指定数据库时区,false表示使用数据库时区。 loadBalanceHosts:Boolean类型。在默认模式下(禁用),默认顺序连接URL中指定的多个主机。如果启用,则使用洗牌算法从候选主机中随机选择一个主机建立连接。集中式环境下,如果使用此参数需要保证业务中没有写操作。 oracleCompatible:String类型。默认为false。用户控制驱动接口的A兼容特性。有以下几种取值: 设置为true或on,表示开启驱动侧所有的A兼容特性。 设置为false或off,表示关闭驱动侧所有的A兼容特性。 设置为“tag1,tag2,tag3”,配置一个或多个tag,tag之间用“,”隔开,表示开启驱动侧部分的A兼容特性,每个tag对应一个A兼容特性。 当前支持的tag有: getProcedureColumns:DatabaseMetaData#getProcedureColumns接口的行为兼容A行为。 batchInsertAffectedRows:reWriteBatchedInserts开启后,执行批量插入接口Statement#executeBatch的返回结果兼容A行为。 printSqlInLog:Boolean类型。默认值为true,用于指定异常信息中或日志中是否输出sql语句,true表示启用,false表示禁用。 user 数据库用户。 password 数据库用户的密码。 uppercaseAttributeName参数开启后,如果数据库中有小写、大写和大小写混合的元数据,只能查询出小写部分的元数据,并以大写的形式输出。使用前请务必确认元数据的存储是否全为小写以避免数据出错。
  • DBE_PLDEVELOPER.gs_source 用于记录PL/SQL对象(存储过程、函数、包、包体)编译相关信息,具体内容见下列字段描述。 打开plsql_show_all_error参数后,会把成功或失败的PL/SQL对象编译信息记录在此表中,如果关闭plsql_show_all_error参数则只会将正确的编译相关信息插入此表中。 gs_source表中只记录用户定义的原始对象语句,即使用户使用了ALTER改变了创建的SCHEMA或者名字,gs_source表中的信息也不会发生变化,如果用户更改了对象的SCHEMA或者名字,会导致用户在删除对象后,对象仍存在于gs_source表中。 gs_source表中的owner指创建的用户,不是用户创建存储过程或者package时指定的用户。 数据库默认情况下没有对gs_source表中设置行级访问控制,如果用户想使用数据库隔离性特性,请参考以下语句,自行添加行级访问控制。 ALTER TABLE dbe_pldeveloper.gs_source ENABLE ROW LEVEL SECURITY; CREATE ROW LEVEL SECURITY POLICY all_data_rls ON dbe_pldeveloper.gs_source USING(owner = (select oid from pg_roles where rolname=current_user)); 表1 DBE_PLDEVELOPER.gs_source字段 名称 类型 描述 id oid 对象的ID。 owner bigint 对象创建用户ID。 nspid oid 对象的模式ID。 name name 对象名。 type text 对象类型(procedure/function/package/package body)。 status boolean 是否创建成功。 src text 对象创建的原始语句。 父主题: DBE_PLDEVELOPER
  • 变量语法 给变量赋值的语法请参见图1。 图1 assignment_value::= 对以上语法格式的解释如下: variable_name:变量名。 value:可以是值或表达式。值value的类型需要和变量variable_name的类型兼容才能正确赋值。 示例: 1 2 3 4 5 6 7 8 gaussdb=# DECLARE emp_id INTEGER := 7788;--赋值 BEGIN emp_id := 5;--赋值 emp_id := 5*7784; END; / ANONYMOUS BLOCK EXECUTE
共100000条