- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- GaussDB(DWS)使用流程
- 准备工作
- 创建GaussDB(DWS)集群
- 连接GaussDB(DWS)集群
- 创建GaussDB(DWS)数据库和用户
- 迁移业务数据至GaussDB(DWS)集群
- GaussDB(DWS)集群数据安全与加密
- GaussDB(DWS)集群管理
-
GaussDB(DWS)集群运维
- 在监控面板(DMS)查看DWS集群监控
- 在Cloud Eye查看GaussDB(DWS)集群监控
- 监控并诊断GaussDB(DWS)集群
-
查看并订阅GaussDB(DWS)集群告警
- 告警管理简介
- 告警规则
- 订阅告警通知
-
告警处理
- DWS_2000000001 DWS集群节点CPU使用率超阈值
- DWS_2000000006 DWS集群节点数据盘使用率超阈值
- DWS_2000000009 DWS集群节点数据盘I/O利用率超阈值
- DWS_2000000012 DWS集群节点数据盘时延超阈值
- DWS_2000000016 DWS集群查询语句触发下盘量超阈值
- DWS_2000000017 DWS集群查询语句堆积数量超阈值
- DWS_2000000018 DWS集群默认资源池队列阻塞
- DWS_2000000020 DWS集群的SQL探针耗时超阈值
- DWS_2000000023 DWS集群中存在持有锁过长的vacuum full操作
- DWS_2000000026 DWS集群CN下盘量超阈值
- DWS_2000000027 DWS集群节点实例内存使用率超阈值
- DWS_2000000028 DWS集群节点动态内存使用率超阈值
- DWS_2000000029 DWS集群资源池磁盘使用率超阈值
- DWS_2000000030 DWS集群会话数量使用率超阈值
- DWS_2000000031 DWS集群活跃会话数量使用率超阈值
- DWS_2000000032 DWS集群数据库死锁数量超阈值
- DWS_2000000033 DWS集群数据库会话使用率超阈值
- 1078919264 DWS数据库磁盘剩余容量预警
- 1078919265 DWS数据库磁盘剩余容量不足
- 1078919266 DWS数据库磁盘剩余容量严重不足
- 1078919169 DWS数据实例连接数超限
- 查看并订阅GaussDB(DWS)集群事件
- GaussDB(DWS)常用运维命令集
- 备份与恢复DWS集群
- GaussDB(DWS)集群节点扩缩容
- GaussDB(DWS)集群规格变更
- GaussDB(DWS)集群容灾管理
- GaussDB(DWS)集群升级
- GaussDB(DWS)集群日志管理
- GaussDB(DWS)集群状态异常操作
- Vacuum回收GaussDB(DWS)空间
- 授权GaussDB(DWS)集群运维账号
- 最佳实践
- 数据迁移与同步
-
开发指南
-
开发指南(9.1.0.x)
- 使用前必读
- GaussDB(DWS)开发设计建议
- 创建和管理GaussDB(DWS)数据库对象
- Oracle、Teradata和MySQL语法兼容性差异
- GaussDB(DWS)数据库安全管理
- 查询GaussDB(DWS)数据
- GaussDB(DWS)排序规则
- GaussDB(DWS)用户自定义函数
- GaussDB(DWS)存储过程
- 使用PostGIS Extension
- 使用JDBC或ODBC进行GaussDB(DWS)二次开发
- GaussDB(DWS)资源监控
- GaussDB(DWS)性能调优
-
GaussDB(DWS)系统表和系统视图
- 系统表和系统视图概述
-
系统表
- GS_BLOCKLIST_QUERY
- GS_BLOCKLIST_SQL
- GS_OBSSCANINFO
- GS_RESPOOL_RESOURCE_HISTORY
- GS_WLM_INSTANCE_HISTORY
- GS_WLM_OPERATOR_INFO
- GS_WLM_SESSION_INFO
- GS_WLM_USER_RESOURCE_HISTORY
- PG_AGGREGATE
- PG_AM
- PG_AMOP
- PG_AMPROC
- PG_ATTRDEF
- PG_ATTRIBUTE
- PG_AUTHID
- PG_AUTH_HISTORY
- PG_AUTH_MEMBERS
- PG_BLOCKLISTS
- PG_CAST
- PG_CLASS
- PG_COLLATION
- PG_CONSTRAINT
- PG_CONVERSION
- PG_DATABASE
- PG_DB_ROLE_SETTING
- PG_DEFAULT_ACL
- PG_DEPEND
- PG_DESCRIPTION
- PG_ENUM
- PG_EXCEPT_RULE
- PG_EXTERNAL_NAMESPACE
- PG_EXTENSION
- PG_EXTENSION_DATA_SOURCE
- PG_FINE_DR_INFO
- PG_FOREIGN_DATA_WRAPPER
- PG_FOREIGN_SERVER
- PG_FOREIGN_TABLE
- PG_INDEX
- PG_INHERITS
- PG_JOB_INFO
- PG_JOBS
- PG_LANGUAGE
- PG_LARGEOBJECT
- PG_LARGEOBJECT_METADATA
- PG_MATVIEW
- PG_NAMESPACE
- PG_OBJECT
- PG_OBSSCANINFO
- PG_OPCLASS
- PG_OPERATOR
- PG_OPFAMILY
- PG_PARTITION
- PG_PLTEMPLATE
- PG_PROC
- PG_PUBLICATION
- PG_PUBLICATION_NAMESPACE
- PG_PUBLICATION_REL
- PG_RANGE
- PG_REDACTION_COLUMN
- PG_REDACTION_POLICY
- PG_RELFILENODE_SIZE
- PG_RLSPOLICY
- PG_RESOURCE_POOL
- PG_REWRITE
- PG_SECLABEL
- PG_SHDEPEND
- PG_SHDESCRIPTION
- PG_SHSECLABEL
- PG_STATISTIC
- PG_STATISTIC_EXT
- PG_STAT_OBJECT
- PG_SUBSCRIPTION
- PG_SYNONYM
- PG_TABLESPACE
- PG_TRIGGER
- PG_TS_CONFIG
- PG_TS_CONFIG_MAP
- PG_TS_DICT
- PG_TS_PARSER
- PG_TS_TEMPLATE
- PG_TYPE
- PG_USER_MAPPING
- PG_USER_STATUS
- PG_WORKLOAD_ACTION
- PGXC_CLASS
- PGXC_GROUP
- PGXC_NODE
- PLAN_TABLE_DATA
- SNAPSHOT
- TABLES_SNAP_TIMESTAMP
- 性能视图快照系统表
-
系统视图
- ALL_ALL_TABLES
- ALL_CONSTRAINTS
- ALL_CONS_COLUMNS
- ALL_COL_COMMENTS
- ALL_DEPENDENCIES
- ALL_IND_COLUMNS
- ALL_IND_EXPRESSIONS
- ALL_INDEXES
- ALL_OBJECTS
- ALL_PROCEDURES
- ALL_SEQUENCES
- ALL_SOURCE
- ALL_SYNONYMS
- ALL_TAB_COLUMNS
- ALL_TAB_COMMENTS
- ALL_TABLES
- ALL_USERS
- ALL_VIEWS
- DBA_DATA_FILES
- DBA_USERS
- DBA_COL_COMMENTS
- DBA_CONSTRAINTS
- DBA_CONS_COLUMNS
- DBA_IND_COLUMNS
- DBA_IND_EXPRESSIONS
- DBA_IND_PARTITIONS
- DBA_INDEXES
- DBA_OBJECTS
- DBA_PART_INDEXES
- DBA_PART_TABLES
- DBA_PROCEDURES
- DBA_SEQUENCES
- DBA_SOURCE
- DBA_SYNONYMS
- DBA_TAB_COLUMNS
- DBA_TAB_COMMENTS
- DBA_TAB_PARTITIONS
- DBA_TABLES
- DBA_TABLESPACES
- DBA_TRIGGERS
- DBA_VIEWS
- DUAL
- GET_ALL_TSC_INFO
- GET_TSC_INFO
- GLOBAL_COLUMN_TABLE_IO_STAT
- GLOBAL_REDO_STAT
- GLOBAL_REL_IOSTAT
- GLOBAL_ROW_TABLE_IO_STAT
- GLOBAL_STAT_DATABASE
- GLOBAL_TABLE_CHANGE_STAT
- GLOBAL_TABLE_STAT
- GLOBAL_WORKLOAD_SQL_COUNT
- GLOBAL_WORKLOAD_SQL_ELAPSE_TIME
- GLOBAL_WORKLOAD_TRANSACTION
- GS_ALL_CONTROL_GROUP_INFO
- GS_BLOCKLIST_QUERY
- GS_BLOCKLIST_SQL
- GS_CLUSTER_RESOURCE_INFO
- GS_COLUMN_TABLE_IO_STAT
- GS_OBS_READ_TRAFFIC
- GS_OBS_WRITE_TRAFFIC
- GS_INSTR_UNIQUE_SQL
- GS_NODE_STAT_RESET_TIME
- GS_OBS_LATENCY
- GS_QUERY_MONITOR
- GS_QUERY_RESOURCE_INFO
- GS_REL_IOSTAT
- GS_RESPOOL_RUNTIME_INFO
- GS_RESPOOL_RESOURCE_INFO
- GS_RESPOOL_MONITOR
- GS_ROW_TABLE_IO_STAT
- GS_SESSION_CPU_STATISTICS
- GS_SESSION_MEMORY_STATISTICS
- GS_SQL_COUNT
- GS_STAT_DB_CU
- GS_STAT_SESSION_CU
- GS_TABLE_CHANGE_STAT
- GS_TABLE_STAT
- GS_TOTAL_NODEGROUP_MEMORY_DETAIL
- GS_USER_MONITOR
- GS_USER_TRANSACTION
- GS_VIEW_DEPENDENCY
- GS_VIEW_DEPENDENCY_PATH
- GS_VIEW_INVALID
- GS_WAIT_EVENTS
- GS_WLM_OPERATOR_INFO
- GS_WLM_OPERATOR_HISTORY
- GS_WLM_OPERATOR_STATISTICS
- GS_WLM_SESSION_INFO
- GS_WLM_SESSION_HISTORY
- GS_WLM_SESSION_STATISTICS
- GS_WLM_SQL_ALLOW
- GS_WORKLOAD_SQL_COUNT
- GS_WORKLOAD_SQL_ELAPSE_TIME
- GS_WORKLOAD_TRANSACTION
- MPP_TABLES
- PG_AVAILABLE_EXTENSION_VERSIONS
- PG_AVAILABLE_EXTENSIONS
- PG_BULKLOAD_STATISTICS
- PG_COMM_CLIENT_INFO
- PG_COMM_DELAY
- PG_COMM_STATUS
- PG_COMM_RECV_STREAM
- PG_COMM_SEND_STREAM
- PG_COMM_QUERY_SPEED
- PG_CONTROL_GROUP_CONFIG
- PG_CURSORS
- PG_EXT_STATS
- PG_GET_INVALID_BACKENDS
- PG_GET_SENDERS_CATCHUP_TIME
- PG_GLOBAL_TEMP_ATTACHED_PIDS
- PG_GROUP
- PG_INDEXES
- PG_JOB
- PG_JOB_PROC
- PG_JOB_SINGLE
- PG_LIFECYCLE_DATA_DISTRIBUTE
- PG_LOCKS
- PG_LWLOCKS
- PG_NODE_ENV
- PG_OS_THREADS
- PG_POOLER_STATUS
- PG_PREPARED_STATEMENTS
- PG_PREPARED_XACTS
- PG_PUBLICATION_TABLES
- PG_QUERYBAND_ACTION
- PG_REPLICATION_SLOTS
- PG_ROLES
- PG_RULES
- PG_RUNNING_XACTS
- PG_SECLABELS
- PG_SEQUENCES
- PG_SESSION_WLMSTAT
- PG_SESSION_IOSTAT
- PG_SETTINGS
- PG_SHADOW
- PG_SHARED_MEMORY_DETAIL
- PG_STATS
- PG_STAT_ACTIVITY
- PG_STAT_ALL_INDEXES
- PG_STAT_ALL_TABLES
- PG_STAT_BAD_BLOCK
- PG_STAT_BGWRITER
- PG_STAT_DATABASE
- PG_STAT_DATABASE_CONFLICTS
- PG_STAT_GET_MEM_MBYTES_RESERVED
- PG_STAT_USER_FUNCTIONS
- PG_STAT_USER_INDEXES
- PG_STAT_USER_TABLES
- PG_STAT_REPLICATION
- PG_STAT_SYS_INDEXES
- PG_STAT_SYS_TABLES
- PG_STAT_XACT_ALL_TABLES
- PG_STAT_XACT_SYS_TABLES
- PG_STAT_XACT_USER_FUNCTIONS
- PG_STAT_XACT_USER_TABLES
- PG_STATIO_ALL_INDEXES
- PG_STATIO_ALL_SEQUENCES
- PG_STATIO_ALL_TABLES
- PG_STATIO_SYS_INDEXES
- PG_STATIO_SYS_SEQUENCES
- PG_STATIO_SYS_TABLES
- PG_STATIO_USER_INDEXES
- PG_STATIO_USER_SEQUENCES
- PG_STATIO_USER_TABLES
- PG_THREAD_WAIT_STATUS
- PG_TABLES
- PG_TDE_INFO
- PG_TIMEZONE_ABBREVS
- PG_TIMEZONE_NAMES
- PG_TOTAL_MEMORY_DETAIL
- PG_TOTAL_SCHEMA_INFO
- PG_TOTAL_USER_RESOURCE_INFO
- PG_USER
- PG_USER_MAPPINGS
- PG_VIEWS
- PG_WLM_STATISTICS
- PGXC_BULKLOAD_PROGRESS
- PGXC_BULKLOAD_INFO
- PGXC_BULKLOAD_STATISTICS
- PGXC_COLUMN_TABLE_IO_STAT
- PGXC_COMM_CLIENT_INFO
- PGXC_COMM_DELAY
- PGXC_COMM_RECV_STREAM
- PGXC_COMM_SEND_STREAM
- PGXC_COMM_STATUS
- PGXC_COMM_QUERY_SPEED
- PGXC_DEADLOCK
- PGXC_DISK_CACHE_STATS
- PGXC_DISK_CACHE_ALL_STATS
- PGXC_DISK_CACHE_PATH_INFO
- PGXC_GET_STAT_ALL_TABLES
- PGXC_GET_STAT_ALL_PARTITIONS
- PGXC_GET_TABLE_SKEWNESS
- PGXC_GLOBAL_TEMP_ATTACHED_PIDS
- PGXC_GTM_SNAPSHOT_STATUS
- PGXC_INSTANCE_TIME
- PGXC_LOCKWAIT_DETAIL
- PGXC_INSTR_UNIQUE_SQL
- PGXC_LOCK_CONFLICTS
- PGXC_LWLOCKS
- PGXC_MEMORY_DEBUG_INFO
- PGXC_NODE_ENV
- PGXC_NODE_STAT_RESET_TIME
- PGXC_OBS_IO_SCHEDULER_STATS
- PGXC_OBS_IO_SCHEDULER_PERIODIC_STATS
- PGXC_OS_RUN_INFO
- PGXC_OS_THREADS
- PGXC_POOLER_STATUS
- PGXC_PREPARED_XACTS
- PGXC_REDO_STAT
- PGXC_REL_IOSTAT
- PGXC_REPLICATION_SLOTS
- PGXC_RESPOOL_RUNTIME_INFO
- PGXC_RESPOOL_RESOURCE_INFO
- PGXC_RESPOOL_RESOURCE_HISTORY
- PGXC_ROW_TABLE_IO_STAT
- PGXC_RUNNING_XACTS
- PGXC_SETTINGS
- PGXC_SESSION_WLMSTAT
- PGXC_STAT_ACTIVITY
- PGXC_STAT_BAD_BLOCK
- PGXC_STAT_BGWRITER
- PGXC_STAT_DATABASE
- PGXC_STAT_OBJECT
- PGXC_STAT_REPLICATION
- PGXC_STAT_TABLE_DIRTY
- PGXC_STAT_WAL
- PGXC_SQL_COUNT
- PGXC_TABLE_CHANGE_STAT
- PGXC_TABLE_STAT
- PGXC_THREAD_WAIT_STATUS
- PGXC_TOTAL_MEMORY_DETAIL
- PGXC_TOTAL_SCHEMA_INFO
- PGXC_TOTAL_SCHEMA_INFO_ANALYZE
- PGXC_TOTAL_USER_RESOURCE_INFO
- PGXC_USER_TRANSACTION
- PGXC_VARIABLE_INFO
- PGXC_WAIT_DETAIL
- PGXC_WAIT_EVENTS
- PGXC_WLM_OPERATOR_HISTORY
- PGXC_WLM_OPERATOR_INFO
- PGXC_WLM_OPERATOR_STATISTICS
- PGXC_WLM_SESSION_INFO
- PGXC_WLM_SESSION_HISTORY
- PGXC_WLM_SESSION_STATISTICS
- PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS
- PGXC_WLM_USER_RESOURCE_HISTORY
- PGXC_WLM_WORKLOAD_RECORDS
- PGXC_WORKLOAD_SQL_COUNT
- PGXC_WORKLOAD_SQL_ELAPSE_TIME
- PGXC_WORKLOAD_TRANSACTION
- PLAN_TABLE
- PV_FILE_STAT
- PV_INSTANCE_TIME
- PV_MATVIEW_DETAIL
- PV_OS_RUN_INFO
- PV_SESSION_MEMORY
- PV_SESSION_MEMORY_DETAIL
- PV_SESSION_STAT
- PV_SESSION_TIME
- PV_TOTAL_MEMORY_DETAIL
- PV_REDO_STAT
- PV_RUNTIME_ATTSTATS
- PV_RUNTIME_RELSTATS
- REDACTION_COLUMNS
- REDACTION_POLICIES
- REMOTE_TABLE_STAT
- SHOW_TSC_INFO
- SHOW_ALL_TSC_INFO
- USER_COL_COMMENTS
- USER_CONSTRAINTS
- USER_CONS_COLUMNS
- USER_INDEXES
- USER_IND_COLUMNS
- USER_IND_EXPRESSIONS
- USER_IND_PARTITIONS
- USER_JOBS
- USER_OBJECTS
- USER_PART_INDEXES
- USER_PART_TABLES
- USER_PROCEDURES
- USER_SEQUENCES
- USER_SOURCE
- USER_SYNONYMS
- USER_TAB_COLUMNS
- USER_TAB_COMMENTS
- USER_TAB_PARTITIONS
- USER_TABLES
- USER_TRIGGERS
- USER_VIEWS
- V$SESSION
- V$SESSION_LONGOPS
- GaussDB(DWS)数据库GUC参数
- GaussDB(DWS)开发者术语表
- 实时数仓
-
开发指南(9.1.1.x)
- 使用前必读
- GaussDB(DWS)开发设计建议
- 创建和管理GaussDB(DWS)数据库对象
- Oracle、Teradata和MySQL语法兼容性差异
- GaussDB(DWS)数据库安全管理
- 查询GaussDB(DWS)数据
- GaussDB(DWS)排序规则
- GaussDB(DWS)物化视图
- GaussDB(DWS)用户自定义函数
- GaussDB(DWS)存储过程
- 使用PostGIS Extension
- 使用JDBC或ODBC进行GaussDB(DWS)二次开发
- GaussDB(DWS)资源监控
- GaussDB(DWS)性能调优
-
GaussDB(DWS)系统表和系统视图
- 系统表和系统视图概述
-
系统表
- GS_BLOCKLIST_QUERY
- GS_BLOCKLIST_SQL
- GS_OBSSCANINFO
- GS_RESPOOL_RESOURCE_HISTORY
- GS_WLM_INSTANCE_HISTORY
- GS_WLM_OPERATOR_INFO
- GS_WLM_SESSION_INFO
- GS_WLM_USER_RESOURCE_HISTORY
- PG_AGGREGATE
- PG_AM
- PG_AMOP
- PG_AMPROC
- PG_ATTRDEF
- PG_ATTRIBUTE
- PG_AUTHID
- PG_AUTH_HISTORY
- PG_AUTH_MEMBERS
- PG_BLOCKLISTS
- PG_CAST
- PG_CLASS
- PG_COLLATION
- PG_CONSTRAINT
- PG_CONVERSION
- PG_DATABASE
- PG_DB_ROLE_SETTING
- PG_DB_FILE
- PG_DEFAULT_ACL
- PG_DEPEND
- PG_DESCRIPTION
- PG_ENUM
- PG_EXCEPT_RULE
- PG_EXTERNAL_NAMESPACE
- PG_EXTENSION
- PG_EXTENSION_DATA_SOURCE
- PG_FINE_DR_INFO
- PG_FOREIGN_DATA_WRAPPER
- PG_FOREIGN_SERVER
- PG_FOREIGN_TABLE
- PG_INDEX
- PG_INHERITS
- PG_JOB_INFO
- PG_JOBS
- PG_LANGUAGE
- PG_LARGEOBJECT
- PG_LARGEOBJECT_METADATA
- PG_MATVIEW
- PG_NAMESPACE
- PG_OBJECT
- PG_OBSSCANINFO
- PG_OPCLASS
- PG_OPERATOR
- PG_OPFAMILY
- PG_PARTITION
- PG_PLAN_BASELINE
- PG_PLTEMPLATE
- PG_PROC
- PG_PUBLICATION
- PG_PUBLICATION_NAMESPACE
- PG_PUBLICATION_REL
- PG_RANGE
- PG_REDACTION_COLUMN
- PG_REDACTION_POLICY
- PG_RELFILENODE_SIZE
- PG_RLSPOLICY
- PG_RESOURCE_POOL
- PG_REWRITE
- PG_SECLABEL
- PG_SHDEPEND
- PG_SHDESCRIPTION
- PG_SHSECLABEL
- PG_STATISTIC
- PG_STATISTIC_EXT
- PG_STAT_OBJECT
- PG_SUBSCRIPTION
- PG_SYNONYM
- PG_TABLESPACE
- PG_TRIGGER
- PG_TS_CONFIG
- PG_TS_CONFIG_MAP
- PG_TS_DICT
- PG_TS_PARSER
- PG_TS_TEMPLATE
- PG_TYPE
- PG_USER_MAPPING
- PG_USER_STATUS
- PG_WORKLOAD_ACTION
- PGXC_CLASS
- PGXC_GROUP
- PGXC_NODE
- PLAN_TABLE_DATA
- SNAPSHOT
- SQL_OUTLINE
- TABLES_SNAP_TIMESTAMP
- 性能视图快照系统表
-
系统视图
- ALL_ALL_TABLES
- ALL_CONSTRAINTS
- ALL_CONS_COLUMNS
- ALL_COL_COMMENTS
- ALL_DEPENDENCIES
- ALL_IND_COLUMNS
- ALL_IND_EXPRESSIONS
- ALL_INDEXES
- ALL_OBJECTS
- ALL_PROCEDURES
- ALL_SEQUENCES
- ALL_SOURCE
- ALL_SYNONYMS
- ALL_TAB_COLUMNS
- ALL_TAB_COMMENTS
- ALL_TABLES
- ALL_USERS
- ALL_VIEWS
- DBA_DATA_FILES
- DBA_USERS
- DBA_COL_COMMENTS
- DBA_CONSTRAINTS
- DBA_CONS_COLUMNS
- DBA_IND_COLUMNS
- DBA_IND_EXPRESSIONS
- DBA_IND_PARTITIONS
- DBA_INDEXES
- DBA_OBJECTS
- DBA_PART_INDEXES
- DBA_PART_TABLES
- DBA_PROCEDURES
- DBA_SEQUENCES
- DBA_SOURCE
- DBA_SYNONYMS
- DBA_TAB_COLUMNS
- DBA_TAB_COMMENTS
- DBA_TAB_PARTITIONS
- DBA_TABLES
- DBA_TABLESPACES
- DBA_TRIGGERS
- DBA_VIEWS
- DUAL
- GET_ALL_TSC_INFO
- GET_TABLESPACE_OBS_FILE
- GET_TSC_INFO
- GLOBAL_COLUMN_TABLE_IO_STAT
- GLOBAL_REDO_STAT
- GLOBAL_REL_IOSTAT
- GLOBAL_ROW_TABLE_IO_STAT
- GLOBAL_STAT_DATABASE
- GLOBAL_TABLE_CHANGE_STAT
- GLOBAL_TABLE_STAT
- GLOBAL_WORKLOAD_SQL_COUNT
- GLOBAL_WORKLOAD_SQL_ELAPSE_TIME
- GLOBAL_WORKLOAD_TRANSACTION
- GS_ALL_CONTROL_GROUP_INFO
- GS_BLOCKLIST_QUERY
- GS_BLOCKLIST_SQL
- GS_CLUSTER_RESOURCE_INFO
- GS_COLUMN_TABLE_IO_STAT
- GS_LSC_DBSTAT_INFO
- GS_LSC_MEMORY_DETAIL
- GS_OBS_READ_TRAFFIC
- GS_OBS_WRITE_TRAFFIC
- GS_INSTR_UNIQUE_SQL
- GS_NODE_STAT_RESET_TIME
- GS_OBS_LATENCY
- GS_QUERY_MONITOR
- GS_QUERY_RESOURCE_INFO
- GS_REL_IOSTAT
- GS_RESPOOL_RUNTIME_INFO
- GS_RESPOOL_RESOURCE_INFO
- GS_RESPOOL_MONITOR
- GS_ROW_TABLE_IO_STAT
- GS_SESSION_CPU_STATISTICS
- GS_SESSION_MEMORY_STATISTICS
- GS_SQL_COUNT
- GS_STAT_DB_CU
- GS_STAT_SESSION_CU
- GS_TABLE_CHANGE_STAT
- GS_TABLE_STAT
- GS_TOTAL_NODEGROUP_MEMORY_DETAIL
- GS_USER_MONITOR
- GS_USER_TRANSACTION
- GS_VIEW_DEPENDENCY
- GS_VIEW_DEPENDENCY_PATH
- GS_VIEW_INVALID
- GS_WAIT_EVENTS
- GS_WLM_OPERATOR_INFO
- GS_WLM_OPERATOR_HISTORY
- GS_WLM_OPERATOR_STATISTICS
- GS_WLM_SESSION_INFO
- GS_WLM_SESSION_HISTORY
- GS_WLM_SESSION_STATISTICS
- GS_WLM_SQL_ALLOW
- GS_WORKLOAD_SQL_COUNT
- GS_WORKLOAD_SQL_ELAPSE_TIME
- GS_WORKLOAD_TRANSACTION
- MPP_TABLES
- PG_AVAILABLE_EXTENSION_VERSIONS
- PG_AVAILABLE_EXTENSIONS
- PG_BULKLOAD_STATISTICS
- PG_COMM_CLIENT_INFO
- PG_COMM_DELAY
- PG_COMM_STATUS
- PG_COMM_RECV_STREAM
- PG_COMM_SEND_STREAM
- PG_COMM_QUERY_SPEED
- PG_CONTROL_GROUP_CONFIG
- PG_CURSORS
- PG_EXT_STATS
- PG_GET_INVALID_BACKENDS
- PG_GET_SENDERS_CATCHUP_TIME
- PG_GLOBAL_TEMP_ATTACHED_PIDS
- PG_GROUP
- PG_INDEXES
- PG_JOB
- PG_JOB_PROC
- PG_JOB_SINGLE
- PG_LIFECYCLE_DATA_DISTRIBUTE
- PG_LOCKS
- PG_LOCKWAIT_DETAIL
- PG_LWLOCKS
- PG_NODE_ENV
- PG_OS_THREADS
- PG_POOLER_STATUS
- PG_PREPARED_STATEMENTS
- PG_PREPARED_XACTS
- PG_PUBLICATION_TABLES
- PG_QUERYBAND_ACTION
- PG_REPLICATION_SLOTS
- PG_ROLES
- PG_RULES
- PG_RUNNING_XACTS
- PG_SECLABELS
- PG_SEQUENCES
- PG_SESSION_WLMSTAT
- PG_SESSION_IOSTAT
- PG_SETTINGS
- PG_SHADOW
- PG_SHARED_MEMORY_DETAIL
- PG_STATS
- PG_STAT_ACTIVITY
- PG_STAT_ALL_INDEXES
- PG_STAT_ALL_TABLES
- PG_STAT_BAD_BLOCK
- PG_STAT_BGWRITER
- PG_STAT_DATABASE
- PG_STAT_DATABASE_CONFLICTS
- PG_STAT_GET_MEM_MBYTES_RESERVED
- PG_STAT_USER_FUNCTIONS
- PG_STAT_USER_INDEXES
- PG_STAT_USER_TABLES
- PG_STAT_REPLICATION
- PG_STAT_SYS_INDEXES
- PG_STAT_SYS_TABLES
- PG_STAT_XACT_ALL_TABLES
- PG_STAT_XACT_SYS_TABLES
- PG_STAT_XACT_USER_FUNCTIONS
- PG_STAT_XACT_USER_TABLES
- PG_STATIO_ALL_INDEXES
- PG_STATIO_ALL_SEQUENCES
- PG_STATIO_ALL_TABLES
- PG_STATIO_SYS_INDEXES
- PG_STATIO_SYS_SEQUENCES
- PG_STATIO_SYS_TABLES
- PG_STATIO_USER_INDEXES
- PG_STATIO_USER_SEQUENCES
- PG_STATIO_USER_TABLES
- PG_THREAD_WAIT_STATUS
- PG_TABLES
- PG_TDE_INFO
- PG_TIMEZONE_ABBREVS
- PG_TIMEZONE_NAMES
- PG_TOTAL_MEMORY_DETAIL
- PG_TOTAL_SCHEMA_INFO
- PG_TOTAL_USER_RESOURCE_INFO
- PG_USER
- PG_USER_MAPPINGS
- PG_VIEWS
- PG_WLM_STATISTICS
- PGXC_BULKLOAD_PROGRESS
- PGXC_BULKLOAD_INFO
- PGXC_BULKLOAD_STATISTICS
- PGXC_COLUMN_TABLE_IO_STAT
- PGXC_COMM_CLIENT_INFO
- PGXC_COMM_DELAY
- PGXC_COMM_RECV_STREAM
- PGXC_COMM_SEND_STREAM
- PGXC_COMM_STATUS
- PGXC_COMM_QUERY_SPEED
- PGXC_DEADLOCK
- PGXC_DISK_CACHE_STATS
- PGXC_DISK_CACHE_ALL_STATS
- PGXC_DISK_CACHE_PATH_INFO
- PGXC_GET_STAT_ALL_TABLES
- PGXC_GET_STAT_ALL_PARTITIONS
- PGXC_GET_TABLE_SKEWNESS
- PGXC_GET_TABLESPACE_OBS_FILE
- PGXC_GLOBAL_TEMP_ATTACHED_PIDS
- PGXC_GTM_SNAPSHOT_STATUS
- PGXC_INSTANCE_TIME
- PGXC_LOCKWAIT_DETAIL
- PGXC_INSTR_UNIQUE_SQL
- PGXC_LOCK_CONFLICTS
- PGXC_LWLOCKS
- PGXC_MEMORY_DEBUG_INFO
- PGXC_NODE_ENV
- PGXC_NODE_STAT_RESET_TIME
- PGXC_OBS_IO_SCHEDULER_STATS
- PGXC_OBS_IO_SCHEDULER_PERIODIC_STATS
- PGXC_OS_RUN_INFO
- PGXC_OS_THREADS
- PGXC_POOLER_STATUS
- PGXC_PREPARED_XACTS
- PGXC_QUERY_INFO
- PGXC_REDO_STAT
- PGXC_REL_IOSTAT
- PGXC_REPLICATION_SLOTS
- PGXC_RESPOOL_RUNTIME_INFO
- PGXC_RESPOOL_RESOURCE_INFO
- PGXC_RESPOOL_RESOURCE_HISTORY
- PGXC_ROW_TABLE_IO_STAT
- PGXC_RUNNING_XACTS
- PGXC_SETTINGS
- PGXC_SESSION_WLMSTAT
- PGXC_STAT_ACTIVITY
- PGXC_STAT_BAD_BLOCK
- PGXC_STAT_BGWRITER
- PGXC_STAT_DATABASE
- PGXC_STAT_OBJECT
- PGXC_STAT_REPLICATION
- PGXC_STAT_TABLE_DIRTY
- PGXC_STAT_WAL
- PGXC_SQL_COUNT
- PGXC_TABLE_CHANGE_STAT
- PGXC_TABLE_STAT
- PGXC_THREAD_WAIT_STATUS
- PGXC_TOTAL_MEMORY_DETAIL
- PGXC_TOTAL_SCHEMA_INFO
- PGXC_TOTAL_SCHEMA_INFO_ANALYZE
- PGXC_TOTAL_USER_RESOURCE_INFO
- PGXC_USER_TRANSACTION
- PGXC_VARIABLE_INFO
- PGXC_WAIT_DETAIL
- PGXC_WAIT_EVENTS
- PGXC_WLM_OPERATOR_HISTORY
- PGXC_WLM_OPERATOR_INFO
- PGXC_WLM_OPERATOR_STATISTICS
- PGXC_WLM_SESSION_INFO
- PGXC_WLM_SESSION_HISTORY
- PGXC_WLM_SESSION_STATISTICS
- PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS
- PGXC_WLM_USER_RESOURCE_HISTORY
- PGXC_WLM_WORKLOAD_RECORDS
- PGXC_WORKLOAD_SQL_COUNT
- PGXC_WORKLOAD_SQL_ELAPSE_TIME
- PGXC_WORKLOAD_TRANSACTION
- PLAN_TABLE
- PV_FILE_STAT
- PV_INSTANCE_TIME
- PV_MATVIEW_DETAIL
- PV_OS_RUN_INFO
- PV_SESSION_MEMORY
- PV_SESSION_MEMORY_DETAIL
- PV_SESSION_STAT
- PV_SESSION_TIME
- PV_TOTAL_MEMORY_DETAIL
- PV_REDO_STAT
- PV_RUNTIME_ATTSTATS
- PV_RUNTIME_RELSTATS
- REDACTION_COLUMNS
- REDACTION_POLICIES
- REMOTE_TABLE_STAT
- SHOW_TSC_INFO
- SHOW_ALL_TSC_INFO
- USER_COL_COMMENTS
- USER_CONSTRAINTS
- USER_CONS_COLUMNS
- USER_INDEXES
- USER_IND_COLUMNS
- USER_IND_EXPRESSIONS
- USER_IND_PARTITIONS
- USER_JOBS
- USER_OBJECTS
- USER_PART_INDEXES
- USER_PART_TABLES
- USER_PROCEDURES
- USER_SEQUENCES
- USER_SOURCE
- USER_SYNONYMS
- USER_TAB_COLUMNS
- USER_TAB_COMMENTS
- USER_TAB_PARTITIONS
- USER_TABLES
- USER_TRIGGERS
- USER_VIEWS
- V$SESSION
- V$SESSION_LONGOPS
- GaussDB(DWS)数据库GUC参数
- GaussDB(DWS)开发者术语表
- 实时数仓
- 历史版本
-
开发指南(9.1.0.x)
-
SQL语法参考
-
SQL语法参考(9.1.0.x)
- GaussDB(DWS) SQL概述
- GaussDB(DWS) SQL语法格式说明
- 与PostgreSQL的差异
- 关键字
- 数据类型
- 常量与宏
-
函数和操作符
- 字符处理函数和操作符
- 二进制字符串函数和操作符
- 位串函数和操作符
- 数字操作函数和操作符
- 时间、日期处理函数和操作符
- SEQUENCE函数
- 数组函数和操作符
- 逻辑操作符
- 比较操作符
- 模式匹配操作符
- 聚集函数
- 窗口函数
- 类型转换函数
- JSON/JSONB函数和操作符
- 安全函数
- 条件表达式函数
- 范围函数和操作符
- 数据脱敏函数
- 位图函数和操作符
- UUID函数
- 文本检索函数和操作符
- HLL函数和操作符
- 返回集合的函数
- 几何函数和操作符
- 网络地址函数和操作符
- 系统信息函数
- 系统管理函数
- 备份恢复控制函数
- 数据库对象函数
- 残留文件管理函数
- 统计信息函数
- 触发器函数
- XML函数
- 调用栈记录函数
- Hudi系统函数
- 漏斗函数和留存函数
- EXTERNAL SCHEMA系统函数
- 存算分离函数
- 表达式
- 类型转换
- 全文检索
- 系统操作
- 事务管理
-
DDL语法
- DDL语法一览表
- ALTER BLOCK RULE
- ALTER DATABASE
- ALTER EXCEPT RULE
- ALTER EXTERNAL SCHEMA
- ALTER FOREIGN TABLE (GDS导入导出)
- ALTER FOREIGN TABLE (For HDFS or OBS)
- ALTER FUNCTION
- ALTER GROUP
- ALTER INDEX
- ALTER LARGE OBJECT
- ALTER MATERIALIZED VIEW
- ALTER PUBLICATION
- ALTER REDACTION POLICY
- ALTER RESOURCE POOL
- ALTER ROLE
- ALTER SUBSCRIPTION
- ALTER ROW LEVEL SECURITY POLICY
- ALTER SCHEMA
- ALTER SEQUENCE
- ALTER SERVER
- ALTER SESSION
- ALTER SYNONYM
- ALTER SYSTEM KILL SESSION
- ALTER TABLE
- ALTER TABLE PARTITION
- ALTER TEXT SEARCH CONFIGURATION
- ALTER TEXT SEARCH DICTIONARY
- ALTER TRIGGER
- ALTER TYPE
- ALTER USER
- ALTER VIEW
- CLEAN CONNECTION
- CLOSE
- CLUSTER
- COMMENT
- CREATE BARRIER
- CREATE BLOCK RULE
- CREATE DATABASE
- CREATE EXCEPT RULE
- CREATE EXTERNAL SCHEMA
- CREATE FOREIGN TABLE (GDS导入导出)
- CREATE FOREIGN TABLE (SQL on OBS or Hadoop)
- CREATE FOREIGN TABLE (OBS导入导出)
- CREATE FUNCTION
- CREATE GROUP
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE PROCEDURE
- CREATE PUBLICATION
- CREATE REDACTION POLICY
- CREATE ROW LEVEL SECURITY POLICY
- CREATE RESOURCE POOL
- CREATE ROLE
- CREATE SCHEMA
- CREATE SEQUENCE
- CREATE SERVER
- CREATE SUBSCRIPTION
- CREATE SYNONYM
- CREATE TABLE
- CREATE TABLE AS
- CREATE TABLE PARTITION
- CREATE TEXT SEARCH CONFIGURATION
- CREATE TEXT SEARCH DICTIONARY
- CREATE TRIGGER
- CREATE TYPE
- CREATE USER
- CREATE VIEW
- CURSOR
- DISCARD
- DROP BLOCK RULE
- DROP DATABASE
- DROP EXCEPT RULE
- DROP FOREIGN TABLE
- DROP FUNCTION
- DROP GROUP
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP OWNED
- DROP PUBLICATION
- DROP REDACTION POLICY
- DROP ROW LEVEL SECURITY POLICY
- DROP PROCEDURE
- DROP RESOURCE POOL
- DROP ROLE
- DROP SCHEMA
- DROP SEQUENCE
- DROP SERVER
- DROP SUBSCRIPTION
- DROP SYNONYM
- DROP TABLE
- DROP TEXT SEARCH CONFIGURATION
- DROP TEXT SEARCH DICTIONARY
- DROP TRIGGER
- DROP TYPE
- DROP USER
- DROP VIEW
- FETCH
- MOVE
- REFRESH MATERIALIZED VIEW
- REINDEX
- RENAME TABLE
- RESET
- SET
- SET CONSTRAINTS
- SET ROLE
- SET SESSION AUTHORIZATION
- SHOW
- TRUNCATE
- VACUUM
- DML语法
- DCL语法
- DQL语法
- TCL语法
-
SQL语法参考(9.1.1.x)
- GaussDB(DWS) SQL概述
- GaussDB(DWS) SQL语法格式说明
- 与PostgreSQL的差异
- 关键字
- 数据类型
- 常量与宏
-
函数和操作符
- 字符处理函数和操作符
- 二进制字符串函数和操作符
- 位串函数和操作符
- 数字操作函数和操作符
- 时间、日期处理函数和操作符
- SEQUENCE函数
- 数组函数和操作符
- 逻辑操作符
- 比较操作符
- 模式匹配操作符
- 聚集函数
- 窗口函数
- 类型转换函数
- JSON/JSONB函数和操作符
- 安全函数
- 条件表达式函数
- 范围函数和操作符
- 数据脱敏函数
- Roaring Bitmap函数和操作符
- UUID函数
- 文本检索函数和操作符
- HLL函数和操作符
- 返回集合的函数
- 几何函数和操作符
- 网络地址函数和操作符
- 系统信息函数
- 系统管理函数
- 备份恢复控制函数
- 数据库对象函数
- 残留文件管理函数
- 统计信息函数
- 触发器函数
- XML函数
- 调用栈记录函数
- Hudi系统函数
- 漏斗函数和留存函数
- EXTERNAL SCHEMA系统函数
- 存算分离函数
- 表达式
- 类型转换
- 全文检索
- 系统操作
- 事务管理
-
DDL语法
- DDL语法一览表
- ALTER BLOCK RULE
- ALTER DATABASE
- ALTER EXCEPT RULE
- ALTER EXTERNAL SCHEMA
- ALTER FOREIGN TABLE (GDS导入导出)
- ALTER FOREIGN TABLE (For HDFS or OBS)
- ALTER FUNCTION
- ALTER GROUP
- ALTER INDEX
- ALTER LARGE OBJECT
- ALTER MATERIALIZED VIEW
- ALTER NODE GROUP
- ALTER PUBLICATION
- ALTER REDACTION POLICY
- ALTER RESOURCE POOL
- ALTER ROLE
- ALTER SUBSCRIPTION
- ALTER ROW LEVEL SECURITY POLICY
- ALTER SCHEMA
- ALTER SEQUENCE
- ALTER SERVER
- ALTER SESSION
- ALTER SYNONYM
- ALTER SYSTEM KILL SESSION
- ALTER TABLE
- ALTER TABLE PARTITION
- ALTER TEXT SEARCH CONFIGURATION
- ALTER TEXT SEARCH DICTIONARY
- ALTER TRIGGER
- ALTER TYPE
- ALTER USER
- ALTER VIEW
- CLEAN CONNECTION
- CLOSE
- CLUSTER
- COMMENT
- CREATE BARRIER
- CREATE BLOCK RULE
- CREATE DATABASE
- CREATE EXCEPT RULE
- CREATE EXTERNAL SCHEMA
- CREATE FOREIGN TABLE (GDS导入导出)
- CREATE FOREIGN TABLE (SQL on OBS or Hadoop)
- CREATE FOREIGN TABLE (OBS导入导出)
- CREATE FUNCTION
- CREATE GROUP
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE NODE GROUP
- CREATE OUTLINE
- CREATE PROCEDURE
- CREATE PUBLICATION
- CREATE REDACTION POLICY
- CREATE ROW LEVEL SECURITY POLICY
- CREATE RESOURCE POOL
- CREATE ROLE
- CREATE SCHEMA
- CREATE SEQUENCE
- CREATE SERVER
- CREATE SUBSCRIPTION
- CREATE SYNONYM
- CREATE TABLE
- CREATE TABLE AS
- CREATE TABLE PARTITION
- CREATE TEXT SEARCH CONFIGURATION
- CREATE TEXT SEARCH DICTIONARY
- CREATE TRIGGER
- CREATE TYPE
- CREATE USER
- CREATE VIEW
- CURSOR
- DISCARD
- DROP BLOCK RULE
- DROP DATABASE
- DROP EXCEPT RULE
- DROP FOREIGN TABLE
- DROP FUNCTION
- DROP GROUP
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP NODE GROUP
- DROP OUTLINE
- DROP OWNED
- DROP PUBLICATION
- DROP REDACTION POLICY
- DROP ROW LEVEL SECURITY POLICY
- DROP PROCEDURE
- DROP RESOURCE POOL
- DROP ROLE
- DROP SCHEMA
- DROP SEQUENCE
- DROP SERVER
- DROP SUBSCRIPTION
- DROP SYNONYM
- DROP TABLE
- DROP TEXT SEARCH CONFIGURATION
- DROP TEXT SEARCH DICTIONARY
- DROP TRIGGER
- DROP TYPE
- DROP USER
- DROP VIEW
- FETCH
- MOVE
- REFRESH MATERIALIZED VIEW
- REINDEX
- RENAME TABLE
- RESET
- SET
- SET CONSTRAINTS
- SET ROLE
- SET SESSION AUTHORIZATION
- SHOW
- TRUNCATE
- VACUUM
- DML语法
- DCL语法
- DQL语法
- TCL语法
- 历史版本
-
SQL语法参考(9.1.0.x)
-
工具指南
- 工具简介
- 工具下载
- gsql
- GDS
-
DSC
- 前言
- DSC简介
- 使用DSC
- Teradata语法迁移
-
MySQL语法迁移
- 支持的关键词和特性
- 数据类型
- 函数和表达式
-
表(可选参数、操作)
- ALGORITHM
- ALTER TABLE RENAME
- AUTO_INCREMENT
- AVG_ROW_LENGTH
- BLOCK_SIZE
- CHARSET
- CHECKSUM
- CLUSTERED KEY
- COLLATE
- COMMENT
- CONNECTION
- DEFAULT
- DELAY_KEY_WRITE
- DISTRIBUTE BY
- DIRECTORY
- ENGINE
- FOREIGN_KEY_CHECKS
- IF NOT EXISTS
- INDEX_ALL
- INSERT_METHOD
- KEY_BLOCK_SIZE
- LOCK
- MAX_ROWS
- MIN_ROWS
- PACK_KEYS
- PARTITION BY
- PASSWORD
- ROW_FORMAT
- STATS_AUTO_RECALC
- STATS_PERSISTENT
- STATS_SAMPLE_PAGES
- UNION
- WITH AS
- CHANGE修改列
- CHECK约束
- DROP删除表
- LIKE 表克隆
- MODIFY修改列
- TRUNCATE 删除表
- ROUNDROBIN表
- RENAME 重命名表名
- 设置与清除列默认值
- 字段名重命名
- 行列存压缩
- 添加与删除列
- 索引
- 注释
- 数据库
- 数据操作语句(DML)
- 事务管理和数据库管理
- SQL-Server语法迁移
- Oracle语法迁移
- Netezza语法迁移
- DSC常见问题
- 故障处理
- 术语表
- DataCheck
- DWS-Connector
- 服务端工具
- API参考
- SDK参考
- 场景代码示例
-
错误码参考
- 控制台错误码
-
错误码(8.2.0及以下版本)
- SQL标准错误码说明
- 第三方库错误码说明
- GAUSS-00001 -- GAUSS-00100
- GAUSS-00101 -- GAUSS-00200
- GAUSS-00201 -- GAUSS-00300
- GAUSS-00301 -- GAUSS-00400
- GAUSS-00401 -- GAUSS-00500
- GAUSS-00501 -- GAUSS-00600
- GAUSS-00601 -- GAUSS-00700
- GAUSS-00701 -- GAUSS-00800
- GAUSS-00801 -- GAUSS-00900
- GAUSS-00901 -- GAUSS-01000
- GAUSS-01001 -- GAUSS-01100
- GAUSS-01101 -- GAUSS-01200
- GAUSS-01201 -- GAUSS-01300
- GAUSS-01301 -- GAUSS-01400
- GAUSS-01401 -- GAUSS-01500
- GAUSS-01501 -- GAUSS-01600
- GAUSS-01601 -- GAUSS-01700
- GAUSS-01701 -- GAUSS-01800
- GAUSS-01801 -- GAUSS-01900
- GAUSS-01901 -- GAUSS-02000
- GAUSS-02001 -- GAUSS-02100
- GAUSS-02101 -- GAUSS-02200
- GAUSS-02201 -- GAUSS-02300
- GAUSS-02301 -- GAUSS-02400
- GAUSS-02401 -- GAUSS-02500
- GAUSS-02501 -- GAUSS-02600
- GAUSS-02601 -- GAUSS-02700
- GAUSS-02701 -- GAUSS-02800
- GAUSS-02801 -- GAUSS-02900
- GAUSS-02901 -- GAUSS-03000
- GAUSS-03001 -- GAUSS-03100
- GAUSS-03101 -- GAUSS-03200
- GAUSS-03201 -- GAUSS-03300
- GAUSS-03301 -- GAUSS-03400
- GAUSS-03401 -- GAUSS-03500
- GAUSS-03501 -- GAUSS-03600
- GAUSS-03601 -- GAUSS-03700
- GAUSS-03701 -- GAUSS-03800
- GAUSS-03801 -- GAUSS-03900
- GAUSS-03901 -- GAUSS-04000
- GAUSS-04001 -- GAUSS-04100
- GAUSS-04101 -- GAUSS-04200
- GAUSS-04201 -- GAUSS-04300
- GAUSS-04301 -- GAUSS-04400
- GAUSS-04401 -- GAUSS-04500
- GAUSS-04501 -- GAUSS-04600
- GAUSS-04601 -- GAUSS-04700
- GAUSS-04701 -- GAUSS-04800
- GAUSS-04901 -- GAUSS-04999
- GAUSS-05101 -- GAUSS-05200
- GAUSS-05201 -- GAUSS-05800
- GAUSS-05801 -- GAUSS-05900
- GAUSS-05901 -- GAUSS-05999
- GAUSS-06101 -- GAUSS-06200
- GAUSS-50000 -- GAUSS-50999
- GAUSS-51000 -- GAUSS-51999
- GAUSS-52000 -- GAUSS-52999
- GAUSS-53000 -- GAUSS-53999
- OE000
- 8.2.1及以上版本
-
常见问题
- Top问题汇总
- 产品咨询
- 数据库连接
- 数据迁移
-
数据库使用
- 如何调整DWS分布列?
- 如何查看和设置DWS数据库的字符集编码格式
- 如何处理DWS建表时date类型字段自动转换为timestamp类型的问题?
- DWS是否需要定时对常用的表做VACUUM FULL和ANALYZE操作?
- 如何导出DWS某张表结构?
- DWS是否有高效的删除表数据的方法?
- 如何查看DWS外部表信息?
- 如果DWS建表时没有指定分布列,数据会怎么存储?
- 如何将DWS联结查询的null结果替换成0?
- 如何查看DWS表是行存还是列存?
- DWS列存表的常用信息查询
- DWS查询时索引失效场景解析
- 如何使用DWS自定义函数改写CRC32()函数
- DWS以pg_toast_temp*或pg_temp*开头的Schema是什么?
- DWS查询时结果不一致的常见场景和解决方法
- DWS哪些系统表不能做VACUUM FULL
- DWS语句处于idle in transaction状态常见场景
- DWS如何实现行转列及列转行?
- DWS唯一约束和唯一索引有什么区别?
- DWS函数和存储过程有什么区别?
- DWS字符截取函数substrb()、substr()及substring()的用法及差异
- 如何删除DWS重复的表数据?
- 集群管理
- 账户与权限
- 数据库性能
- 备份恢复
-
故障排除
- 数据库连接管理
- JDBC/ODBC类
-
数据导入/导出
- 使用COPY FROM导入时报错“invalid byte sequence for encoding "UTF8": 0x00”
- GDS导入/导出类问题
- 创建GDS外表失败,提示不支持ROUNDROBIN
- 通过CDM将MySQL数据导入GaussDB(DWS)时出现字段超长,数据同步失败
- 执行创建OBS外表的SQL语句时,提示Access Denied
- GDS导入失败后,磁盘占用空间增大
- GDS导入数据时,脚本执行报错:out of memory
- 使用GDS传输数据的过程中,报错:connection failure error
- 使用DataArts Studio服务创建GaussDB(DWS)外表时不支持中文,如何处理
- 数据库参数修改
- 账号/权限/密码
-
集群性能
- 锁等待检测
- 执行SQL时出现表死锁,提示LOCK_WAIT_TIMEOUT锁等待超时
- 执行SQL时报错:abort transaction due to concurrent update
- 磁盘使用率高&集群只读处理方案
- SQL执行很慢,性能低,有时长时间运行未结束
- 数据倾斜导致SQL执行慢,大表SQL执行无结果
- VACUUM FULL一张表后,表文件大小无变化
- 删除表数据后执行了VACUUM,但存储空间并没有释放
- 执行VACUUM FULL命令时报错:Lock wait timeout
- VACUUM FULL执行慢
- 表数据膨胀导致SQL查询慢,用户前台页面数据加载不出
- 集群报错内存溢出
- 带自定义函数的语句不下推
- 列存表更新失败或多次更新后出现表膨胀
- 列存表多次插入后出现表膨胀
- 往GaussDB(DWS)写数据慢,客户端数据会有积压
- 分析查询效率异常降低的问题
- 未收集统计信息导致查询性能差
- 执行计划中有NestLoop导致SQL语句执行慢
- 未分区剪枝导致SQL查询慢
- 行数估算过小,优化器选择走NestLoop导致性能下降
- 语句中存在“in 常量”导致SQL执行无结果
- 单表点查询性能差
- 动态负载管理下的CCN排队
- 数据膨胀磁盘空间不足,导致性能降低
- 列存小CU多导致的性能慢问题
- 降低I/O的处理方案
- 高CPU系统性能调优方案
- 降低内存的处理方案
- 集群异常
-
数据库使用
- 插入或更新数据时报错,提示分布键不能被更新
- VARCHAR(n)存储中文字符,提示value too long for type character varying?
- SQL语句中字段名大小写敏感问题
- 删除表时报错:cannot drop table test because other objects depend on it
- 多个表同时进行MERGE INTO UPDATE时,执行失败
- session_timeout设置导致JDBC业务报错
- DROP TABLE失败
- 使用string_agg函数查询执行结果不稳定
- 查询表大小时报错“could not open relation with OID xxx”
- DROP TABLE IF EXISTS语法误区
- 不同用户查询同表显示数据不同
- 修改索引只调用索引名提示索引不存在
- 执行CREATE SCHEMA语句时,报错SCHEMA已存在
- 删除数据库失败,提示有session正在连接
- 在Java中,读取character类型的表字段时返回类型为什么是byte?
- 执行表分区操作时,报错:start value of partition "xxx" NOT EQUAL up-boundary of last partition
- 重建索引失败
- 视图查询时执行失败
- 全局SQL查询
- 如何判断表是否执行过UPDATE或DELETE
- 执行业务报错“Can't fit xid into page”
- DWS元数据不一致-分区索引异常
- 对系统表gs_wlm_session_info执行TRUNCATE命令报错
- 分区表插入数据报错:inserted partition key does not map to any table partition
- 范围分区表添加新分区报错upper boundary of adding partition MUST overtop last existing partition
- 查询表报错:missing chunk number %d for toast value %u in pg_toast_XXXX
- 向表中插入数据报错:duplicate key value violates unique constraint "%s"
- 执行业务报错could not determine which collation to use for string hashing
- 使用GaussDB(DWS) 的ODBC驱动,SQL查询结果中字符类型的字段内容会被截断
- 执行Plan Hint的Scan方式不生效
- 数据类型转换出现报错:invalid input syntax for xxx
- 使用substring截取带中文的数据时出现乱码
- 业务报错:UNION types %s and %s cannot be matched
- 更新报错ERROR:Non-deterministic UPDATE
- 插入数据报错:null value in column '%s' violates not-null constraint
- 业务报错:unable to get a stable set of rows in the source table
- Oracle/TD/MySQL兼容模式下查询结果不一致
- 视频帮助
- 性能白皮书
- 文档下载
- 通用参考
链接复制成功!
CREATE FUNCTION
功能描述
FUNCTION(函数)是一段可重用的代码块,它接受输入参数,执行特定操作,并返回一个值或结果集。CREATE FUNCTION语句用于在数据库中创建用户自定义函数(UDF),实现DWS当前内置的系统函数中还未支持的其他计算功能,覆盖用户特定的复杂计算场景。
函数的主要特点包括:
- 支持输入参数,可根据不同条件返回结果。
- 需声明返回值的数据类型,执行结果返回单一值(标量函数)或表(表值函数)。
- 将复杂逻辑封装为单一函数,可以在SQL语句中像内置函数一样调用,提高代码的复用性。
GaussDB(DWS)函数易变属性的三种行为
SQL中函数的行为特性通常分为三类,包括immutable(不可变函数)、stable(稳定函数)、volatile(易变函数),三者关系如表1所示:
易变属性 |
定义 |
典型场景 |
---|---|---|
immutable |
immutable函数的结果仅由输入参数决定,与任何外部状态(如数据库当前数据、时间、事务上下文等)无关。无论何时、何地调用,只要输入参数相同,返回结果永远一致。且函数不会修改数据库中的数据。 |
数学计算、哈希、字符串操作,例如ABS(x), POWER(a, b),MD5(str)。 |
stable |
stable函数的结果在单次查询执行期间保持稳定。即在同一个查询的多次调用中,只要输入参数相同,结果一致。但结果可能依赖数据库的当前状态(如表数据、会话变量等),因此在不同查询或事务中可能返回不同结果。 |
基于当前数据的过滤、聚合,例如部分聚合函数:MAX(col), MIN(col)(在单次扫描中结果稳定)。 |
volatile |
volatile函数是最“不稳定”的类型。其结果可能在每次调用时变化,或可能修改数据库状态(如写入数据)。优化器无法预测其行为,必须每次调用都重新计算。 |
随机数、时间戳、DML操作,例如随机数函数:RANDOM()(每次调用返回不同值)。 |
查看函数属于哪种属性,可以查看PG_PROC系统表的provolatile字段(i表示immutable,s表示stable,v表示volatile)。
函数是否下推到DN(数据节点)执行(SHIPPABLE和NOT SHIPPABLE介绍)
CREATE FUNCTION语法中,通过SHIPPABLE(下推)和NOT SHIPPABLE(不下推)来控制该函数是否下推到数据节点(DN)执行。
- 对于IMMUTABLE类型的函数,函数始终可以下推到DN上执行。
- 对于STABLE/VOLATILE类型的函数,仅当函数的属性是SHIPPABLE的时候,函数可以下推到DN执行。
用户在定义函数的SHIPPABLE属性时也需特别慎重,SHIPPABLE意味着整个函数会下推到DN上执行,如果设置不当,会导致结果错误等严重问题。
与定义IMMUTABLE属性一样,SHIPPABLE属性的定义也有诸多约束,简单来说就是函数内不能有不可下推的因素,函数下推到单DN执行后,函数内部的计算逻辑仅依赖当前DN的数据集合。
- 如果自定义函数中引用了表、视图等对象,那么该函数就不能定义为IMMUTABLE,因为当表的数据发生变化的时候,函数的返回值可能发生变化。
- 如果自定义函数中引用了STABLE/VOLATILE类型的函数,那么该函数不能定义为IMMUTABLE。
- 如果自定义函数中有不下推的因素,则该函数不能定义成IMMUTABLE,因为IMMUTABLE意味着要下推到DN执行,与函数内部的不下推因素相互冲突。典型场景例如,包含不下推的函数、语法等。
- 如果自定义函数中含有聚合运算,但聚合运算的运算需要生成STREAM计划才能完成计算的(部分结果在DN计算,部分结果在CN计算,例如listagg函数等)。
不能定义为SHIPPABLE的情况,举例如下:
- 如果函数内部引用了表,并且表为HASH分布,那么该函数通常不能定义为SHIPPABLE。
- 函数内部有不可下推的因素,函数,语法等,那么该函数不能定义为SHIPPABLE,可参考语句下推调优章节。
- 函数内部的计算过程可能需要跨DN数据,这种情况该函数通常不能定义为SHIPPABLE,例如一些聚合运算等。
用户在使用GaussDB(DWS)时,应该正确指定函数属性,错误指定函数属性不仅会导致查询语句执行效率低,而且可能会导致结果集不稳定的情况。
注意事项
- 如果创建函数时参数或返回值带有精度,不进行精度检测。
- 创建函数时,函数定义中对表对象的操作建议都显式指定模式(例如hr.table1,明确指定是hr模式下面的表),否则可能会导致函数执行异常。
- 在创建函数时,函数内部通过SET语句设置current_schema和search_path无效。函数执行完的search_path和current_schema与函数执行前的search_path和current_schema保持一致。
- 如果函数参数中带有出参,SELECT调用函数必须缺省出参,CALL调用函数适配Oracle必须指定出参,对于调用重载的带有PACKAGE属性的函数,CALL调用函数可以缺省出参,具体信息参见CALL的示例。
- 兼容PostgreSQL风格的函数或者带有PACKAGE属性的函数支持重载。在指定REPLACE的时候,如果参数个数、类型、返回值有变化,不会替换原有函数,而是会建立新的函数。
- SELECT调用可以指定不同参数来进行同名函数调用。由于语法CALL适配自Oracle,因此不支持调用不带有PACKAGE属性的同名函数。
- 在创建function时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。
- 在非逻辑集群模式下,暂不支持将返回值、参数以及变量设置为建在非系统默认安装Node Group的表,sql function内部语句暂不支持对建在非系统默认安装Node Group的表操作。
- 在逻辑集群模式下,如果函数返回值和参数是用户表类型,所有涉及表都必须在同一逻辑集群内;如果函数内部涉及对多个逻辑集群表操作,函数定义时不能为IMMUTABLE和SHIPPABLE类型,以避免函数被下推到DN执行。
- 在逻辑集群模式下,函数参数、返回值不能用%type引用表字段类型,否则会导致函数创建失败。
- 新创建的函数默认会给PUBLIC授予执行权限(详见GRANT)。用户可以选择收回PUBLIC默认执行权限,然后根据需要将执行权限授予其他用户,为了避免出现新函数能被所有人访问的时间窗口,应在一个事务中创建函数并且设置函数执行权限。
- 在多个CN的集群中,不能将函数的入参或出参设置为临时表类型,因为在非当前连接CN上执行创建函数过程中,无法单独根据表名获取到正确的临时schema,进而无法获取到准确的表类型。
语法格式
- 兼容PostgreSQL风格的创建自定义函数语法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
CREATE [ OR REPLACE ] FUNCTION function_name ( [ { argname [ argmode ] argtype [ { DEFAULT | := | = } expression ]} [, ...] ] ) [ RETURNS rettype [ DETERMINISTIC ] | RETURNS TABLE ( { column_name column_type } [, ...] )] LANGUAGE lang_name [ {IMMUTABLE | STABLE | VOLATILE } | {SHIPPABLE | NOT SHIPPABLE} | WINDOW | [ NOT ] LEAKPROOF | {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} | {FENCED | NOT FENCED} | {PACKAGE} | COST execution_cost | ROWS result_rows | SET configuration_parameter { {TO | =} value | FROM CURRENT }} ][...] { AS 'definition' | AS 'obj_file', 'link_symbol' }
- Oracle风格的创建自定义函数的语法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
CREATE [ OR REPLACE ] FUNCTION function_name ( [ { argname [ argmode ] argtype [ { DEFAULT | := | = } expression ] } [, ...] ] ) RETURN rettype [ DETERMINISTIC ] [ {IMMUTABLE | STABLE | VOLATILE } | {SHIPPABLE | NOT SHIPPABLE} | {PACKAGE} | {FENCED | NOT FENCED} | [ NOT ] LEAKPROOF | {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER } | COST execution_cost | ROWS result_rows | SET configuration_parameter { {TO | =} value | FROM CURRENT ][...] { IS | AS } plsql_body /
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
function_name |
要创建的函数名字(可以用模式修饰)。 |
取值范围:字符串,要符合标识符的命名规范。参见标识符命名规范。
注意:
如果创建的函数名与系统函数同名,建议指定schema。调用自定义函数时需指定schema,否则系统会优先调用系统函数。 |
argname |
函数参数的名字。 |
取值范围:字符串,要符合标识符的命名规范。 |
argmode |
函数参数的模式。 |
取值范围:IN,OUT,INOUT或VARIADIC。
注意:
OUT和INOUT模式的参数不能用在RETURNS TABLE的函数定义中。 |
argtype |
函数参数的数据类型。 |
常用的数据类型参见数据类型。 |
expression |
函数参数的默认表达式。 |
- |
rettype |
函数返回值的数据类型。 |
如果存在OUT或IN OUT参数,可以省略RETURNS子句。如果该子句存在,则必须和输出参数所表示的结果类型一致:如果有多个输出参数,则为RECORD,否则与单个输出参数的类型相同。 SETOF修饰词表示该函数将返回一个集合,而不是单独一项。 |
DETERMINISTIC |
为适配Oracle SQL语法,未实现功能,不推荐使用。 |
- |
column_name |
字段名称。 |
- |
column_type |
字段类型。 |
- |
definition |
一个定义函数的字符串常量,含义取决于语言。它可以是一个内部函数名字、一个指向某个目标文件的路径、一个SQL查询、一个过程语言文本。 |
- |
LANGUAGE lang_name |
用于实现函数的语言的名字。可以是SQL,internal,或者是用户定义的过程语言名字。为了保证向下兼容,该名字可以用单引号(包围)。若采用单引号,则引号内必须为大写。 |
- |
WINDOW |
表示该函数是窗口函数,替换函数定义时不能改变WINDOW属性。
注意:
自定义窗口函数只支持LANGUAGE是internal,并且引用的内部函数必须是窗口函数。 |
- |
IMMUTABLE |
表示该函数在给出同样的参数值时总是返回同样的结果。 |
如果函数的入参是常量,会在优化器阶段计算该函数的值。益处是可以尽早获取表达式的值,从而能更准确的进行代价估算,生成的执行计划也更优。 用户自定义的IMMUTABLE的函数是会被自动下推到DN执行的,但是这样可能有潜在的风险,即如果用户错误定义了函数的IMMUTABLE属性,但是函数执行的过程并不是IMMUTABLE的,那么可能会导致结果错误等严重问题。因此,用户在指定函数的属性为IMMUTABLE的时候,要特别慎重。 举例如下:
同时,为了防止这种情况下可能出现严重问题,数据库内部可以通过设置behavior_compat_options=‘check_function_conflicts’来开启对函数定义冲突的检查,目前可以识别出上述1和2场景。 |
STABLE |
表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。 |
- |
VOLATILE |
表示该函数值可以在一次表扫描内改变,因此不会做任何优化。 |
- |
SHIPPABLE NOT SHIPPABLE |
表示该函数是否可以下推到DN上执行。 |
|
PACKAGE |
表示该函数是否支持重载。PostgreSQL风格的函数本身就支持重载,此参数主要是针对Oracle风格的函数。 |
|
LEAKPROOF |
指出该函数的参数只包括返回值。LEAKPROOF只能由系统管理员设置。 |
- |
CALLED ON NULL INPUT |
表明该函数的某些参数是NULL的时候可以按照正常的方式调用。该参数可以省略。 |
- |
RETURNS NULL ON NULL INPUT STRICT |
STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,当有NULL值参数时该函数不会被执行;而只是自动返回一个NULL结果。 RETURNS NULL ON NULL INPUT和STRICT的功能相同。 |
- |
EXTERNAL |
目的是和SQL兼容,是可选的,这个特性适合于所有函数,而不仅是外部函数。 |
- |
SECURITY INVOKER AUTHID CURRENT_USER |
表明该函数将带着调用它的用户的权限执行。该参数可以省略。 SECURITY INVOKER和AUTHID CURRENT_USER的功能相同。 |
- |
SECURITY DEFINER AUTHID DEFINER |
声明该函数将以创建它的用户的权限执行。 AUTHID DEFINER和SECURITY DEFINER的功能相同。 |
- |
FENCED NOT FENCED |
该函数只对用户定义的C函数生效,声明函数是在保护模式还是非保护模式下执行。如果函数声明为NOT FENCED模式,则函数的执行在CN或者DN进程中进行。如果函数声明为FENCED模式,则函数在新fork的进程执行,这样函数的异常不会影响CN或者DN进程。 |
FENCED/NOT FENCED模式的选择:
|
COST execution_cost |
用来估计函数的执行成本。execution_cost以cpu_operator_cost为单位。 |
取值范围:正数。 |
ROWS result_rows |
估计函数返回的行数。用于函数返回的是一个集合。 |
正数,默认值是1000行。 |
configuration_parameter |
该函数配置的参数值。 |
|
plsql_body |
PL/SQL存储过程体。 |
须知:
当在函数中创建用户时,日志中会记录密码的明文。因此不建议用户在函数中创建用户。 |
示例:创建一个求两个整数求和的SQL函数
语法如下:
1 2 3 4 5 6 7 8 9 |
CREATE OR REPLACE FUNCTION func_add_sql(
integer, --第一个整数参数,未命名,使用位置参数$1引用
integer --第二个整数参数,未命名,使用位置参数$2引用
)
RETURNS integer --指定函数返回类型为整数
AS 'select $1 + $2;' --函数体:使用位置参数$1和$2相加
LANGUAGE SQL --使用SQL语言实现该函数
IMMUTABLE --函数类型为IMMUTABLE,表示相同输入总是返回相同结果
RETURNS NULL ON NULL INPUT; --等同于STRICT,任何参数为NULL时,函数返回NULL
|
执行函数,返回两个入参的求和值:
1 |
SELECT func_add_sql(8,3);
|
执行函数,输入为Null,返回为Null。
1 |
SELECT func_add_sql(Null,3);
|
示例:创建一个处理整数自增的PL/pgSQL语言函数
语法如下:
1 2 3 4 5 6 7 8 |
CREATE OR REPLACE FUNCTION func_increment_plsql(
i integer --输入参数,整数类型
) RETURNS integer --函数返回值为整数类型
AS $$
BEGIN --表示函数体开始
RETURN i + 1; --返回输入参数加1的结果
END;
$$ LANGUAGE plpgsql; --指定函数使用PL/pgSQL语言编写
|
执行函数,返回整数自增结果。
1 |
SELECT func_increment_plsql(5);
|
入参由一个表numbers的第一列指定,使用函数计算后,将计算结果返回到第二列:
1 2 3 4 |
DROP TABLE IF EXISTS numbers;
CREATE TABLE numbers (value integer);
INSERT INTO numbers VALUES (1), (2), (3), (4), (5);
SELECT value, func_increment_plsql(value) AS incremented_value FROM numbers ORDER BY 1;
|
示例:创建一个返回RECORD类型的PL/pgSQL语言函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
CREATE OR REPLACE FUNCTION compute(
i int, --输入参数,整数类型
out result_1 bigint, --输出结果1,大范围整数类型
out result_2 bigint --输出结果2,大范围整数类型
)
RETURNS SETOF RECORD --结果返回一组记录
AS $$
BEGIN
result_1 = i + 1; --计算第一个结果值,输入值+1
result_2 = i * 10; --计算第二个结果值,输入值乘以10
RETURN next; --返回当前计算结果并继续(允许返回多行)
END;
$$LANGUAGE plpgsql; --指定函数使用PL/pgSQL语言编写
|
单次调用函数,返回结果:
1 |
SELECT * FROM compute(5);
|
生成一个包含1到3的序列,并对序列的每个值调用一次compute函数。
1 2 3 |
SELECT i, (compute(i)).* --先调用compute函数,再展开函数返回的所有列
FROM generate_series(1, 3) --生成一个包含1,2,3的临时序列,用于i的赋值
AS t(i); --将结果作为临时表,别名为t,列名为i
|
与一个表test_data的数据结合使用,表中的value列作为函数compute的入参值,计算结果:
1 2 3 4 5 6 |
DROP TABLE IF EXISTS test_data;
CREATE TABLE test_data (id serial, value int);
INSERT INTO test_data (value) VALUES (2), (4), (6);
SELECT id, value, (compute(value)).*
FROM test_data ORDER BY 1;
|
示例:创建一个返回结果包含多个输出参数的SQL语言函数
语法如下:
1 2 3 4 5 6 7 |
CREATE OR REPLACE FUNCTION func_dup_sql(
in int, --输入参数,整数类型
out f1 int, --输出参数1,整数类型
out f2 text) --输出参数2,文本类型
AS $$
SELECT $1, CAST($1 AS text) || ' is text' --函数体,查询返回两列,第一列是输入参数$1,第二列是将参数转为文本后拼接'is text'
$$ LANGUAGE SQL;
|
执行函数
1 |
SELECT * FROM func_dup_sql(42);
|
示例:创建package属性的重载函数:
定义了两个重载的函数,名为package_func_overload,它们位于名为package的包中。这两个函数根据参数类型的不同有不同的实现。
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 |
CREATE OR REPLACE FUNCTION package_func_overload(
col int, --输入参数1,整数类型
col2 int --输入参数2,整数类型
)
RETURN integer PACKAGE
AS
DECLARE
col_type text; --声明局部变量
BEGIN
col := 122; --将第一个参数的值固定为122
dbms_output.put_line('two int parameters ' || col2);
RETURN 0; --返回整数值0
END;
/
CREATE OR REPLACE FUNCTION package_func_overload(
col int,
col2 smallint
)
RETURN integer PACKAGE
AS
DECLARE
col_type text;
BEGIN
col := 122;
dbms_output.put_line('two smallint parameters ' || col2);
RETURN 0;
END;
/
|
函数下推逻辑及示例
函数下推逻辑分为两部分:
- 函数体是否下推:通过函数属性(SHIPPABLE)判断。
- 函数体内的语句是否下推:当函数体不下推的时候,函数体内的SQL语句进行独立的下推判断(优化器自动判断)。
调用函数的语句不包含用户表
当调用函数的语句不包含用户表的时候,这个语句总是在CN上执行,函数体不下推,此时执行逻辑如下:
- 先执行函数:语句中没有用户表,这个语句总是在CN上执行。
- 接着执行函数体的语句,如果不存在不下推的因素,那么总是可以下推的(走下推框架:FQS 或 stream计划)。
- 单独调用函数(调用函数的语句不包含用户表),函数中包含表关联查询的SQL,查询结果是准确的。
- 函数下推只有在函数调用语句中直接出现用户表的时候才有意义。
- 函数体里面的执行计划没办法直接对外展示,可以设置enable_track_record_subsql=on记录函数体内部的语句。
示例:函数体为NOT SHIPPABLE,调用函数的语句不包含用户表。
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 |
CREATE TABLE student (
id integer,
name character varying(50),
age integer
)
WITH (orientation=row, compression=no)
DISTRIBUTE BY HASH(id);
CREATE TABLE stuscore(
id integer,
score integer
)
WITH (orientation=row, compression=no)
DISTRIBUTE BY HASH(id);
INSERT INTO student(id,name,age) VALUES(1,'bob',17),(3,'peter',18),(4,'david',15),(8,'alice','17');
INSERT INTO stuscore(id,score) VALUES(1,88),(3,68),(8,100),(4,90);
--创建一个NOT SHIPPABLE的函数
CREATE OR REPLACE FUNCTION get_student_id(name character varying)
RETURNS TABLE(id integer)
LANGUAGE plpgsql
VOLATILE NOT FENCED NOT SHIPPABLE
AS $function$
DECLARE
BEGIN
RETURN QUERY (SELECT id FROM mytest.student WHERE name=$1);
END $function$;
|
查看单独调用函数的计划:
1 |
EXPLAIN VERBOSE SELECT * FROM get_student_id('alice');
|
从返回结果看,计划中没有函数是否下推的说明,因为函数下推只有在函数调用语句中直接出现用户表的时候才有意义。
调用函数的语句包含用户表
当调用函数的语句包含用户表的时候,语句是否下推由函数属性(SHIPPABLE)决定。
示例:函数属性为NOT SHIPPABLE,调用函数的语句包含用户表。
查看调用函数的计划,函数不可下推:
1 |
EXPLAIN VERBOSE SELECT get_student_id('alice') FROM stuscore;
|
示例:函数属性SHIPPABLE,调用函数的语句包含用户表。
1 2 3 4 5 6 7 8 9 10 |
--修改函数属性为SHIPPABLE。
CREATE OR REPLACE FUNCTION get_student_id(name character varying)
RETURNS TABLE(id integer)
LANGUAGE plpgsql
VOLATILE NOT FENCED SHIPPABLE
AS $function$
DECLARE
BEGIN
RETURN QUERY (SELECT id FROM mytest.student WHERE name=$1);
END $function$;
|
查看调用函数的计划,函数可下推。
1 |
EXPLAIN VERBOSE SELECT get_student_id('alice') FROM stuscore;
|