华为云用户手册

  • 语法格式 CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ column_name type_name [ OPTIONS ( { option 'value' } [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ] [, ... ] ] ) SERVER server_name [ OPTIONS ( { option 'value' } [, ... ] ) ]; 其中列约束column_constraint为: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | DEFAULT default_expr }
  • 示例 --创建server。 gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --创建外表。 gaussdb=# CREATE FOREIGN TABLE foreign_tbl (col1 text) SERVER my_server OPTIONS (logtype 'gs_log'); --删除外表。 gaussdb=# DROP FOREIGN TABLE foreign_tbl; --删除server。 gaussdb=# DROP SERVER my_server;
  • MY_TAB_COL_STATIS TICS MY_TAB_COL_STATISTI CS 视图显示从MY_TAB_COLUMNS 中提取的列统计信息和直方图信息。所有用户都可以访问该视图。该视图同时存在于PG_CATA LOG 和SYS Schema下。具体字段信息如表1所示。 表1 MY_TAB_COL_STATISTICS字段 名称 类型 描述 table_name character varying(128) 表名。 column_name character varying(128) 列名。 num_distinct numeric 列中不同值的数量。 low_value raw 列中的低值。 high_value raw 列中的高值。 density numeric 如果COLUMN_NAME上有直方图,则此列将显示直方图中跨越少于2个端点的值的选择性。它不代表跨越2个或更多端点的值的选择性。 如果COLUMN_NAME上没有可用的直方图,则该列的值为1/NUM_DISTINCT。 num_nulls numeric 列中空值数。 num_buckets numeric 列的直方图中的桶数。 last_analyzed date 最近分析此列的日期,数据库重启后,数据会丢失。 sample_size numeric 用于分析此列的样本量。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(99) 暂不支持,值为NULL。 avg_col_len numeric 列的平均长度(以字节为单位)。 histogram character varying(15) 表示直方图是否存在,如果存在的话是什么类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI-W IDT H:表示等宽直方图。 scope character varying(7) 对于在除全局临时表之外的任何表上收集的统计信息,该值是SHARED(表示统计信息在所有会话之间共享)。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • 客户端配置 上传证书文件,将在服务端配置(服务端配置请联系管理员)操作中生成的文件client.key、client.crt、cacert.pem放置在客户端。 示例一: package main //依赖包根据环境中依赖包路径设置 import ( "database/sql" "fmt" _ [go驱动模块名] /*请根据go驱动实际模块名替换*/ "log" ) // 以双向认证为例,本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置) func main() { hostip := os.Getenv("GOHOSTIP") //GOHOSTIP为写入环境变量的IP地址 port := os.Getenv("GOPORT") //GOPORT为写入环境变量的port usrname := os.Getenv("GOUSRNAME") //GOUSRNAME为写入环境变量的用户名 passwd := os.Getenv("GOPASSWD") //GOPASSWDW为写入环境变量的用户密码 sslpasswd := os.Getenv("GOSSLPASSWD") //GOSSLPASSWD为写入环境变量的密码短语 dsnStr := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " dbname=gaussdb sslcert=certs/client.crt sslkey=certs/client.key sslpassword=" + sslpasswd parameters := []string{ " sslmode=require", " sslmode=verify-ca sslrootcert=certs/cacert.pem", } for _, param := range parameters { db, err := sql.Open("gaussdb", dsnStr+param) if err != nil { log.Fatal(err) } var f1 int err = db.QueryRow("select 1").Scan(&f1) if err != nil { log.Fatal(err) } else { fmt.Printf("RESULT: select 1: %d\n", f1) } db.Close() } } 示例二: package main //依赖包根据环境中依赖包路径设置 import ( "database/sql" _ [go驱动模块名] /*请根据go驱动实际模块名替换*/ "log" "strings" ) // 以验证sslpassword为主,本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置) func main() { hostip := os.Getenv("GOHOSTIP") //GOHOSTIP为写入环境变量的IP地址 port := os.Getenv("GOPORT") //GOPORT为写入环境变量的port usrname := os.Getenv("GOUSRNAME") //GOUSRNAME为写入环境变量的用户名 passwd := os.Getenv("GOPASSWD") //GOPASSWDW为写入环境变量的用户密码 dsnStr := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " dbname=gaussdb" sslpasswd := os.Getenv("GOSSLPASSWD") //GOSSLPASSWDW为写入环境变量的密码短语 connStrs := []string{ " sslmode=verify-ca sslcert=certs/client_rsa.crt sslkey=certs/client_rsa.key sslpassword=" + sslpasswd + " sslrootcert=certs/cacert_rsa.pem", " sslmode=verify-ca sslcert=certs/client_ecdsa.crt sslkey=certs/client_ecdsa.key sslpassword=" + sslpasswd + " sslrootcert=certs/cacert_ecdsa.pem", } for _, connStr := range connStrs { db, err := sql.Open("gaussdb", dsnStr+connStr) if err != nil { log.Fatal(err) } var f1 int err = db.QueryRow("select 1").Scan(&f1) if err != nil { if !strings.HasPrefix(err.Error(), "connect failed.") { log.Fatal(err) } } db.Close() } }
  • GS_SPM_BASELINE GS_PLAN_BASELINE系统表是用于存储baseline相关信息的系统表,具备sysadmin权限的用户可以对该系统表进行读操作,但只有初始用户才可以对该系统表进行写操作。 表1 GS_SPM_BASELINE字段 名称 类型 描述 sql_namespace oid schema oid。 sql_hash bigint SPM中SQL的唯一标识。 plan_hash bigint 当前SQL下的plan的唯一标识。 outline text outline文本,可固定当前计划的一组Hint。 cost double precision 计划的总代价。 user oid 创建baseline的用户。 status integer baseline的状态,可选取值有: 0(UNACC):表示未接受的计划。 1(ACC):表示已经接受的计划。 2(FIXED):一种特殊的ACC状态的计划,计划的匹配优先级高于ACC状态的计划。 source text baseline的来源。 gplan boolean 是否是gplan。 creation_time timestamp with time zone baseline的创建时间。 last_used_time timestamp with time zone 计划最近使用时间。 modification_time timestamp with time zone baseline的修改时间。 jump_intercept_cnt bigint 当前baseline拦截计划跳变次数。 invalid boolean 当前baseline是否无效。 父主题: SPM计划管理
  • DB_CONS_COLUMNS DB_CONS_COLUMNS视图显示当前用户可访问的约束字段的信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_CONS_COLUMNS字段 名称 类型 描述 constraint_name character varying(64) 约束名。 table_name character varying(64) 约束相关的表名。 column_name character varying(64) 约束相关的列名。 owner character varying(64) 约束的创建者。 position smallint 表中列的位置。 父主题: 其他系统视图
  • _PG_FOREIGN_TABLES 存储所有的定义在本数据库的外部表信息,如表1所示。只显示当前用户有权访问的外部表信息。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_TABLES字段 名称 类型 描述 foreign_table_catalog information_schema.sql_identifier 外部表所在的数据库名称(永远是当前数据库)。 foreign_table_schema name 外部表的schema名称。 foreign_table_name name 外部表的名称。 ftoptions text[] 外部表的可选项。 foreign_server_catalog information_schema.sql_identifier 外部服务器所在的数据库名称(永远是当前数据库)。 foreign_server_name information_schema.sql_identifier 外部服务器的名称。 authorization_identifier information_schema.sql_identifier 所有者的角色名称。 父主题: Information Schema
  • 故障注入系统函数 gs_fault_inject(int64, text, text, text, text, text) 描述:该函数不能调用,调用时会报WARNING信息:"unsupported fault injection",并不会对数据库产生任何影响和改变。 参数:int64注入故障类型(0:CLOG扩展页面;1:读取CLOG页面;2:强制死锁)。 text第二个入参在第一入参为2的模式下若为“1”则死锁,其余不死锁;第二个入参在第一入参为0、1时,表示CLOG开始扩展或读取的起始页面号。 text第三个入参在第一入参为0、1时,表示扩展或读取的页面个数。 text第四到六入参为预留参数。 返回值类型:int64 父主题: 函数和操作符
  • PG_GET_INVALID_BACKENDS PG_GET_INVALID_BACKENDS视图显示CN上连接到当前DN备机的后台线程信息,只有系统管理员和监控管理员才可以访问。 表1 PG_GET_INVALID_BACKENDS字段 名称 类型 描述 pid bigint 线程ID。 node_name text 后台线程中连接的节点信息。 dbname name 当前连接的数据库。 backend_start timestamp with time zone 后台线程启动的时间。 query text 后台线程正在执行的查询语句。 父主题: 通信
  • 语法格式 CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; 其中角色信息设置子句option语法为: {SYSADMIN | NOSYSADMIN} | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER
  • ADM_SCHEDULER_PROG RAM S ADM_SCHEDULER_PROGRAMS视图显示数据库中所有可以调度的程序信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_SCHEDULER_PROGRAMS字段 名称 类型 描述 owner name 调度程序的所有者。 program_name text 调度程序的名称。 program_type character varying(16) 调度程序的类型,可用类型为: PLSQL_BLOCK:匿名存储过程块。 STORED_PROCEDURE:保存的存储过程。 EXTERNAL_SCRIPT:外部脚本。 program_action text 调度程序执行的操作。 number_of_arguments numeric 调度程序参数个数。 enabled character varying(5) 调度程序是否启用。 comments text 调度程序的备注。 detached character varying(5) 暂不支持,值为NULL。 schedule_limit interval day to second(0) 暂不支持,值为NULL。 priority numeric 暂不支持,值为NULL。 weight numeric 暂不支持,值为NULL。 max_runs numeric 暂不支持,值为NULL。 max_failures numeric 暂不支持,值为NULL。 max_run_duration interval day to second(0) 暂不支持,值为NULL。 has_constraints character varying(5) 暂不支持,值为NULL。 nls_env character varying(4000) 暂不支持,值为NULL。 父主题: 其他系统视图
  • SUMMARY_STAT_SYS_TABLES 显示集群内pg_catalog、information_schema以及pg_toast模式下所有系统表的状态统计信息(在CN节点使用,统计信息包含CN节点与DN节点的数据。对每个节点下系统表的状态信息汇总求和,其中timestamp类型字段不进行求和,仅取所有节点该字段的最新值),如表1所示。 表1 SUMMARY_STAT_SYS_TABLES字段 名称 类型 描述 schemaname name 该表所在的Schema名。 relname name 表名。 seq_scan numeric 该表发起的顺序扫描数。 seq_tup_read numeric 顺序扫描抓取的活跃行数。 idx_scan numeric 该表发起的索引扫描数。 idx_tup_fetch numeric 索引扫描抓取的活跃行数。 n_tup_ins numeric 插入行数。 n_tup_upd numeric 更新行数。 n_tup_del numeric 删除行数。 n_tup_hot_upd numeric HOT更新行数(即没有更新索引列的行数)。 n_live_tup numeric 估计活跃行数。 n_dead_tup numeric 估计不活跃行数。在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 numeric 该表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count numeric 该表被autovacuum清理的次数。 analyze_count numeric 该表被手动分析的次数。 autoanalyze_count numeric 该表被autovacuum守护线程分析的次数。 父主题: Object
  • 动态数据脱敏函数 creditcardmasking(col text, letter char default 'x') 描述:将col字符串后四位之前的数字使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text basicemailmasking(col text, letter char default 'x') 描述:将col字符串中第一个'@'之前的字符使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text fullemailmasking(col text, letter char default 'x') 描述:将col字符串中出现最后一个'.'之前的字符(除'@'外)使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text alldigitsmasking(col text, letter char default '0') 描述:将col字符串中出现的数字使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text shufflemasking(col text) 描述:将col字符串中的字符乱序排列。 参数:待替换的字符串、替换字符。 返回值类型:text randommasking(col text) 描述:将col字符串中的字符随机化。 参数:待替换的字符串、替换字符。 返回值类型:text 可选:regexpmasking(col text, reg text, replace_text text, pos INTEGER default 0, reg_len INTEGER default -1) 描述:将col字符串使用正则表达式替换。 参数:待替换的字符串、正则表达式、替换的起始位置、替换长度。 返回值类型:text 父主题: 函数和操作符
  • GLOBAL_OS_THREADS 提供数据库中所有正常节点下的线程状态信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 GLOBAL_OS_THREADS字段 名称 类型 描述 node_name text 节点名称。 pid bigint 当前节点进程中正在运行的线程号。 lwpid integer 与pid对应的轻量级线程号。 thread_name text 与pid对应的线程名称。 creation_time timestamp with time zone 与pid对应的线程创建的时间。 dbid oid 线程所属的数据库id。 父主题: OS
  • PG_FOREIGN_DATA_WRAPPER PG_FOREIGN_DATA_WRAPPER系统表存储外部数据封装器定义。一个外部数据封装器是在外部服务器上驻留外部数据的机制,是可以访问的。 表1 PG_FOREIGN_DATA_WRAPPER字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段,必须明确选择)。 fdwname name - 外部数据封装器名。 fdwowner oid PG_AUTHID.oid 外部数据封装器的所有者。 fdwhandler oid PG_PROC.oid 引用一个负责为外部数据封装器提供扩展例程的处理函数。如果没有提供处理函数则为零。 fdwvalidator oid PG_PROC.oid 引用一个验证器函数,这个验证器函数负责验证给予外部数据封装器的选项、外部服务器选项和使用外部数据封装器的用户映射的有效性。如果没有提供验证器函数则为零。 fdwacl aclitem[] - 访问权限。 fdwoptions text[] - 外部数据封装器指定选项,使用“keyword=value”格式的字符串。 父主题: 其他系统表
  • 数据库级字符集和字符序 创建一个新的数据库时,可以指定数据库的字符集字符序,创建数据库操作请参见CREATE DATABASE。 CREATE DATABASE [IF NOT EXISTS] database_name [ ENCODING [=] encoding ] | [ LC_COLLATE [=] lc_collate ] | [ LC_CTYPE [=] lc_ctype ] |; 语法说明: database_name 数据库名称。 取值范围:字符串,要符合标识符的命名规范。 ENCODING [ = ] encoding 指定数据库使用的字符编码,可以是字符串(如'SQL_ASCII')、整数编号。 LC_COLLATE [ = ] ‘lc_collate’ 指定新数据库使用的字符集。例如,通过lc_collate = 'zh_CN.gbk'设定该参数。 该参数的使用会影响到对字符串的排序(如使用ORDER BY执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的排序。 取值范围:操作系统支持的字符集。 LC_CTYPE [ = ] ‘lc_ctype’ 指定新数据库使用的字符分类。例如,通过lc_ctype = 'zh_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。 取值范围:操作系统支持的字符分类。 数据库级字符集、字符序语法所有模式均可使用,详细语法请参见CREATE DATABASE。 LC_COLLATE/LC_CTYPE语法不支持指定B模式特有的字符序,参数的取值范围取决于本地环境支持的字符集,可通过locale -a查看。 父主题: 字符集与字符序
  • PV_THREAD_MEMORY_CONTEXT PV_THREAD_MEMORY_CONTEXT视图显示所有线程的内存使用情况,以MemoryContext节点来统计。该视图在关闭线程池(enable_thread_pool = off)时等价于PV_SESSION_MEMORY_DETAIL视图。具体字段信息如表1所示。 其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于8192字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于8192字节的汇总总和,“usedsize”字段表示统计的内存上下文个数。 表1 PV_THREAD_MEMORY_CONTEXT字段 名称 类型 描述 threadid text 线程启动时间+线程标识(字符串信息为timestamp.sessionid)。 tid bigint 线程标识。 thrdtype text 线程类型。可以是系统内存在的任何线程类型,如wlmmonitor等。 contextname text 内存上下文名称。 level smallint 当前上下文在整体内存上下文中的层级。 parent text 父内存上下文名称。 totalsize bigint 当前内存上下文的内存总数,单位Byte。 freesize bigint 当前内存上下文中已释放的内存总数,单位Byte。 usedsize bigint 当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。 父主题: 其他系统视图
  • ADM_SEQUEN CES ADM_SEQUENCES视图显示数据库中所有序列的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_SEQUENCES字段 名称 类型 描述 sequence_owner character varying(64) 序列的所有者。 sequence_name character varying(64) 序列名称。 min_value int16 序列的最小值。 max_value int16 序列的最大值。 increment_by int16 序列的递增值。 last_number int16 上一序列的值。 cache_size int16 序列磁盘缓存大小。 cycle_flag character(1) 序列是否是循环序列。取值范围: Y:循环序列。 N:不是循环序列。 父主题: 其他系统视图
  • Wait Classes by Total Wait Time Wait Classes by Total Wait Time列名称及描述如表1所示。 表1 Wait Classes by Total Wait Time报表主要内容 列名称 描述 Type Wait Event类别名称: STATUS。 LWLOCK_EVENT。 LOCK_EVENT。 IO_EVENT。 Waits Wait次数。 Total Wait Time(us) 总Wait时间(微秒)。 Avg Wait Time(us) 平均Wait时间(微秒)。 父主题: WDR报告信息介绍
  • GLOBAL_LOCKS GLOBAL_LOCKS视图用于查看各节点各打开事务所持有的锁信息,如表1所示。 表1 GLOBAL_LOCKS字段 名称 类型 描述 node_name name 节点名称。 locktype text 被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory或tablespace。 database oid 被锁定对象所在数据库的OID: 如果被锁定的对象是共享对象,则OID为0。 如果是一个事务ID,则为NULL。 relation oid 关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。 page integer 关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。 tuple smallint 页面里边的行编号,如果对象不是行,则为NULL。 virtualxid text 事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。 transactionid xid 事务的ID,如果对象不是一个事务ID,则为NULL。 classid oid 包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。 objid oid 对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。 objsubid smallint 对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为NULL。 virtualtransaction text 持有此锁或者在等待此锁的事务的虚拟ID。 pid bigint 持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。 mode text 这个线程持有的或者是期望的锁模式。 granted boolean 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean 如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。 父主题: Lock
  • GS_LABELS GS_LABELS视图显示所有已配置的资源标签信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_LABELS字段 名称 类型 描述 labelname name 资源标签的名称。 labeltype name 资源标签的类型。对应系统表GS_POLICY_LABEL中的labeltype字段。 fqdntype name 数据库资源的类型。如table、schema、index等。 schemaname name 数据库资源所属的schema名称。 fqdnname name 数据库资源名称。 columnname name 数据库资源列名称。若标记的数据库资源不为表的列则该项为空。 父主题: 用户和权限管理
  • 接口介绍 高级功能包DBE_APPLICATION_INFO支持的所有接口请参见表1。DBE_APPLICATION_INFO作用范围是当前session。 表1 DBE_APPLICATION_INFO 接口名称 描述 DBE_APPLICATION_INFO.SET_CLIENT_INFO 写入客户端信息。 DBE_APPLICATION_INFO.READ_CLIENT_INFO 读取客户端信息。 DBE_APPLICATION_INFO.SET_MODULE 将当前正在运行的模块的名称设置为新模块。设置module和action。 DBE_APPLICATION_INFO.READ_MODULE 读取当前会话的的模块和操作字段的值。 DBE_APPLICATION_INFO.SET_ACTION 设置当前模块中当前操作的名称,设置action的值。 DBE_APPLICATION_INFO.SET_CLIENT_INFO 写入客户端信息。DBE_APPLICATION_INFO.SET_CLIENT_INFO函数原型为: 1 2 3 DBE_APPLICATION_INFO.SET_CLIENT_INFO( str text )returns void; 表2 DBE_APPLICATION_INFO.SET_CLIENT_INFO接口参数说明 参数 描述 str 写入的客户端信息,最长为64字节,超过64字节将被截断。 DBE_APPLICATION_INFO.READ_CLIENT_INFO 读取客户端信息DBE_APPLICATION_INFO.READ_CLIENT_INFO函数原型为: 1 2 DBE_APPLICATION_INFO.READ_CLIENT_INFO( OUT client_info text); 表3 DBE_APPLICATION_INFO.READ_CLIENT_INFO接口参数说明 参数 描述 client_info 客户端信息 DBE_APPLICATION_INFO.SET_MODULE 将当前正在运行的模块的名称设置为新模块。DBE_APPLICATION_INFO.SET_MODULE函数原型为: 1 2 3 4 DBE_APPLICATION_INFO.SET_MODULE( IN module_name text, IN action_name text ); 表4 DBE_APPLICATION_INFO.SET_MODULE接口参数说明 参数 描述 module_name 当前正在运行的模块的名称。最长为64字节,超过64字节将被截断。 action_name 当前模块中当前操作的名称。最长为64字节,超过64字节将被截断。 示例: CALL dbe_application_info.set_module('module_name','action_name'); set_module ------------ (1 row) DBE_APPLICATION_INFO.READ_MODULE 读取当前会话的的模块和操作字段的值。DBE_APPLICATION_INFO.READ_MODULE函数原型为: 1 2 3 4 DBE_APPLICATION_INFO.READ_MODULE( OUT module_name text, OUT action_name text ); 表5 DBE_APPLICATION_INFO.READ_MODULE接口参数说明 参数 描述 module_name 当前正在运行的模块的名称。 action_name 当前模块中当前操作的名称。 示例: DECLARE module varchar2(64); action varchar2(64); BEGIN dbe_application_info.read_module(module,action); dbe_output.print_line(module); dbe_output.print_line(action); END; / module_name action_name ANONYMOUS BLOCK EXECUTE DBE_APPLICATION_INFO.SET_ACTION 设置当前模块中当前操作的名称。DBE_APPLICATION_INFO.SET_ACTION函数原型为: 1 2 3 DBE_APPLICATION_INFO.SET_ACTION( IN action_name text ); 表6 DBE_APPLICATION_INFO.SET_ACTION接口参数说明 参数 描述 action_name 当前模块中当前操作的名称。最长为64字节,超过64字节将被截断。 示例 CALL dbe_application_info.set_action('action_name'); set_action ------------ (1 row)
  • ADM_TAB_HISTOGRAMS ADM_TAB_HISTOGRAMS系统视图显示数据库所有表和视图的直方图信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TAB_HISTOGRAMS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表名。 column_name character varying(4000) 列名。 endpoint_number numeric 直方图的桶号。 endpoint_value numeric 暂不支持,值为NULL。 endpoint_actual_value character varying(4000) 桶端点的实际值。 endpoint_actual_value_raw raw 暂不支持,值为NULL。 endpoint_repeat_count numeric 暂不支持,值为NULL。 scope character varying(7) 暂不支持,值为SHARED。 父主题: 其他系统视图
  • 常见问题处理 [UnixODBC][Driver Manager]Can't open lib 'xxx/xxx/gsqlodbcw.so':file not found. 此问题的可能原因: odbcinst.ini文件中配置的路径不正确 确认的方法:执行ls命令查询错误信息中的路径,以确保该gsqlodbcw.so文件存在,同时具有执行权限。 gsqlodbcw.so的依赖库不存在,或者不在系统环境变量中 确认的方法:执行ldd命令查询错误信息中的路径,如果是缺少libodbc.so.1等UnixODBC的库,那么按照“操作步骤”中的方法重新配置UnixODBC,并确保它的安装路径下的lib目录添加到了LD_LIBRARY_PATH中。如果是缺少其他库,请将ODBC驱动包中的lib目录添加到LD_LIBRARY_PATH中。如果缺少其他标准库,请自行安装。 [UnixODBC]connect to server failed: no such file or directory 此问题的可能原因: 配置了错误的/不可达的数据库地址,或者端口 请检查数据源配置中的Servername及Port配置项。 服务器侦听不正确 如果确认Servername及Port配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库侦听了合适的网卡及端口。 防火墙及网闸设备 请确认防火墙设置,将数据库的通信端口添加到可信端口中。 如果有网闸设备,请确认相关的设置。 [unixODBC]The password-stored method is not supported. 此问题的可能原因: 数据源中未配置sslmode配置项。 解决办法: 请配置该选项至allow或以上选项。此配置的更多信息,请参见表3。 Server common name "xxxx" does not match host name "xxxxx" 此问题的可能原因: 使用了SSL加密的“verify-full”选项,驱动程序会验证证书中的主机名与实际部署数据库的主机名是否一致。 解决办法: 碰到此问题可以使用“verify-ca”选项,不再校验主机名,或者重新生成一套与数据库所在主机名相同的CA证书。 Driver's SQLAllocHandle on SQL_HANDLE_DBC failed 此问题的可能原因: 可执行文件(比如UnixODBC的isql,以下都以isql为例)与数据库驱动(gsqlodbcw.so)依赖于不同的ODBC的库版本:libodbc.so.1或者libodbc.so.2。此问题可以通过如下方式确认: ldd `which isql` | grep odbc ldd gsqlodbcw.so | grep odbc 这时,如果输出的libodbc.so最后的后缀数字不同或者指向不同的磁盘物理文件,那么基本就可以断定是此问题。isql与gsqlodbcw.so都会要求加载libodbc.so,这时如果它们加载的是不同的物理文件,便会导致两套完全同名的函数列表,同时出现在同一个可见域里(UnixODBC的libodbc.so.*的函数导出列表完全一致),产生冲突,无法加载数据库驱动。 解决办法: 确定一个要使用的UnixODBC,卸载另外一个(比如卸载库版本号为.so.2的UnixODBC),然后将剩下的.so.1的库,新建一个同名但是后缀为.so.2的软链接,便可解决此问题。 FATAL: Forbid remote connection with trust method! 由于安全原因,数据库主节点禁止数据库内部其他节点无认证接入。 如果要在数据库内部访问数据库主节点,请将ODBC程序部署在数据库主节点所在机器,服务器地址使用"127.0.0.1"。建议业务系统单独部署在数据库外部,否则可能会影响数据库运行性能。 [unixODBC][Driver Manager]Invalid attribute value 有可能是unixODBC的版本并非推荐版本,建议通过“odbcinst --version”命令排查环境中的unixODBC版本。 authentication method 10 not supported. 使用开源客户端碰到此问题,可能原因: 数据库中存储的密码校验只存储了SHA256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。 数据库并不存储用户密码,只存储用户密码的哈希码。 当用户更新用户密码或者新建用户时,数据库会同时存储两种格式的哈希码,这时将兼容开源的认证协议。 当旧版本数据库升级到新版本时,由于哈希的不可逆性,数据库无法还原用户密码,进而生成新格式的哈希,所以仍然只保留了SHA256格式的哈希,导致仍然无法使用MD5做密码认证。 MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 要解决该问题,可以更新用户密码(请参见ALTER USER),或者新建一个用户(请参见CREATE USER),赋予同等权限,使用新用户连接数据库。 unsupported frontend protocol 3.51: server supports 1.0 to 3.0 目标数据库版本过低,或者目标数据库为开源数据库。 请使用对应版本的数据库驱动连接目标数据库。 FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. 目标数据库主节点的gs_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。 isql:error while loading shared libraries:xxx 环境缺少该动态库,需要自行安装对应的库。
  • 操作步骤 安装unixODBC(默认unixODBC源码包已在环境准备中获取)。如果机器上已经安装了其他版本的unixODBC,可以直接覆盖安装。 以unixODBC-2.3.7版本为例,在客户端执行如下命令安装unixODBC。 tar zxvf unixODBC-2.3.7.tar.gz cd unixODBC-2.3.7 ./configure --enable-gui=no #如果要在ARM服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu make #安装可能需要root权限 make install 目前不支持unixODBC-2.2.1版本。 默认安装到“/usr/local”目录下,生成数据源文件到 “/usr/local/etc”目录下,库文件生成在“/usr/local/lib”目录。 通过编译带有--enable-fastvalidate=yes选项的unixODBC来获得更高性能。但此选项可能会导致向ODBC API传递无效句柄的应用程序发生故障,而不是返回SQL_INVALID_HANDLE错误。 替换客户端 GaussDB 驱动程序。 将GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Odbc.tar.gz解压。解压后会得到两个文件夹:lib与odbc,在odbc文件夹中还会有一个lib文件夹。将解压后得到的/lib文件夹与/odbc/lib文件夹中的所有动态库都复制到“/usr/local/lib”目录下。 配置数据源。 配置ODBC驱动文件。 在“/usr/local/etc/odbcinst.ini”文件中追加以下内容。 [GaussMPP] Driver64=/usr/local/lib/gsqlodbcw.so setup=/usr/local/lib/gsqlodbcw.so odbcinst.ini文件中的配置参数说明如表1所示。 表1 odbcinst.ini文件配置参数 参数 描述 示例 [DriverName] 驱动器名称,对应数据源DSN中的驱动名。 [DRIVER_N] Driver64 驱动动态库的路径。 Driver64=/usr/local/lib/gsqlodbcw.so setup 驱动安装路径,与Driver64中动态库的路径一致。 setup=/usr/local/lib/gsqlodbcw.so 配置数据源文件。 在“/usr/local/etc/odbc.ini”文件中追加以下内容。 [MPPODBC] Driver=GaussMPP Servername=127.0.0.1 #数据库Server IP Database=db1 #数据库名 Username=omm #数据库用户名 Password= #数据库用户密码 Port=8000 #数据库侦听端口 Sslmode=allow odbc.ini文件配置参数说明如表2所示。 表2 odbc.ini文件配置参数 参数 描述 示例 [DSN] 数据源的名称。 [MPPODBC] Driver 驱动名,对应odbcinst.ini中的DriverName。 Driver=DRIVER_N Servername 服务器的IP地址。可配置多个IP地址。支持IPv4和IPv6。 Servername=127.0.0.1 Database 要连接的数据库的名称。 Database=db1 Username 数据库用户名称。 Username=omm Password 数据库用户密码。 说明: ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。 但是如果配置了此参数,由于UnixODBC对数据源文件等进行缓存,可能导致密码长期保留在内存中。 推荐在应用程序连接时,将密码传递给相应API,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。 须知: 配置文件中填写密码时,需要遵循http规则: 字符应当采用URL编码规范,如"!"应写作"%21","%"应写作"%25",因此应当特别注意字符。 "+"会被替换为空格" "。 Password=******** Port 服务器的端口号。 Port=8000 Sslmode 是否启用 SSL 连接。 说明: 关于Sslmode的选项的允许值,具体信息如表3 Sslmode的可选项及其描述所示。 Sslmode=allow Debug 是否启用调试模式。 取值范围:0 ~ INT_MAX 设置为0时表示不开启。 设置为大于0时表示将会打印gsqlodbc驱动的mylog,日志生成目录为/tmp/。 默认值为0。 Debug=1 UseServerSidePrepare 是否开启数据库端扩展查询协议。 取值范围:0,1 取值为0表示不开启。 取值为1表示开启。 默认值为1。 UseServerSidePrepare=1 UseBatchProtocol 是否开启批量查询协议(打开可提高DML性能)。 取值范围:0,1 取值为0时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。 取值为1,并且数据库support_batch_bind参数存在且为on时,将打开批量查询协议。 默认值为1。 UseBatchProtocol=1 ForExtensionConnector 此开关控制着savepoint是否发送,savepoint相关问题可以注意此开关, 取值范围:0,1 取值为0时表示发送savepoint。 取值为1时表示不发送savepoint。 默认值为1。 ForExtensionConnector=1 ConnectionExtraInfo GUC参数connection_info中显示驱动部署路径和进程属主用户的开关。 取值范围:0,1 取值为0时表示不打开此开关。 取值为1时表示打开此开关。 默认值为0。 说明: 当设置为1时,ODBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在GUC参数connection_info里,同时可以在PG_STAT_ACTIVITY中查询到。 ConnectionExtraInfo=1 BoolsAsChar 是否将布尔值作为字符处理。 取值范围:0,1 取值为0时表示Bools值将会映射为SQL_BIT。 取值为1时表示Bools值将会映射为SQL_CHAR。 默认值为1。 BoolsAsChar = 1 RowVersioning 是否在更新一行数据时,允许应用检测数据有没有被其他用户进行修改。 取值范围:0,1 取值为0时表示不允许应用检测。 取值为1时表示允许应用检测。 默认值为0。 RowVersioning=1 ShowSystemTables 是否将默认系统表格视为普通SQL表格。 取值范围:0,1 取值为0时驱动不会将默认系统表格视为普通SQL表格。 取值为1时驱动将默认系统表格视为普通SQL表格。 默认值为0。 ShowSystemTables=1 MaxCacheQueries 控制每个连接缓存的预编译语句个数。 取值范围:0 ~ 4096 默认值为0。 说明: 如果设置为0,则不开启客户端预编译语句缓存池。设置为大于4096的值会限制为4096。如果执行过的语句个数超过MaxCacheQueries设置的上限,则淘汰最近最少使用的语句。 MaxCacheQueries=128 MaxCacheSizeMiB 控制每个连接缓存的预编译语句总大小,在MaxCacheQueries大于0时生效。 取值范围:0 ~ 4096 默认值为1。 说明: 如果缓存的语句总长度大于MaxCacheSizeMiB则淘汰最近最少使用的语句。单位为MB,设置为大于4096的值会限制为4096。 MaxCacheSizeMiB=10 TcpUserTimeout 在支持TCP_USER_TIMEOUT套接字选项的操作系统上,指定传输的数据在TCP连接被强制关闭之前可以保持未确认状态的最大时长。 取值范围:0 ~ INT_MAX 默认值为0。 说明: 0表示使用系统缺省。通过Unix域套接字做的连接忽略这个参数。单位为毫秒。 TcpUserTimeout=5000 TargetServerType 设定连接的主机的类型。主机的类型和设定的值一致时才能连接成功。设置规则如下: primary(默认值):仅对主备系统中的主节点进行连接。 standby:仅对主备系统中的备节点进行连接。 prefer-standby:首先尝试与主备系统中的备节点进行连接。如果与hosts列表的所有备节点都连接失败,则尝试any模式进行连接。 read-write:仅对可读写的主机进行连接。 read-only:仅对只读的主机进行连接。 any:可以对所有类型的主机进行连接。 TargetServerType=primary KeepaliveTime 在TCP应该发送一个保持激活的信息给服务器之后,控制不活动的秒数。通过Unix域套接字做的连接或者如果禁用了保持激活则忽略这个参数。 取值范围:0 ~ INT_MAX 默认值为0。 KeepaliveTime=2 KeepaliveInterval 在TCP保持激活信息没有被应该传播的服务器承认之后,控制秒数。通过Unix域套接字做的连接或者如果禁用了保持激活则忽略这个参数。 取值范围:0 ~ INT_MAX 默认值为0。 KeepaliveInterval=2 KeepaliveCount 控制TCP发送保持激活信息的次数。通过Unix域套接字做的连接或者如果禁用了保持激活则忽略这个参数。 取值范围:0 ~ INT_MAX 默认值为0。 KeepaliveCount=2 SocketTimeout 用于控制客户端与服务端建立连接完全成功后的socket读写超时时间。单位为秒,默认为0。 说明: 该参数包括了数据库语句执行的超时时间,设置的过小可能导致语句执行时间本身发生超时,因此默认为0,需根据场景配置,建议设置非0值。 SocketTimeout=5 SocketTimeoutInConnect 用于控制TCP三次握手成功后,客户端与服务端建立连接阶段的socket读写超时时间。单位为秒,默认为5。 说明: 该参数区别于SocketTimeout:由于三次握手成功后的客户端与服务端建立连接阶段可能存在阻塞,因此需要设置不影响语句执行超时的socket读写超时时间。 SocketTimeoutInConnect=5 CancelTimeout 用于控制应用端发送cancel消息的超时时间。单位为秒,默认为0。 CancelTimeout=5 TcpSYNRetries 用于控制TCP三次握手阶段时SYN最多重传的次数,超过该次数仍未建连成功即报错。默认为0次。 说明: 该参数在支持TCP_SYNCNT套接字选项的操作系统上,指定客户端建立连接三次握手阶段SYN包发送失败而重传的次数。0值表示使用系统缺省。通过Unix域套接字的连接忽略这个参数。 TcpSYNRetries=3 TextAsLongVarchar 若TextAsLongVarchar=1,则将内核侧text类型映射为驱动侧的SQL_LONGVARCHAR类型;TextAsLongVarchar=0,则将内核侧text类型映射为驱动侧的SQL_VARCHAR类型。默认值为1。 TextAsLongVarchar=1 MaxLongVarcharSize 驱动侧的SQL_LONGVARCHAR类型的最大长度。默认值为8190。 MaxLongVarcharSize=8190 MaxVarcharSize 驱动侧的SQL_VARCHAR类型的最大长度。默认值为255。 MaxVarcharSize=255 表3 Sslmode的可选项及其描述 Sslmode 是否会启用SSL加密 描述 disable 否 不使用SSL安全连接。 allow 可能 如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 prefer 可能 如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。 require 是 必须使用SSL安全连接,但是只做了 数据加密 ,并不验证数据库服务器的真实性。 verify-ca 是 必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。 verify-full 是 必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。GaussDB不支持此模式。 用户通过ODBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。 在客户端配置环境变量。 vim ~/.bashrc 在配置文件中追加以下内容。 export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH export OD BCS YSINI=/usr/local/etc export ODBCINI=/usr/local/etc/odbc.ini 执行如下命令使设置生效。 source ~/.bashrc 测试连接。 安装后/usr/bin下面会存放生成的二进制,可执行isql -v MPPODBC(数据源名称)命令。 如果显示如下信息,表明配置正确,连接成功。 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ 若显示ERROR信息,则表明配置错误。请检查上述配置步骤是否正确执行。 目前通过ODBC连接数据库时,会如下设置内核参数: SET extra_float_digits = 2; SET DateStyle = 'ISO'; 这些参数可能会导致ODBC客户端的行为与gsql客户端的行为不一致,例如,Date数据显示方式、浮点数精度表示。如果实际期望和这些配置不符,建议在ODBC应用代码中显式设定这些参数。 M-Compatibility模式数据库下,extra_float_digits的默认值为0。
  • ADM_TABLESPACES ADM_TABLESPACES视图显示有关可用的表空间的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。ORA数据库与 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。 父主题: 其他系统视图
  • SUMMARY_STATIO_SYS_INDEXES SUMMARY_STATIO_SYS_INDEXES视图显示集群内命名空间中所有系统表上索引的I/O状态汇总信息,如表1所示。 表1 SUMMARY_STATIO_SYS_INDEXES字段 名称 类型 描述 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • 注意事项 在非阻塞连接上发送任何命令或数据之后,调用PQflush。如果返回1,则等待套接字变为读或写就绪。如果为写就绪状态,则再次调用PQflush。如果已经读到,调用PQconsumeInput,然后再次调用PQflush。重复,直到PQflush返回0。(必要检查读就绪并使用PQconsumeInput耗尽输入,因为服务器可能会阻止尝试向客户端发送数据(例如NOTICE消息),并且在客户端读取它的数据之前不会读取客户端的数据。)一旦PQflush返回0,等待套接字准备好,然后按照上面描述读取响应。
  • SQL调优指南 SQL调优的唯一目的是“资源利用最大化”,即CPU、内存、磁盘I/O三种资源利用最大化。所有调优手段都是围绕资源使用开展的。资源利用最大化是指SQL语句尽量高效,节省资源开销,以最小的代价实现最大的效益。比如做典型点查询的时候,可以用seqscan+filter(即读取每一条元组和点查询条件进行匹配)实现,也可以通过indexscan实现,但indexscan可以以更小的代价实现相同的效果。 根据硬件资源和客户的业务特征确定合理的数据库部署方案和表定义是数据库在多数情况下满足性能要求的基础。下文的调优说明假设您已根据“软件安装”指引在安装过程中按照合理的数据库方案完成了安装,且已经根据“开发设计建议”的指引进行了数据库设计。 Query执行流程 SQL执行计划介绍 调优流程 更新统计信息 审视和修改表定义 典型SQL调优点 经验总结:SQL语句改写规则 SQL调优关键参数调整 使用Plan Hint进行调优 使用向量化执行引擎进行调优 PLAN TRACE使用介绍 使用SQL PATCH进行调优 实际调优案例
  • 示例 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 name, statement, parameter_types FROM pg_prepared_statements; name | statement | parameter_types ------+-----------+----------------- (0 rows) --创建q1,q2,q3,q4四个预备语句。 gaussdb=# PREPARE q1 AS SELECT 1 AS a; PREPARE gaussdb=# PREPARE q2 AS SELECT 1 AS a; PREPARE gaussdb=# PREPARE q3 AS SELECT 1 AS a; PREPARE gaussdb=# PREPARE q4 AS SELECT 1 AS a; PREPARE --再次查看现有预备语句。 gaussdb=# SELECT name, statement, parameter_types FROM pg_prepared_statements; name | statement | parameter_types ------+------------------------------+----------------- q1 | PREPARE q1 AS SELECT 1 AS a; | {} q4 | PREPARE q4 AS SELECT 1 AS a; | {} q3 | PREPARE q3 AS SELECT 1 AS a; | {} q2 | PREPARE q2 AS SELECT 1 AS a; | {} (4 rows) --删除q4预备语句并查看剩余预备语句。 gaussdb=# DEALLOCATE q4; gaussdb=# SELECT name, statement, parameter_types FROM pg_prepared_statements; name | statement | parameter_types ------+------------------------------+----------------- q1 | PREPARE q1 AS SELECT 1 AS a; | {} q3 | PREPARE q3 AS SELECT 1 AS a; | {} q2 | PREPARE q2 AS SELECT 1 AS a; | {} (3 rows) --删除所有预备语句并查看剩余预备语句。 gaussdb=# DEALLOCATE ALL; DEALLOCATE ALL gaussdb=# SELECT name, statement, parameter_types FROM pg_prepared_statements; name | statement | parameter_types ------+-----------+----------------- (0 rows)
共100000条