华为云用户手册

  • checkpoint_segments 参数说明:设置checkpoint_timeout周期内所保留WAL日志文件的最大数量。每个日志文件大小为16MB。 参数类型:整型 参数单位:无 取值范围:1~2147483646 默认值:1024 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。提升此参数可加快大数据的导入速度,但需要结合checkpoint_timeout、shared_buffers这两个参数统一考虑。这个参数同时影响WAL日志文件复用数量,通常情况下pg_xlog文件夹下最大的复用文件数量为checkpoint_segments的2倍,复用的文件被改名为后续即将使用的WAL日志文件,不会被删除。 设置不当的风险与影响:该参数设置过小会导致频繁触发checkpoint;设置过大可能会增大RTO,且会导致WAL日志保留的文件数量增多,增大占用磁盘空间。
  • checkpoint_timeout 参数说明:设置自动检查点之间的最长时间。 参数类型:整型 参数单位:s(秒) 取值范围:30~3600 默认值:900(即15min) 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。在提升checkpoint_segments以加快大数据导入的场景也需将此参数调大,同时这两个参数提升会加大shared_buffers的负担,需要综合考虑。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • checkpoint_warning 参数说明:由于写检查点文件导致检查点发生的时间间隔小于此参数,就写入建议增加checkpoint_segments值的警告信息。 参数类型:整型 参数单位:s(秒) 取值范围:0~2147483647,其中0表示关闭警告。 默认值:300 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • enable_incremental_checkpoint 参数说明:增量检查点开关。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启增量检查点开关。 off:表示关闭增量检查点开关。 默认值:on 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:在小内存或磁盘性能较差的环境建议关闭,其他场景建议按默认值打开。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。 当enable_incremental_checkpoint关闭后手动执行checkpoint,会使用full_page_writes生成第一条xLog,触发备份恢复时可能会产生“xlog contains no data”字样的日志。
  • enable_double_write 参数说明:双写特性开关。enable_incremental_checkpoint增量检查点开关打开时,同时enable_double_write打开,则使用enable_double_write双写特性保护,不再使用full_page_writes防止半页写问题。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启双写开关。 off:表示关闭双写开关。 默认值:on 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:在增量检查点模式下设置为on。 设置不当的风险与影响:在增量检查点开关打开时,关闭该参数可能导致数据出现半页写,进而导致持久化数据不可用。
  • checkpoint_wait_timeout 参数说明:设置请求检查点等待checkpointer线程启动的最长时间。 参数类型:整型 参数单位:s(秒) 取值范围:2~3600 默认值:1min 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • incremental_checkpoint_timeout 参数说明:开启增量检查点开关(enable_incremental_checkpoint)之后,设置自动检查点之间的最长时间。 参数类型:整型 参数单位:s(秒) 取值范围:1~3600 默认值:60 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • GLOBAL_STATIO_ALL_TABLES GLOBAL_STATIO_ALL_TABLES视图显示集群内各节点每张表(包括TOAST表)的I/O状态信息,如表1所示。 表1 GLOBAL_STATIO_ALL_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表OID。 schemaname name 该表模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表缓存命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓冲区数(如果存在)。 last_updated timestamp with time zone 视图中该表监控数据最后一次更新的时间。 父主题: Cache/IO
  • GLOBAL_STATIO_ALL_INDEXES GLOBAL_STATIO_ALL_INDEXES视图包含各节点的数据库中的每个索引行,显示特定索引的I/O的统计,如表1所示。 表1 GLOBAL_STATIO_ALL_INDEXES字段 名称 类型 描述 node_name name 节点名称。 relid oid 索引的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 last_updated timestamp with time zone 视图中该索引监控数据最后一次更新的时间。 父主题: Cache/IO
  • GLOBAL_COMM_SEND_STREAM GLOBAL_COMM_SEND_STREAM视图展示所有DN上所有的TCP代理通信库发送流状态,如表1所示。 表1 GLOBAL_COMM_SEND_STREAM字段 名称 类型 描述 node_name text 节点名称。 local_tid bigint 使用此通信流的线程ID。 remote_name text 连接对端节点名称。 remote_tid bigint 连接对端线程ID。 idx integer 通信对端DN在本DN内的标识编号。 sid integer 通信流在物理连接中的标识编号。 tcp_sock integer 通信流所使用的TCP通信socket。 state text 通信流当前的状态。 query_id bigint 通信流对应的debug_query_id编号。 pn_id integer 通信流所执行查询的plan_node_id编号。 send_smp integer 通信流所执行查询send端的smpid编号。 recv_smp integer 通信流所执行查询recv端的smpid编号。 send_bytes bigint 通信流发送的数据总量(单位:Byte)。 time bigint 通信流当前生命周期使用时长(单位:毫秒)。 speed bigint 通信流的平均发送速率(单位:Byte/s)。 quota bigint 通信流当前的通信配额值(单位:Byte)。 wait_quota bigint 通信流等待quota值产生的额外时间开销(单位:毫秒)。 父主题: Comm
  • COMM_STATUS COMM_STATUS视图展示单个DN的TCP代理通信库状态,如表1所示。 表1 COMM_STATUS字段 名称 类型 描述 node_name text 节点名称。 rxpck_rate integer 节点通信库接收速率,单位Byte/s。 txpck_rate integer 节点通信库发送速率,单位Byte/s。 rxkbyte_rate bigint bigint节点通信库接收速率,单位KByte/s。 txkbyte_rate bigint bigint节点通信库发送速率,单位KByte/s。 buffer bigint cmailbox的buffer大小。 memkbyte_libcomm bigint libcomm线程通信内存大小,单位Byte。 memkbyte_libpq bigint libpq线程通信内存大小,单位Byte。 used_pm integer postmaster线程实时使用率。 used_sflow integer gs_sender_flow_controller线程实时使用率。 used_rflow integer gs_receiver_flow_controller线程实时使用率。 used_rloop integer 多个gs_receivers_loop线程中高的实时使用率。 stream integer 当前使用的逻辑连接总数。 父主题: Comm
  • GLOBAL_BGWRITER_STAT GLOBAL_BGWRITER_STAT视图显示所有实例关于后端写线程活动的统计信息,如表1所示。 表1 GLOBAL_BGWRITER_STAT字段 名称 类型 描述 node_name name 实例名称。 checkpoints_timed bigint 执行的定期检查点数。 checkpoints_req bigint 执行的需求检查点数。 checkpoint_write_time double precision 在检查点处理过程中执行写入操作所花费的总时间,单位为毫秒。 checkpoint_sync_time double precision 在检查点处理过程中执行同步(sync)操作所花费的总时间,单位为毫秒。 buffers_checkpoint bigint 检查点写缓冲区的数量。 buffers_clean bigint BGWRITER线程写缓冲区的数量。 maxwritten_clean bigint BGWRITER线程停止清理扫描过程的次数(由于单次扫描刷页数量过多导致)。 buffers_backend bigint 后端直接写缓冲区的数量。 buffers_backend_fsync bigint 后端线程自行执行fsync的次数(通常情况下fsync调用由BGWRITER线程执行)。 buffers_alloc bigint 分配的缓冲区数量。 stats_reset timestamp with time zone 本行统计信息上次被重置的时间。 父主题: Utility
  • GLOBAL_PARALLEL_DECODE_THREAD_INFO GLOBAL_PARALLEL_DECODE_THREAD_INFO视图用于查看集群各主DN节点上的进行并行解码的线程信息,如表1所示。该视图需在CN上查询,在DN上查询报错。 表1 GLOBAL_PARALLEL_DECODE_THREAD_INFO字段 名称 类型 描述 node_name name 节点名称。 thread_id bigint 线程id。 slot_name text 复制槽名。 thread_type text 线程种类(共三种,sender代表发送线程,reader代表读取线程,decoder代表解码线程)。 seq_number integer 当前复制槽中同种线程的序号(从1开始)。 父主题: Utility
  • 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。 bucket integer 哈希桶号。 virtualxid text 事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。 transactionid xid 事务的ID,如果对象不是一个事务ID,则为NULL。 classid oid 包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。 objid oid 对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。 objsubid smallint 对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是零;如果这个对象不是普通数据库对象,则为NULL。 virtualtransaction text 持有此锁或者在等待此锁的事务的虚拟ID。 pid bigint 持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。 sessionid bigint 持有或者等待这个锁的会话ID。如果锁是被一个预备事务持有的,则为NULL。 global_sessionid text 全局会话ID。 mode text 这个线程持有的或者是期望的锁模式。 granted boolean 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean 如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。 locktag text 会话等待锁信息,可通过locktag_decode()函数解析。 父主题: Lock
  • MEMORY_NODE_DETAIL 显示当前数据库节点内存使用情况,如表1所示。 表1 MEMORY_NODE_DETAIL字段 名称 类型 描述 nodename text 节点名称。 memorytype text 内存的名称。 max_process_memory:数据库节点可用内存的最大值。 process_used_memory:进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:已使用的动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 max_shared_memory:最大共享内存。 shared_used_memory:已使用的共享内存。 max_sctpcomm_memory:TCP代理通信所允许使用的最大内存。 sctpcomm_used_memory:TCP代理通信已使用的内存大小。 sctpcomm_peak_memory:TCP代理通信的内存峰值。 other_used_memory:其他已使用的内存大小。 gpu_max_dynamic_memory:GPU最大动态内存。 gpu_dynamic_used_memory:GPU已使用的动态内存。 gpu_dynamic_peak_memory:GPU内存的动态峰值。 pooler_conn_memory:连接池申请内存计数。 pooler_freeconn_memory:连接池空闲连接的内存计数。 storage_compress_memory:存储模块压缩使用的内存大小。 udf_reserved_memory:UDF预留的内存大小。 memorymbytes integer 内存使用的大小,单位为MB。 父主题: Memory
  • MEMORY_NODE_NG_DETAIL nodegroup内存使用情况,如表1所示。 表1 MEMORY_NODE_NG_DETAIL字段 名称 类型 描述 ngname text node group名称。 memorytype text 内存使用的名称: ng_total_memory:node group中设置的总内存。 ng_used_memory:已经用的内存。 ng_estimate_memory:优化器评估已经用的内存。 ng_foreignrp_memsize:外部资源池设置的内存大小。 ng_foreignrp_usedsize:外部资源池当前已用内存。 ng_foreignrp_peaksize:外部资源池已使用的内存峰值。 ng_foreignrp_mempct:外部资源池属性中设置的占用系统总内存的百分比。 ng_foreignrp_estmsize:外部资源池执行作业优化器评估的内存使用。 memorymbytes integer 内存使用的大小(单位:MB)。 父主题: Memory
  • GLOBAL_WLM_WORKLOAD_RUNTIME 显示当前用户在每个CN上执行作业时在CN上的状态信息,如表1所示。需要有监控管理员权限才可以访问。 表1 GLOBAL_WAL_WORKLOAD_RUNTIME字段 名称 类型 描述 node_name text 作业执行所在的CN的名称。 thread_id bigint 后端线程ID。 processid integer 线程的lwpid。 time_stamp bigint 语句执行的开始时间。 username name 登录到该后端的用户名。 memory integer 语句所需的内存大小。 active_points integer 语句在资源池上消耗的资源点数。 max_points integer 资源在资源池上的最大资源数。 priority integer 作业的优先级。 resource_pool text 作业所在资源池。 status text 作业执行的状态,包括: pending:阻塞状态。 running:执行状态。 finished:结束状态。 aborted:终止状态。 unknown:未知状态。 control_group name 作业所使用的Cgroups。 enqueue text 作业的排队信息,包括: GLOBAL:全局排队。 RESPOOL:资源池排队。 ACTIVE:不排队。 query text 正在执行的语句。 node_group text node group名称。 父主题: Workload Manager
  • ai_watchdog_monitor_status 表1 ai_watchdog_monitor_status参数说明 参数 类型 描述 metric_name text metric指标名称: tps:TPS。 tps_hourly:每小时的TPS均值。 shared_used_mem:共享内存使用量(MB)。 dynamic_used_shrctx:共享内存上下文使用量(MB)。 other_used_mem:其他内存使用量(MB)。 process_used_mem:系统常驻内存使用量(MB)。 dynamic_used_mem:动态内存使用量(MB)。 malloc_failures:每个采集间隔内的内存分配失败次数。 D_state_rate:D状态线程比例。 R_state_rate:R状态线程比例。 S_state_rate:S状态线程比例。 db_state:数据库的状态(68表示D、82表示R、83表示S)。 cpu_usage:CPU使用率,上限100。 disk_io:两个采集间隔内的磁盘I/O延迟。 network_io:两个采集间隔内的网络I/O延迟。 threadpool_usage:线程池使用率。 threadpool_hang_rate:线程池group处于hang状态的比例。 max_length int 采集队列长队。 current_length int 当前采集到的样本数。 collection_interval int 采集间隔,单位秒。 latest_value int 上次采集到的值,没采集到为null。 last_report timestamp 上次采集时刻。 父主题: AI Watchdog
  • DBE_SQL_UTIL.create_hint_sql_patch create_hint_sql_patch是用于创建调优SQL PATCH的接口函数,返回执行是否成功。本函数是原函数的重载函数,支持通过parent_unique_sql_id值限制hint patch的生效范围,如表1所示。 限制:仅初始用户、sysadmin、opradmin和monadmin用户有权限调用。 表1 DBE_SQL_UTIL.create_hint_sql_patch重载函数入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 unique_sql_id IN bigint 查询全局唯一id。 parent_unique_sql_id IN bigint 标识外层SQL语句的全局唯一id,值为0时表示限制存储过程外语句SQL PATCH生效;非0值表示限制特定存储过程生效。 hint_string IN text Hint文本。 description IN text PATCH的备注,默认值为NULL。 enabled IN bool PATCH是否生效,默认值为true。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • DBE_SQL_UTIL.create_remote_abort_sql_patch create_remote_abort_sql_patch是用于指定CN创建避险SQL PATCH的接口函数,返回执行是否成功,如表1所示。 限制:仅初始用户、sysadmin、opradmin和monadmin用户有权限调用。 表1 DBE_SQL_UTIL.create_remote_abort_sql_patch入参和返回值列表 参数 类型 描述 node_name IN text 目标节点名。 patch_name IN name PATCH名称。 unique_sql_id IN bigint 查询全局唯一id。 description IN text PATCH的备注,默认值为NULL。 enabled IN bool PATCH是否生效,默认值为true。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • DBE_PLDEBUGGER Schema DBE_PLDEBUGGER Schema下的系统函数用于调试存储过程,仅管理员有权限执行这些调试接口,但无修改和创建新函数的权限。目前支持的接口及其描述如下所示。 当在函数体中创建用户时,调用attach、next、continue、info_code、step、info_breakpoint、backtrace、finish中会返回密码的明文。因此不建议用户在函数体中创建用户。 仅支持在CN节点上调试存储过程,并且调试端和被调试端需连接在同一CN节点。 调试端和被调试端需连接在同一database,否则使用函数oid获取函数信息的接口将不可用。 用户在当前会话使用dbe_pldebugger.turn_on函数开启存储过程调试后,当前会话的所有PL/SQL类型存储过程将不能下推至DN节点。因此,请在调试结束后,及时使用dbe_pldebugger.turn_off函数关闭当前会话的存储过程。 不支持直接调试触发器,不支持EXECUTE DIRECT ON将语句下发至DN节点触发调试。 在使用dbe_pldebugger.turn_on函数开启存储过程调试前生成的预编译语句可能无法被调试。 dbe_pldebugger.error_*类型函数,只能在报错断住时才能使用。 当存储过程调试时,如果被调试的存储过程中涉及加锁的操作,请注意在调试端勿执行可能导致死锁的操作。 对应权限角色为gs_role_pldebugger,可以由管理员用户通过如下命令将debugger权限赋权给该用户。 GRANT gs_role_pldebugger to user; 需要有两个客户端连接数据库,一个客户端负责执行调试接口作为debug端,另一个客户端执行调试函数,控制server端存储过程执行。示例如下: 准备调试 通过PG_PROC,查找到待调试存储过程的oid,并执行DBE_PLDEBUGGER.turn_on(oid)。本客户端会作为server端使用。 1 2 3 4 5 6 7 8 9101112131415161718 gaussdb=# CREATE OR REPLACE PROCEDURE test_debug ( IN x INT) AS BEGIN INSERT INTO t1 (a) VALUES (x); DELETE FROM t1 WHERE a = x;END;/CREATE PROCEDUREgaussdb=# SELECT OID FROM PG_PROC WHERE PRONAME='test_debug'; oid------- 16389(1 row)gaussdb=# SELECT * FROM DBE_PLDEBUGGER.turn_on(16389); nodename | port----------+------ datanode | 0(1 row) 开始调试 server端执行存储过程,会在存储过程内第一条SQL语句前hang住,等待debug端发送的调试消息。仅支持直接执行存储过程的调试,不支持通过trigger调用执行的存储过程调试。 1 gaussdb=# call test_debug(1); 再起一个客户端,作为debug端,通过turn_on返回的数据,调用DBE_PLDEBUGGER.attach关联到该存储过程上进行调试。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.attach('datanode',0); funcoid | funcname | lineno | query---------+------------+--------+---------------------------------- 16389 | test_debug | 3 | INSERT INTO t1 (a) VALUES (x);(1 row) 在执行attach的客户端调试,执行下一条statement。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.next(); funcoid | funcname | lineno | query---------+------------+--------+---------------------- 16389 | test_debug | 0 | [EXECUTION FINISHED](1 row) 在执行attach的客户端调试,可以执行以下变量操作。 1 2 3 4 5 6 7 8 9101112131415 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_locals(); --打印全部变量 varname | vartype | value | package_name | isconst---------+---------+-------+--------------+--------- x | int4 | 1 | | f(1 row)gaussdb=# SELECT * FROM DBE_PLDEBUGGER.set_var('x', 2); --变量赋值 set_var--------- t(1 row)gaussdb=# SELECT * FROM DBE_PLDEBUGGER.print_var('x'); --打印单个变量 varname | vartype | value | package_name | isconst---------+---------+-------+--------------+--------- x | int4 | 2 | | f(1 row) 直接执行完成当前正在调试的存储过程。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query---------+------------+--------+---------------------- 16389 | test_debug | 0 | [EXECUTION FINISHED](1 row) 当存储过程报错时,会出现以下提示,此时进入报错断住逻辑。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query---------+------------+--------+------------------------------- 16389 | test_debug | 0 | [EXECUTION HAS ERROR OCCURRED!](1 row) 此时进入报错断住逻辑,可以调用error_info_locals,error_backtrace,error_end,print_var接口查看信息,其他接口不能再使用,需要使用error_end结束当前报错断住。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.error_end(); funcoid | funcname | lineno | query---------+------------+--------+------------------ 16389 | test_debug | 0 | [END HANG ERROR!](1 row) 直接退出当前正在调试的存储过程(报错断住逻辑不可用),不执行尚未执行的语句。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.abort(); abort------- t(1 row) client端查看代码信息并识别可以设置断点行号。 1 2 3 4 5 6 7 8 91011 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_code(16389); lineno | query | canbreak--------+-----------------------------------------------------------+---------- | CREATE OR REPLACE PROCEDURE public.test_debug( IN x INT) | f 1 | AS DECLARE | f 2 | BEGIN | f 3 | INSERT INTO t1 (a) VALUES (x); | t 4 | DELETE FROM t1 WHERE a = x; | t 5 | END; | f 6 | / | f(7 rows) 设置断点。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.add_breakpoint(16389,4); breakpointno -------------- 0(1 row) 查看断点信息。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_breakpoints(); breakpointno | funcoid | lineno | query | enable--------------+---------+--------+---------------------------------+-------- 0 | 16389 | 4 | DELETE FROM t1 WHERE a = x; | t(1 row) 执行至断点。 12345 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query---------+------------+--------+--------------------------------- 16389 | test_debug | 4 | DELETE FROM t1 WHERE a = x;(1 row) 存储过程执行结束后,调试会自动退出,再进行调试需要重新attach关联。如果server端不需要继续调试,可执行turn_off关闭,或退出session。具体调试接口如表1所示。 表1 DBE_PLDEBUGGER 接口名称 描述 DBE_PLDEBUGGER.turn_on server端调用,标记存储过程可以调试,调用后执行该存储过程时会hang住等待调试信息。 DBE_PLDEBUGGER.turn_off server端调用,标记存储过程关闭调试。 DBE_PLDEBUGGER.local_debug_server_info server端调用,打印本session内所有已turn_on的存储过程。 DBE_PLDEBUGGER.attach debug端调用,关联到正在调试存储过程。 DBE_PLDEBUGGER.info_locals debug端调用,打印正在调试的存储过程中的变量当前值。 DBE_PLDEBUGGER.next debug端调用,单步执行。 DBE_PLDEBUGGER.continue debug端调用,继续执行,直到断点或存储过程结束。 DBE_PLDEBUGGER.abort debug端调用,停止调试,server端报错长跳转。 DBE_PLDEBUGGER.print_var debug端调用,打印正在调试的存储过程中指定的变量当前值。 DBE_PLDEBUGGER.info_code debug和server端都可以调用,打印指定存储过程的源语句和各行对应的行号。 DBE_PLDEBUGGER.step debug端调用,单步进入执行。 DBE_PLDEBUGGER.add_breakpoint debug端调用,新增断点。 DBE_PLDEBUGGER.delete_breakpoint debug端调用,删除断点。 DBE_PLDEBUGGER.info_breakpoints debug端调用,查看当前的所有断点。 DBE_PLDEBUGGER.backtrace debug端调用,查看当前的调用栈。 DBE_PLDEBUGGER.enable_breakpoint debug端调用,激活被禁用的断点。 DBE_PLDEBUGGER.disable_breakpoint debug端调用,禁用已激活的断点。 DBE_PLDEBUGGER.finish debug端调用,继续调试,直到断点或返回上一层调用栈。 DBE_PLDEBUGGER.set_var debug端调用,为变量进行赋值操作。 DBE_PLDEBUGGER.turn_on DBE_PLDEBUGGER.turn_off DBE_PLDEBUGGER.local_debug_server_info DBE_PLDEBUGGER.attach DBE_PLDEBUGGER.info_locals DBE_PLDEBUGGER.next DBE_PLDEBUGGER.continue DBE_PLDEBUGGER.abort DBE_PLDEBUGGER.print_var DBE_PLDEBUGGER.info_code DBE_PLDEBUGGER.step DBE_PLDEBUGGER.add_breakpoint DBE_PLDEBUGGER.delete_breakpoint DBE_PLDEBUGGER.info_breakpoints DBE_PLDEBUGGER.backtrace DBE_PLDEBUGGER.enable_breakpoint DBE_PLDEBUGGER.disable_breakpoint DBE_PLDEBUGGER.finish DBE_PLDEBUGGER.set_var DBE_PLDEBUGGER.backtrace DBE_PLDEBUGGER.error_end DBE_PLDEBUGGER.error_info_locals 父主题: Schema
  • DBE_PLDEBUGGER.info_breakpoints debug端调试过程中,调用info_breakpoints,查看当前的函数断点,如表1所示。 表1 info_breakpoints返回值列表 名称 类型 描述 breakpointno OUT integer 断点编号。 funcoid OUT oid 函数id。 lineno OUT integer 行号。 query OUT text 断点内容。 enable OUT boolean 是否有效。 父主题: DBE_PLDEBUGGER Schema
  • DBE_PLDEBUGGER.local_debug_server_info 用于查找当前连接中已经turn_on的存储过程oid。便于用户确认在调试哪些存储过程,需要通过funcoid和pg_proc配合使用,如表1所示。 表1 local_debug_server_info 返回值列表 名称 类型 描述 nodename OUT text 节点名称。 port OUT bigint 端口号。 funcoid OUT oid 存储过程oid。 父主题: DBE_PLDEBUGGER Schema
  • 长查询和长事务调优 长查询或长事务将影响autovacuum对旧版本的清理,数据更新操作产生的旧版本将不能被及时清理。 数据访问时,需要遍历旧版本进行可见性判断,以便确定对当前查询快照可见的版本。长查询或长事务持续的时间越久,不能及时清理的旧版本就越多,对访问性能的影响也越大。极端场景下,例如考察基于较小数据量的索引点查吞吐的场景,旧版本增多将导致吞吐下降明显,性能受损可能在50%以上。 另外,不能及时清理旧版本,也会导致额外的存储空间占用,出现表膨胀、索引膨胀现象,数据访问时,额外的IO增加,也将会对性能产生一定影响。 Astore索引和表数据都采用非原地更新,更新索引键或非索引键,将产生索引旧版本和数据旧版本。Ustore索引采用非原地更新、数据采用原地更新,更新索引键将产生索引旧版本和数据旧版本,更新非索引键只产生数据旧版本。 长查询和长事务对Astore和Ustore的访问性能都会产生影响。 用户在业务实现上,应尽量避免长查询或长事务,可通过访问pg_stat_activity、pg_running_xacts观察系统中是否存在长查询或长事务,然后利用pg_cancel_backend(pid int)、pg_terminate_backend(pid int)函数取消掉长查询或长事务。 父主题: 典型SQL调优点
  • GaussDB 的DROP、TRUNCATE、DELETE这三种删除数据的方式主要区别是什么? 答:DROP、TRUNCATE、DELETE这三种删除方式的区别主要体现在删除的速度和删除的范围上,具体如下: DROP语句的删除速度最快,可以删除整个表,包括表结构、数据、索引和权限。 TRUNCATE语句的删除速度中等,可以删除表中的所有数据,但不删除表结构。 DELETE语句的删除速度最慢,可以根据条件删除表中的数据,但不包括表结构。 父主题: FAQ
  • SQL语言分为哪几类? 答:SQL语言分为3类,分别为: DDL(Data Definition Language,数据定义语言),用于定义或修改数据库中的对象,如:表、索引、视图等。 DML(Data Manipulation Language,数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。 DCL(Data Control Language,数据控制语言),用于设置或更改数据库用户或角色权限。 父主题: FAQ
  • 处理方法 方法1:启动客户端环境中的haveged服务,增加系统熵池熵值以提高读取随机数的速度。启动命令为: systemctl start haveged 方法2:调整客户端jdk配置 打开$JAVA_PATH/jre/lib/security/java.security文件,修改以下两个配置项: securerandom.source=file:/dev/./urandomsecurerandom.strongAlgorithms=NativePRNGNonBlocking:SUN 方法2的本质是在获取强随机数时,使用伪随机数代替,减少需要消耗的熵值。会影响客户端所有使用该jdk的应用,在获取强随机数时会使用伪随机数代替。
  • GS_ LOG ICAL_DICTIONARY GS_LOGICAL_DICTIONARY系统表记录逻辑解码数据字典信息表。 表1 GS_LOGICAL_DICTIONARY字段 字段名称 字段类型 说明 status integer 表示逻辑解码数据字典是否有效可用。 restart_lsn bigint unsigned 预留字段。 restart_lsn_time timestamp with time zone 基线化完成时间。 dictionary_csn_min bigint unsigned 使用的最小版本号。 last_clean_time timestamp with time zone 数据字典表最后一次清理的时间。 last_clean_result bool 数据字典表最后一次清理的结果。 originid integer 元组的来源标识符。 last_flush_csn bigint unsigned 上一次元信息修改的 CS N。 父主题: 逻辑解码
  • GS_LOGICAL_TYPE GS_LOGICAL_TYPE系统表存储数据类型的相关信息。 表1 GS_LOGICAL_TYPE字段 字段名称 字段类型 说明 typname name 类型名称。 typnamespace oid 包含此类型的命名空间的OID。 typlen smallint 该类型值所使用的字节数。 typbyval boolean 该类型的值是按值还是按引用传递。 typtype "char" 表示表的行类型。 typisdefined boolean 表示类型是否被完全定义。 typreceive regproc 二进制格式的接收函数。 typsend regproc 发送函数。 typmodin regproc 用于可选类型修饰符的输入函数。 typmodout regproc 输出函数。 typid oid 类型的OID。 dbnode oid 数据库OID。 originid integer 元组的来源标识符。 createtime timestamp with time zone 插入元组的时间戳。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 父主题: 逻辑解码
  • 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
共100000条