统计信息函数
统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器进程号为参数,其范围从1到当前活跃服务器的数目。
pg_stat_get_db_numbackends(oid)
描述:查询当前实例上指定数据库活跃的服务器线程数目。
返回值类型:integer
pg_stat_get_db_total_numbackends(oid)
描述:在CN上执行该函数,返回集群中所有CN上指定数据库活跃的服务器线程总数。在DN上执行该函数,返回当前实例上指定数据库活跃的服务器线程数目。
返回值类型:integer
pg_stat_get_db_xact_commit(oid)
描述:返回当前实例上指定数据库中已提交事务的数量。
返回值类型:bigint
pg_stat_get_db_total_xact_commit(oid)
描述:在CN上执行该函数,返回集群中所有CN上指定数据库中已提交事务的总数。在DN上执行该函数,返回当前实例上指定数据库中已提交事务的数量。
返回值类型:bigint
pg_stat_get_db_xact_rollback(oid)
描述:返回当前实例上指定数据库中回滚事务的数量。
返回值类型:bigint
pg_stat_get_db_total_xact_rollback(oid)
描述:在CN上执行该函数,返回集群中所有CN上指定数据库中回滚事务的总数。在DN上执行该函数,返回当前实例上指定数据库中回滚事务的数量。
返回值类型:bigint
pg_stat_get_db_blocks_fetched(oid)
描述:返回当前实例上指定数据库中磁盘块抓取请求的数量。
返回值类型:bigint
pg_stat_get_db_total_blocks_fetched(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库中磁盘块抓取请求的总数。在DN上执行该函数,返回当前实例上指定数据库中磁盘块抓取请求的数量。
返回值类型:bigint
pg_stat_get_db_blocks_hit(oid)
描述:返回当前实例上指定数据库在缓冲区中找到的请求磁盘块的数量。
返回值类型:bigint
pg_stat_get_db_total_blocks_hit(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库在缓冲区中找到的请求磁盘块的总数。在DN上执行该函数,返回当前实例上指定数据库在缓冲区中找到的请求磁盘块的数量。
返回值类型:bigint
pg_stat_get_db_tuples_returned(oid)
描述:返回当前实例上指定数据库返回的元祖数量。
返回值类型:bigint
pg_stat_get_db_total_tuples_returned(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库返回的元组总数。在DN上执行该函数,返回当前实例上指定数据库返回的元组数量。
返回值类型:bigint
pg_stat_get_db_tuples_fetched(oid)
描述:返回当前实例上指定数据库中读取的元组数量。
返回值类型:bigint
pg_stat_get_db_total_tuples_fetched(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库读取的元组总数。在DN上执行该函数,返回当前实例上指定数据库读取的元组数量。
返回值类型:bigint
pg_stat_get_db_tuples_inserted(oid)
描述:返回当前实例上指定数据库中插入的元组数量。
返回值类型:bigint
pg_stat_get_db_total_tuples_inserted(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库插入的元组总数。在DN上执行该函数,返回当前实例上指定数据库插入的元组数量。
返回值类型:bigint
pg_stat_get_db_tuples_updated(oid)
描述:返回当前实例上指定数据库中更新的元组数量。
返回值类型:bigint
pg_stat_get_db_total_tuples_updated(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库更新的元组总数。在DN上执行该函数,返回当前实例上指定数据库更新的元组数量。
返回值类型:bigint
pg_stat_get_db_tuples_deleted(oid)
描述:返回当前实例上指定数据库中删除的元组数量。
返回值类型:bigint
pg_stat_get_db_total_tuples_deleted(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库删除的元组总数。在DN上执行该函数,返回当前实例上指定数据库删除的元组数量。
返回值类型:bigint
pg_stat_get_db_conflict_lock(oid)
描述:在CN上执行该函数,返回集群中所有CN和DN上指定数据库锁冲突的总数。在DN上执行该函数,返回当前实例上指定数据库中锁冲突数量。
返回值类型:bigint
pg_stat_get_db_deadlocks(oid)
描述:返回当前实例上指定数据库中死锁的数量。
返回值类型:bigint
pg_stat_get_db_total_deadlocks(oid)
描述:在CN上执行该函数,返回集群中所有CN和DN上指定数据库死锁的总数。在DN上执行该函数,返回当前实例上指定数据库中死锁的数量。
返回值类型:bigint
pg_stat_get_db_conflict_all(oid)
描述:返回当前实例上指定数据库中发生冲突恢复的次数。
返回值类型:bigint
pg_stat_get_db_total_conflict_all(oid)
描述:在CN上执行该函数,返回集群中所有CN和DN上指定数据库发生冲突恢复的总次数。在DN上执行该函数,返回当前实例上指定数据库中发生冲突恢复的次数。
返回值类型:bigint
pg_stat_get_db_temp_files(oid)
描述:返回当前实例上指定数据库中创建临时文件的个数。
返回值类型:bigint
pg_stat_get_db_total_temp_files(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库中创建临时文件的总个数。在DN上执行该函数,返回当前实例上指定数据库中创建临时文件的个数。
返回值类型:bigint
pg_stat_get_db_temp_bytes(oid)
描述:返回当前实例上指定数据库中创建临时文件的字节数。
返回值类型:bigint
pg_stat_get_db_total_temp_bytes(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库中创建临时文件的总字节数。在DN上执行该函数,返回当前实例上指定数据库中创建临时文件的字节数。
返回值类型:bigint
pg_stat_get_db_blk_read_time(oid)
描述:返回当前实例上指定数据库中读数据块所用的时间。
返回值类型:double
pg_stat_get_db_total_blk_read_time(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库中读数据块所用的总时间。在DN上执行该函数,返回当前实例上指定数据库中读数据块所用的时间。
返回值类型:double
pg_stat_get_db_blk_write_time(oid)
描述:返回当前实例上指定数据库中写数据块所用的时间。
返回值类型:double
pg_stat_get_db_total_blk_write_time(oid)
描述:在CN上执行该函数,返回集群中所有DN上指定数据库中写数据块所用的总时间。在DN上执行该函数,返回当前实例上指定数据库中写数据块所用的时间。
返回值类型:double
pg_stat_get_numscans(oid)
描述:如果参数是一个表,则顺序扫描读取的行数目。
如果参数是一个索引,则返回索引行的数目。
返回值类型:bigint
pg_stat_get_tuple()
描述:在CN和DN上均可以执行,该函数仅8.1.3及以上集群版本支持。
函数无参时,查询CN上所有系统表的统计信息及表在每个CN上的脏页率,查询DN上所有系统表和用户表的统计信息和表在每个DN上的脏页率;
函数带入参时,入参是schema和表名,带入参的函数执行时查询单张表的统计信息和脏页率。
该函数的统计信息依赖于ANALYZE,为获取最准确的信息请先对表进行ANALYZE。
返回值类型:record
函数返回字段如下:
名称 |
类型 |
描述 |
---|---|---|
nodename |
text |
节点名。 |
tableid |
oid |
表的OID。 |
partid |
oid |
分区表的分区OID。 |
last_vacuum |
timestamp with time zone |
最后一次手动vacuum时间。 |
last_autovacuum |
timestamp with time zone |
最后一次autovacuum时间。 |
last_analyze |
timestamp with time zone |
最后一次手动analyze时间。 |
last_autoanalyze |
timestamp with time zone |
最后一次autoanalyze时间。 |
vacuum_count |
bigint |
vacuum次数。 |
autovacuum_count |
bigint |
autovacuum次数。 |
analyze_count |
bigint |
analyze次数。 |
autoanalyze_count |
bigint |
autoanalyze_count次数。 |
n_tup_ins |
bigint |
插入的行数。 |
n_tup_upd |
bigint |
更新的行数。 |
n_tup_del |
bigint |
删除的行数。 |
n_tup_hot_upd |
bigint |
HOT更新的行数。 |
n_tup_change |
bigint |
analyze之后改变的行数。 |
n_live_tup |
bigint |
live行估计数。 |
n_dead_tup |
bigint |
dead行估计数。 |
dirty_rate |
bigint |
单节点的脏页率(单CN或单DN级)。 |
last_data_changed |
timestamp with time zone |
记录表最后一次数据变化的时间。 |
pg_stat_get_tuples_returned(oid)
描述:如果参数是一个表,则顺序扫描读取的行数目。
如果参数是一个索引,则返回的索引行的数目。
返回值类型:bigint
pg_stat_get_tuples_fetched(oid)
描述:如果参数是一个表,则位图扫描抓取的行数目。
如果参数是一个索引,则用简单索引扫描抓取的行数目。
返回值类型:bigint
pg_stat_get_tuples_inserted(oid)
描述:插入表中行的数量。
返回值类型:bigint
pg_stat_get_local_tuples_inserted(oid)
描述:当前节点上插入表中行的数量,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_tuples_updated(oid)
描述:在表中已更新行的数量。
返回值类型:bigint
pg_stat_get_local_tuples_updated(oid)
描述:当前节点上在表中已更新行的数量,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_tuples_deleted(oid)
描述:从表中删除行的数量。
返回值类型:bigint
pg_stat_get_local_tuples_deleted(oid)
描述:当前节点上从表中删除行的数量,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_tuples_changed(oid)
描述:在CN上查询该函数,返回该表自上一次analyze或autoanalyze之后插入、更新、删除行的总数量。在DN上查询该函数,返回该表在当前节点上自上一次analyze或autoanalyze之后插入、更新、删除行的总数量。
返回值类型:bigint
pg_stat_get_local_tuples_changed(oid)
描述:该表在当前节点上自从上一次analyze或autoanalyze之后插入、更新、删除行的数量。
返回值类型:bigint
pg_stat_get_tuples_hot_updated(oid)
描述:热更新的行数表。
返回值类型:bigint
pg_stat_get_local_tuples_hot_updated(oid)
描述:当前节点上热更新的行数表,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_live_tuples(oid)
描述:表格的活元组数。
返回值类型:bigint
pg_stat_get_local_live_tuples(oid)
描述:当前节点上表格的活元组数,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_dead_tuples(oid)
描述:表格的死元组数。
返回值类型:bigint
pg_stat_get_local_dead_tuples(oid)
描述:当前节点上表格的死元组数,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_blocks_fetched(oid)
描述:表或者索引的磁盘块抓取请求的数量。
返回值类型:bigint
pg_stat_get_blocks_hit(oid)
描述:在缓冲区中找到的表或者索引的磁盘块请求数目。
返回值类型:bigint
pg_stat_get_partition_tuples_inserted(oid)
描述:插入相应表分区中行的数量。
返回值类型:bigint
pg_stat_get_partition_tuples_updated(oid)
描述:在相应表分区中已更新行的数量。
返回值类型:bigint
pg_stat_get_partition_tuples_deleted(oid)
描述:从相应表分区中删除行的数量。
返回值类型:bigint
pg_stat_get_partition_tuples_changed(oid)
描述:该表分区上一次analyze或autoanalyze之后插入、更新、删除行的总数量。
返回值类型:bigint
pg_stat_get_partition_live_tuples(oid)
描述:活行数表分区。
返回值类型:bigint
pg_stat_get_partition_dead_tuples(oid)
描述:死行数表分区。
返回值类型:bigint
pg_stat_get_xact_tuples_inserted(oid)
描述:表相关的活跃子事务中插入的tuple数。
返回值类型:bigint
pg_stat_get_xact_tuples_deleted(oid)
描述:表相关的活跃子事务中删除的tuple数。
返回值类型:bigint
pg_stat_get_xact_tuples_hot_updated(oid)
描述:表相关的活跃子事务中热更新的tuple数。
返回值类型:bigint
pg_stat_get_xact_tuples_updated(oid)
描述:表相关的活跃子事务中更新的tuple数。
返回值类型:bigint
pg_stat_get_xact_partition_tuples_inserted(oid)
描述:表分区相关的活跃子事务中插入的tuple数。
返回值类型:bigint
pg_stat_get_xact_partition_tuples_deleted(oid)
描述:表分区相关的活跃子事务中删除的tuple数。
返回值类型:bigint
pg_stat_get_xact_partition_tuples_hot_updated(oid)
描述:表分区相关的活跃子事务中热更新的tuple数。
返回值类型:bigint
pg_stat_get_xact_partition_tuples_updated(oid)
描述:表分区相关的活跃子事务中更新的tuple数。
返回值类型:bigint
pg_stat_get_last_vacuum_time(oid)
描述:用户在该表上最后一次手动启动清理或者autovacuum线程启动清理的时间。
返回值类型:timestamptz
pg_stat_get_last_autovacuum_time(oid)
描述:autovacuum守护线程在该表上最后一次启动清理的时间。
返回值类型:timestamptz
pg_stat_get_local_last_autovacuum_time(oid)
描述:当前节点的autovacuum守护线程在该表上最后一次启动清理的时间,该函数仅8.1.2及以上版本支持。
返回值类型:timestamptz
pg_stat_get_vacuum_count(oid)
描述:用户在该表上手动启动清理的次数。
返回值类型:bigint
pg_stat_get_autovacuum_count(oid)
描述:autovacuum守护线程在该表上启动清理的次数。
返回值类型:bigint
pg_stat_get_local_autovacuum_count(oid)
描述:当前节点上的autovacuum守护线程在该表上启动清理的次数,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_last_analyze_time(oid)
描述:用户在该表上最后一次手动启动分析或者autovacuum线程启动分析的时间。
返回值类型:timestamptz
pg_stat_get_last_autoanalyze_time(oid)
描述:autovacuum守护线程在该表上最后一次启动分析的时间。
返回值类型:timestamptz
pg_stat_get_local_last_autoanalyze_time(oid)
描述:当前节点的autovacuum守护线程在该表上最后一次启动分析的时间,该函数仅8.1.2及以上版本支持。
返回值类型:timestamptz
pg_stat_get_analyze_count(oid)
描述:用户在该表上手动启动分析的次数。
返回值类型:bigint
pg_stat_get_autoanalyze_count(oid)
描述:autovacuum守护线程在该表上启动分析的次数。
返回值类型:bigint
pg_stat_get_local_autoanalyze_count(oid)
描述:当前节点的autovacuum守护线程在该表上启动分析的次数,该函数仅8.1.2及以上版本支持。
返回值类型:bigint
pg_stat_get_local_analyze_status(oid)
描述:指定表在当前节点上的是否需要analyze的状态,仅在CN端有意义。该函数仅8.1.2及以上版本支持。
- 如果该表的修改行数超过analyze的阈值(根据autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * reltuples计算,其中reltuples是pg_class中记录的表的估算行数),则返回“Analyze needed”。
- 如果该表的修改行数不超过analyze的阈值,则返回“Analyze not needed”。
返回值类型:text
pg_stat_get_runtime_relstats(oid)
描述:返回轻量化autoanalyze生成的内存表级统计信息。
返回值类型:setof record
pg_stat_get_runtime_attstats(oid)
描述:返回轻量化autoanalyze生成的内存表列级统计信息。
返回值类型:setof record
pg_stat_get_predicate_columns(oid)
描述:返回表收集到的谓词列信息。仅9.1.0.100及以上集群版本支持。
返回值类型:setof smallint
pg_stat_delete_predicate_columns(oid)
描述:清空表的谓词列信息。仅9.1.0.100及以上集群版本支持。
返回值类型:void
pg_total_autovac_tuples(bool)
描述:返回total autovac相关的tuple记录,如nodename,nspname,relname以及各类tuple的IUD信息。
返回值类型:setof record
pg_autovac_status(oid)
描述:返回和autovac状态相关的参数信息,如nodename,nspname,relname,analyze,vacuum设置,analyze/vacuum阈值, analyze/vacuum tuple数等。
返回值类型:setof record
pg_autovac_timeout(oid)
描述:返回某个表做autovac连续超时的次数,表信息非法或node信息异常返回NULL。
返回值类型:bigint
pg_autovac_coordinator(oid)
描述:返回对某个表做autovac的coordinator名字,表信息非法或node信息异常返回NULL。
返回值类型:text
pg_stat_get_all(regclass)
描述:返回表在当前CN上pg_stat_object中对应的tuple记录,包括从databaseid到autovac_vacuum_count共29个字段。入参为表的oid。8.3.0及以上集群版本支持。
返回值类型:setof record
示例:查询当前节点public模式下t1表的最近一次访问时间。
1 2 3 4 5 |
SELECT data_access_timestamp FROM pg_stat_get_all('public.t1'::regclass); data_access_timestamp ------------------------------- 2024-06-27 16:16:26.643132+08 (1 row) |
pgxc_stat_get_all(relnamespace text, relname text)
描述:返回表在所有CN上pg_stat_object中对应的tuple记录,包括从databaseid到autovac_vacuum_count共29个字段。8.3.0及以上集群版本支持。
返回值类型:setof record
示例:查询所有CN上public模式下t1表的最近一次访问时间。
1 2 3 4 5 6 7 |
SELECT relid,data_access_timestamp FROM pgxc_stat_get_all('public','t1'); relid | data_access_timestamp -----------+------------------------------- 2147516676 | 2000-01-01 08:00:00+08 2147516674 | 2000-01-01 08:00:00+08 2147516655 | 2024-06-27 16:16:26.643132+08 (3 rows) |
pgxc_stat_get_last_data_access_timestamp(relnamespace text, relname text)
描述:返回指定表在所有节点中最近一次的访问时间。9.1.0.100及以上集群版本支持。
返回值类型:timestamptz
示例:查询所有节点上public模式下t1表的最近一次访问时间。
1 2 3 4 5 |
SELECT * FROM pgxc_stat_get_last_data_access_timestamp('public','t1'); pgxc_stat_get_last_data_access_timestamp ------------------------------------------ 2024-06-27 16:16:26.643132+08 (1 row) |
pgxc_stat_flush_object_data()
描述:手动执行持久化,每个节点将本地所有库中的所有表的统计信息写入pg_stat_object系统表。统计信息包括pg_stat_object中从databaseid到autovac_vacuum_count共29个字段。只有系统管理员可以执行此函数。9.1.0.100及以上集群版本支持。
返回值类型:boolean
示例:系统管理员用户执行持久化。
1 2 3 4 5 |
SELECT pgxc_stat_flush_object_data(); pgxc_stat_flush_object_data ----------------------------- t (1 row) |
此函数不支持并发执行。
pgxc_get_wlm_session_info_bytime(text, timestamp without time zone, timestamp without time zone, int)
描述:PGXC_WLM_SESSION_INFO视图在统计数据量很大的场景中性能较差,建议使用该函数进行筛选查询。入参分别为:筛选时间列('start_time', 'finish_time'),起始区间时间,结束区间时间,每个CN返回的最大数量。返回值为GS_WLM_SESSION_HISTORY。
返回值类型:setof record
pgxc_get_wlm_current_instance_info(text, int default null)
描述:在CN节点上查询集群各节点当前的资源使用情况,读取内存中还未存到GS_WLM_INSTANCE_HISTORY系统表的数据。入参分别为:节点名称(可以输入ALL、C、D、实例名称),每个节点返回的最大数量。返回值为GS_WLM_INSTANCE_HISTORY。
返回值类型:setof record
pgxc_get_wlm_history_instance_info(text, TIMESTAMP, TIMESTAMP, int default null)
描述:在CN节点上查询集群各节点历史资源使用情况,读取GS_WLM_INSTANCE_HISTORY系统表的数据。入参分别为:节点名称(可以输入ALL、C、D、实例名称),起始区间时间,结束区间时间,每个实例返回的最大数量。返回值为GS_WLM_INSTANCE_HISTORY。
返回值类型:setof record
pg_stat_get_last_data_changed_time(oid)
描述:insert/update/delete, exchange/truncate/drop partition在该表上最后一次操作的时间,PG_STAT_ALL_TABLES视图last_data_changed列的数据是通过该函数求值,在表数量很大的场景中,通过视图获取表数据最后修改时间的性能较差,建议直接使用该函数获取表数据的最后修改时间。
返回值类型:timestamptz
pg_stat_set_last_data_changed_time(oid)
描述:手动设置该表上最后一次insert/update/delete, exchange/truncate/drop partition操作的时间。
返回值类型:void
pg_stat_set_last_data_changed_num(oid)
描述:设置该表上当前节点的历史累计修改计数。
返回值类型:void
pv_session_time()
描述:统计当前节点各会话线程的运行时间信息及各执行阶段所消耗时间。
返回值类型:record
pv_instance_time()
描述:统计当前节点的运行时间信息及各执行阶段所消耗时间。
返回值类型:record
pg_stat_get_activity(integer)
描述:返回一个关于带有特殊PID的后台进程的记录信息,当参数为NULL时,则返回每个活动的后台进程的记录。返回结果是PG_STAT_ACTIVITY视图中的一个子集,不包含connection_info列。
返回值类型:setof record
pg_stat_get_activity_with_conninfo(integer)
描述:返回一个关于带有特殊PID的后台进程的记录信息,当参数为NULL时,则返回每个活动的后台进程的记录。返回结果是PG_STAT_ACTIVITY视图中的一个子集。
返回值类型:setof record
pg_user_iostat(text)
描述:该函数8.1.2版本中已废弃,当前版本查询无效。8.2.0及以上集群版本中可使用PGXC_TOTAL_USER_RESOURCE_INFO视图查询实例上用户实时资源消耗信息。
返回值类型:record
名称 |
类型 |
描述 |
---|---|---|
userid |
oid |
用户ID。 |
min_curr_iops |
int4 |
当前该用户io在各DN中的最小值。 |
max_curr_iops |
int4 |
当前该用户io在各DN中的最大值。 |
min_peak_iops |
int4 |
该用户io峰值中,各DN的最小值。 |
max_peak_iops |
int4 |
该用户io峰值中,各DN的最大值。 |
io_limits |
int4 |
用户指定的资源池所设置的io_limits。 |
io_priority |
text |
该用户所设io_priority。 |
pg_stat_get_function_calls(oid)
描述:函数已被调用次数。
返回值类型:bigint
pg_stat_get_function_total_time(oid)
描述:该函数花费的总挂钟时间,以微秒为单位。包括花费在此函数调用上的时间。
返回值类型:double precision
pg_stat_get_function_self_time(oid)
描述:在当前事务中仅花费在此函数上的时间。不包括花费在调用函数上的时间。
返回值类型:double precision
pg_stat_get_backend_idset()
描述:设置当前活动的服务器进程数(从1到活动服务器进程的数量)。
返回值类型:setofinteger
pg_stat_get_backend_pid(integer)
描述:给定的服务器线程的线程ID。
返回值类型:bigint
1 2 3 4 5 |
SELECT pg_stat_get_backend_pid(1); pg_stat_get_backend_pid ------------------------- 139706243217168 (1 row) |
pg_stat_get_backend_dbid(integer)
描述:连接到给定服务器进程的数据库ID。
返回值类型:oid
pg_stat_get_backend_userid(integer)
描述:给定的服务器进程的用户ID。
返回值类型:oid
pg_stat_get_backend_activity(integer)
描述:给定服务器进程的当前活动查询,仅在调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:text
pg_stat_get_backend_waiting(integer)
描述:如果给定服务器进程在等待某个锁,并且调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才返回真。
返回值类型:boolean
pg_stat_get_backend_activity_start(integer)
描述:给定服务器进程当前正在执行的查询的起始时间,仅在调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:timestampwithtimezone
pg_stat_get_backend_xact_start(integer)
描述:给定服务器进程当前正在执行的事务的开始时间,但只有当前用户是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:timestampwithtimezone
pg_stat_get_backend_start(integer)
描述:给定服务器进程启动的时间,如果当前用户不是系统管理员或被查询的后端的用户,则返回NULL。
返回值类型:timestampwithtimezone
pg_stat_get_backend_client_addr(integer)
描述:连接到给定客户端后端的IP地址。
如果是通过Unix域套接字连接的则返回NULL;如果当前用户不是系统管理员或被查询会话的用户,也返回NULL。
返回值类型:inet
备注:该函数中IP地址作为入参时,需写为不带圆点的格式,例如,192.168.100.128写为192168100128。
pg_stat_get_backend_client_port(integer)
描述:连接到给定客户端后端的TCP端口。
如果是通过Unix域套接字连接的则返回-1;如果当前用户不是系统管理员或被查询会话的用户,也返回NULL。
返回值类型:integer
pg_stat_get_bgwriter_timed_checkpoints()
描述:后台写进程开启定时检查点的时间(因为checkpoint_timeout时间已经过期了)。
返回值类型:bigint
pg_stat_get_bgwriter_requested_checkpoints()
描述:后台写进程开启基于后端请求的检查点的时间,因为已经超过了checkpoint_segments或因为已经执行了CHECKPOINT。
返回值类型:bigint
pg_stat_get_bgwriter_buf_written_checkpoints()
描述:在检查点期间后台写进程写入的缓冲区数目。
返回值类型:bigint
pg_stat_get_bgwriter_buf_written_clean()
描述:为日常清理脏块,后台写进程写入的缓冲区数目。
返回值类型:bigint
pg_stat_get_bgwriter_maxwritten_clean()
描述:后台写进程停止清理扫描的时间,因为已经写入了更多的缓冲区(相比bgwriter_lru_maxpages参数声明的缓冲区数)。
返回值类型:bigint
pg_stat_get_buf_written_backend()
描述:后端进程写入的缓冲区数,因为它们需要分配一个新的缓冲区。
返回值类型:bigint
pg_stat_get_buf_alloc()
描述:分配的总缓冲区数。
返回值类型:bigint
pg_stat_clear_snapshot()
描述:清理当前的统计快照。
返回值类型:void
pg_stat_reset()
描述:为当前数据库重置统计计数器为0(需要系统管理员权限)。
返回值类型:void
pg_stat_reset_shared(text)
描述:重置shared cluster每个节点当前数据统计计数器为0(需要系统管理员权限)。
返回值类型:void
pg_stat_reset_single_table_counters(oid)
描述:为当前数据库中的一个表或索引重置统计为0(需要系统管理员权限)。
返回值类型:void
pg_stat_reset_single_function_counters(oid)
描述:为当前数据库中的一个函数重置统计为0(需要系统管理员权限)。
返回值类型:void
pg_stat_session_cu(int, int, int)
描述:获取当前节点所运行session的CU命中统计信息。
返回值类型:record
gs_get_stat_session_cu(text, int, int, int)
描述:获取集群所有运行session的CU命中统计信息。
返回值类型:record
gs_get_stat_db_cu(text, text, bigint, bigint, bigint)
描述:获取集群一个数据库的CU命中统计信息。
返回值类型:record
pg_stat_get_cu_mem_hit(oid)
描述:获取当前节点当前数据库中一个列存表的CU内存命中次数。
返回值类型:bigint
pg_stat_get_cu_hdd_sync(oid)
描述:获取当前节点当前数据库中一个列存表从磁盘同步读取CU次数。
返回值类型:bigint
pg_stat_get_cu_hdd_asyn(oid)
描述:获取当前节点当前数据库中一个列存表从磁盘异步读取CU次数。
返回值类型:bigint
pg_stat_get_db_cu_mem_hit(oid)
描述:获取当前节点一个数据库CU内存命中次数。
返回值类型:bigint
pg_stat_get_db_cu_hdd_sync(oid)
描述:获取当前节点一个数据库从磁盘同步读取CU次数。
返回值类型:bigint
pg_stat_get_db_cu_hdd_asyn(oid)
描述:获取当前节点一个数据库从磁盘异步读取CU次数。
返回值类型:bigint
pgxc_fenced_udf_process()
描述:查看UDF Master和Work进程数。
返回值类型:record
pgxc_terminate_all_fenced_udf_process()
描述:Kill所有的UDF Work进程。
返回值类型:bool
gs_all_nodegroup_control_group_info(text)
1
|
SELECT * FROM gs_all_nodegroup_control_group_info('installation'); |
返回值类型:record
函数返回字段如下:
名称 |
类型 |
描述 |
---|---|---|
name |
text |
控制组的名称。 |
type |
text |
控制组的类型。 |
gid |
bigint |
控制组ID。 |
classgid |
bigint |
Workload所属Class的控制组ID。 |
class |
text |
Class控制组。 |
workload |
text |
Workload控制组。 |
shares |
bigint |
控制组分配的CPU资源配额。 |
limits |
bigint |
控制组分配的CPU资源限额。 |
wdlevel |
bigint |
Workload控制组层级。 |
cpucores |
text |
控制组使用的CPU核的信息。 |
gs_get_nodegroup_tablecount(name)
描述:得到一个逻辑集群中所有数据库包含的用户表数目。
返回值类型:integer
pgxc_max_datanode_size(name)
描述:得到一个逻辑集群的所有DN节点中数据库文件占用磁盘空间的最大值,单位为字节。
返回值类型:bigint
gs_check_logic_cluster_consistency()
描述:检查当前系统中所有逻辑集群是否存在系统信息不一致的情况,如果返回空记录,表示不存在不一致情况;否则,逻辑集群中CN和DN上的NodeGroup信息存在不一致。该函数应该在非扩缩容重分布时调用。
返回值类型:record
gs_check_tables_distribution()
描述: 检查当前系统中用户表的分布是否存在不一致,如果返回空记录,表示不存在不一致。该函数应该在非扩缩容重分布时调用。
返回值类型:record
pg_stat_bad_block(text, int, int, int, int, int, timestamp with time zone, timestamp with time zone)
描述:获取当前节点自启动后,读取出现Page/CU的损坏信息。
返回值类型:record
pgxc_stat_bad_block(text, int, int, int, int, int, timestamp with time zone, timestamp with time zone)
描述:获取集群所有节点自启动后,读取出现Page/CU的损坏信息。
返回值类型:record
pg_stat_bad_block_clear()
描述:清理节点记录的读取出现的Page/CU损坏信息(需要系统管理员权限)。
返回值类型:void
pgxc_stat_bad_block_clear()
描述:清理集群所有节点记录的读取出现的Page/CU损坏信息(需要系统管理员权限)。
返回值类型:void
gs_respool_exception_info(pool text)
描述:查看某个资源池关联的查询规则信息。
返回值类型:record
gs_control_group_info(pool text)
描述:查看资源池关联的控制组信息
返回值类型:record
返回信息如下:
属性 |
属性值 |
描述 |
---|---|---|
name |
class_a:workload_a1 |
class和workload名称。 |
class |
class_a |
Class控制组名称。 |
workload |
workload_a1 |
Workload控制组名称。 |
type |
DEFWD |
控制组类型(Top、CLASS、BAKWD、DEFWD、TSWD)。 |
gid |
87 |
控制组ID。 |
shares |
30 |
占父节点CPU资源的百分比。 |
limits |
0 |
占父节点CPU核数的百分比。 |
rate |
0 |
Timeshare中的分配比例。 |
cpucores |
0-3 |
CPU核心数。 |
gs_wlm_user_resource_info(name text)
描述:查询具体某个用户的资源限额和资源使用情况。
返回值类型:record
pgxc_stat_single_table(schema, tablename)
描述:在CN上执行,入参为schema和表名。查询单张表在全库中的统计信息及该表在每个DN上的脏页率。
该函数仅8.1.3及以上集群版本支持。
该函数的统计信息依赖于ANALYZE,为获取该表最准确的信息请先对表进行ANALYZE。
返回值类型:record
返回值字段与函数pg_stat_get_tuple()相同。
1 2 3 4 5 6 7 8 |
SELECT * FROM pgxc_stat_single_table('public','t1'); nodename | tableid | partid | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count | n_tup_ins | n_ tup_upd | n_tup_del | n_tup_hot_upd | n_tup_change | n_live_tup | n_dead_tup | dirty_rate | last_data_changed -----------+---------+--------+------------------------+------------------------+-------------------------------+------------------------+--------------+------------------+---------------+-------------------+-----------+--- --------+-----------+---------------+--------------+------------+------------+------------+------------------- datanode1 | 1270075 | | 2000-01-01 08:00:00+08 | 2000-01-01 08:00:00+08 | 2023-01-09 09:38:43.220876+08 | 2000-01-01 08:00:00+08 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | (1 row) |
pgxc_stat_wal_write()
描述:在所有CN上执行,记录各个DN上与CN交互的线程信息,并统计wal日志和数据页导入量及速率。该函数仅8.2.0及以上集群版本支持。
返回值类型:bigint
- node_name:实例名。
- application_name:应用名。
- query_start:当前正在执行语句的起始时间。
- datapage_write:当前query导入的数据页总量,单位为bytes。
- datapage_write_speed:数据页导入速率,单位为bytes/s。
- wal_write:当前query导入的wal日志总量,单位为bytes。
- wal_write_speed:wal导入速率,单位为bytes/s。
- total_datapage_write:当前线程产生数据页总量,单位为bytes。
- total_wal_write:wal总量,单位为bytes。
1 2 3 4 5 6 7 8 9 |
SELECT * FROM pgxc_stat_wal_write(); node_name | datid | pid | lwtid | usesysid | application_name | state | query_start | backend_start | query_id | datapage_write | datapage_write_speed | wal_write | wal_write_speed | total_datapage_write | total_wal_write -----------+-------+-----------------+-------+----------+------------------------+--------+-------------------------------+-------------------------------+-------------------+----------------+----------------------+-----------+-----------------+----------------------+----------------- datanode1 | 15979 | 140328473442048 | 12408 | 10 | CalculateSpaceInfo | active | 2022-11-15 10:39:45.00219+08 | 2022-11-15 10:39:45.000918+08 | 0 | 0 | 0 | 70697 | 0 | 0 | 0 datanode1 | 0 | 140328075503360 | 12510 | 10 | WalSender to Secondary | idle | | 2022-11-15 10:39:46.708557+08 | 0 | 0 | | 210 | 0 | 0 | 0 datanode1 | 15979 | 140327896741632 | 13612 | 10 | coordinator1 | active | 2022-11-15 10:46:32.832548+08 | 2022-11-15 10:40:20.117516+08 | 72620543991349940 | 586579968 | 17425000 | 11743056 | 348000 | 5337505792 | 107245825 datanode1 | 15979 | 140327583217408 | 13614 | 10 | coordinator1 | active | 2022-11-15 10:46:32.832548+08 | | 72620543991349940 | 0 | 0 | 0 | 0 | 0 | 0 datanode1 | 15979 | 140327485175552 | 27914 | 10 | coordinator1 | active | 2022-11-15 10:47:06.493584+08 | 2022-11-15 10:47:06.489062+08 | 72620543991350020 | 0 | 0 | 0 | 0 | 0 | 8675 (5 rows) |
行存不带索引批量导入时,数据页copy导入会产生logical newpage相关的xlog日志,在xlog量大于默认值时同样会触发流控。
pg_stat_wal_write()
描述:在CN或者DN上执行,记录当前实例的线程信息,并统计wal日志和数据页导入量及速率,这里以CN为例。
该函数仅8.2.0及以上集群版本支持。
返回值类型:bigint
- node_name:实例名。
- application_name:应用名。
- query_start:当前正在执行语句的起始时间。
- datapage_write:当前query导入的数据页总量,单位为bytes。
- datapage_write_speed:数据页导入速率,单位为bytes/s。
- wal_write:当前query导入的wal日志总量,单位为bytes。
- wal_write_speed:wal导入速率,单位为bytes/s。
- total_datapage_write:当前线程产生数据页总量,单位为bytes。
- total_wal_write:wal总量,单位为bytes。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
SELECT * FROM pg_stat_wal_write(); node_name | datid | pid | lwtid | usesysid | application_name | state | query_start | backend_start | query_id | datapage_write | datapage_write_speed | wal_write | wal_write_speed | total_datapage_write | total_wal_write --------------+-------+-----------------+-------+----------+--------------------+--------+-------------------------------+-------------------------------+-------------------+----------------+----------------------+-----------+-----------------+----------------------+----------------- coordinator1 | 15979 | 140234153498368 | 25353 | 10 | JobScheduler | active | | 2022-11-15 11:57:54.396347+08 | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 15979 | 140234132027136 | 25354 | 10 | StatCollector | idle | | | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 15979 | 140234090084096 | 25356 | 10 | WDRSnapshot | idle | 2022-11-15 11:57:54.388948+08 | 2022-11-15 11:57:54.403055+08 | 0 | 0 | 0 | 0 | 0 | 0 | 0 coordinator1 | 15979 | 140234027169536 | 25359 | 10 | workload | active | 2022-11-15 11:57:54.404836+08 | 2022-11-15 11:57:54.389259+08 | 72620543991404472 | 0 | 0 | 1722112 | 0 | 0 | 0 coordinator1 | 15979 | 140234004621056 | 25360 | 10 | CalculateSpaceInfo | active | 2022-11-15 11:57:54.405677+08 | 2022-11-15 11:57:54.389847+08 | 72620543991349266 | 0 | 0 | 191326 | 0 | 0 | 0 coordinator1 | 15979 | 140233987839744 | 25361 | 10 | WorkloadMonitor | active | 2022-11-15 11:57:54.406263+08 | 2022-11-15 11:57:54.390373+08 | 72620543991404418 | 0 | 0 | 1183741 | 0 | 0 | 0 coordinator1 | 15979 | 140233971058432 | 25362 | 10 | WLMArbiter | active | 2022-11-15 11:57:54.406367+08 | 2022-11-15 11:57:54.390947+08 | 0 | 0 | 0 | 0 | 0 | 0 | 0 coordinator1 | 15979 | 140233228666624 | 14415 | 10 | gsql | active | 2022-11-15 21:19:32.200305+08 | 2022-11-15 21:09:38.916931+08 | 72620543991404422 | 0 | 0 | 30872 | 1000 | 0 | 0 coordinator1 | 15979 | 140233172035328 | 15516 | 10 | gsql | active | 2022-11-15 21:19:49.7877+08 | 2022-11-15 21:10:13.447312+08 | 72620543991404485 | 0 | 0 | 0 | 0 | 0 | 0 coordinator1 | 0 | 140234245269248 | 25348 | 0 | Background writer | idle | | 2022-11-15 11:57:54.383651+08 | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 0 | 140234291410688 | 25347 | 0 | CheckPointer | idle | | 2022-11-15 11:57:54.383231+08 | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 0 | 140234228487936 | 25349 | 0 | Wal Writer | idle | | 2022-11-15 11:57:54.384069+08 | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 0 | 140234068584192 | 25357 | 0 | TwoPhase Cleaner | idle | | 2022-11-15 11:57:54.388332+08 | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 0 | 140234048657152 | 25358 | 0 | LWLock Monitor | idle | | 2022-11-15 11:57:54.389239+08 | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 0 | 140234194925312 | 25351 | 0 | CBM Writer | idle | | 2022-11-15 11:57:54.38506+08 | 0 | 0 | | 0 | 0 | 0 | 0 coordinator1 | 0 | 140234211706624 | 25350 | 0 | Tick service | idle | | 2022-11-15 11:57:54.384136+08 | 0 | 0 | | 0 | 0 | 0 | 0 (16 rows) |
行存不带索引批量导入时,数据页copy导入会产生logical newpage相关的xlog日志,在xlog量大于默认值时同样会触发流控。
gs_stack()
描述:获取CN或DN进程的堆栈信息,函数入参tid均需要通过视图进行获取,不支持lwtid。该函数仅8.2.1及以上集群版本支持。
gs_stack()提供了比gdb、gstack等命令更灵活的、更快速的堆栈获得手段。仅建议管理员用户在问题分析定位过程中使用,不建议作为日常的监控工具使用。
- tid:线程id。
- lwtid:轻量级线程id。
- stack:tid或lwtid线程对应的堆栈信息。
gs_stack()函数有四种使用方式:
- 方式一:gs_stack(tid)函数入参值为0,表示打印gsql所连接的CN或DN进程内所有线程的堆栈。
- 可通过gsql连接CN或DN执行。
- 获取CN或DN进程内所有线程的运行堆栈,运行时间长,对正常业务运行有影响,不建议频繁使用。
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 44 45 46 47 48 49 50 51 52 53 54 55 56
SELECT * FROM gs_stack(0); tid | lwtid | stack -----------------+-------+------------------------------------------------------------------------------------------------------------------------ 140186894757888 | 95275 | __poll + 0x2d + | | ServerLoop() + 0x457 + | | PmStartupThreads() + 0x151 + | | PostmasterMain(int, char**) + 0x22a + | | main + 0x250 + | | __libc_start_main + 0xf5 + | | 0xb8d2d7 + | | 140185903825152 | 95316 | __poll + 0x2d + | | GsWaiter::wait(void*, long) + 0x11a + | | GsWaiter::wait(void*, int, int, long) + 0x7e + | | SysLoggerMain() + 0x109 + | | SubPostmasterMain(tag_gs_thread_args*) + 0xc9f + | | MainStarterThreadFunc(void*) + 0x6a + | | ThreadStarterFunc(void*) + 0x66 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140185903825528 | 95317 | __poll + 0x2d + | | GsWaiter::wait(void*, long) + 0x11a + | | AlarmCheckerMain() + 0x21b + | | SubPostmasterMain(tag_gs_thread_args*) + 0xcc6 + | | MainStarterThreadFunc(void*) + 0x6a + | | ThreadStarterFunc(void*) + 0x66 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140185903825904 | 95320 | __poll + 0x2d + | | GsWaiter::wait(void*, long) + 0x11a + | | ReaperBackendMain() + 0x1ee + | | SubPostmasterMain(tag_gs_thread_args*) + 0xd6f + | | MainStarterThreadFunc(void*) + 0x6a + | | ThreadStarterFunc(void*) + 0x66 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140185903826656 | 95324 | __poll + 0x2d + | | GsWaiter::wait(void*, long) + 0x11a + | | CheckpointerMain() + 0x8bb + | | AuxiliaryThreadUnderPm(AuxProcType) + 0x210 + | | SubPostmasterMain(tag_gs_thread_args*) + 0x7e0 + | | MainStarterThreadFunc(void*) + 0x6a + | | ThreadStarterFunc(void*) + 0x66 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140185903827032 | 95325 | __poll + 0x2d + | | GsWaiter::wait(void*, long) + 0x11a + | | BackgroundWriterMain() + 0x541 + | | AuxiliaryThreadUnderPm(AuxProcType) + 0x210 + | | SubPostmasterMain(tag_gs_thread_args*) + 0x7e0 + | | MainStarterThreadFunc(void*) + 0x6a + | | ThreadStarterFunc(void*) + 0x66 +
- 方式二:gs_stack(tid)函数入参值为指定的tid,表示打印gsql所连接的CN或DN进程内tid线程的堆栈。
- 可通过gsql连接CN或DN执行。
- tid必须为所连CN或DN进程上存在的线程tid,否则会报错“invalid thread id”。
- tid需通过其他视图获取,不支持lwtid。
- 获取指定CN或DN进程内指定线程的运行堆栈,运行时间短,对正常业务运行无影响,推荐使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
SELECT * FROM gs_stack(140185903826656); tid | lwtid | stack -----------------+-------+------------------------------------------------ 140185903826656 | 95275 | __poll + 0x2d + | | GsWaiter::wait(void*, long) + 0x11a + | | CheckpointerMain() + 0x8bb + | | AuxiliaryThreadUnderPm(AuxProcType) + 0x210 + | | SubPostmasterMain(tag_gs_thread_args*) + 0x7e0+ | | MainStarterThreadFunc(void*) + 0x6a + | | ThreadStarterFunc(void*) + 0x66 + | | start_thread + 0xc5 + | | clone + 0x6d + | | (1 row)
- 方式三:gs_stack('nodename', 0)函数第一个参数值为nodename,第二个参数值为0,表示打印由nodename指定的进程内所有线程的堆栈。
- 底层实现使用了“execute direct on”,因此必须使用gsql连接CN上执行。
- 第一个参数nodename需用单引号包括。
- 获取指定CN或DN进程内所有线程的运行堆栈,运行时间长,对正常业务运行有影响,不建议频繁使用。
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 44 45 46 47 48 49 50 51 52 53 54 55 56
SELECT * FROM gs_stack('datanode2', 0); tid | lwtid | stack -----------------+-------+------------------------------------------------------------------------------------------------------------------------ 140634541242112 | 95442 | do_futex_wait + 0x5f + | | __new_sem_wait_slow + 0x57 + | | sem_timedwait + 0x35 + | | tagBinarySemaphore::timed_wait(int) + 0x4f + | | AuxiliaryThreadMain(void*) + 0x6d + | | LibcommThreadRoutine(void*) + 0x41 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140634549634816 | 95438 | epoll_wait + 0x33 + | | LibcommEpollWait(int, int) + 0x38 + | | RecvDataThreadMain(void*) + 0x8e + | | LibcommThreadRoutine(void*) + 0x41 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140634558027520 | 95432 | epoll_wait + 0x33 + | | LibcommEpollWait(int, int) + 0x38 + | | RecvDataThreadMain(void*) + 0x8e + | | LibcommThreadRoutine(void*) + 0x41 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140634566420224 | 95430 | epoll_wait + 0x33 + | | LibcommEpollWait(int, int) + 0x38 + | | RecvDataThreadMain(void*) + 0x8e + | | LibcommThreadRoutine(void*) + 0x41 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140634589476608 | 95426 | epoll_wait + 0x33 + | | LibcommEpollWait(int, int) + 0x38 + | | RecvDataThreadMain(void*) + 0x8e + | | LibcommThreadRoutine(void*) + 0x41 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140634597869312 | 95424 | do_futex_wait + 0x5f + | | __new_sem_wait_slow + 0x57 + | | sem_timedwait + 0x35 + | | tagBinarySemaphore::timed_wait(int) + 0x4f + | | SendDataWait() + 0x58 + | | SendDataThreadMain(void*) + 0xe4 + | | LibcommThreadRoutine(void*) + 0x41 + | | start_thread + 0xc5 + | | clone + 0x6d + | | 140634606262016 | 95387 | do_futex_wait + 0x5f + | | __new_sem_wait_slow + 0x57 + | | sem_timedwait + 0x35 + | | tagBinarySemaphore::timed_wait(int) + 0x4f + | | SendDataWait() + 0x58 + | | SendDataThreadMain(void*) + 0xe4 +
- 方式四:gs_stack('nodename', 0)函数第一个参数值为nodename,第二个参数值为tid,表示打印由nodename指定的进程内tid线程的堆栈。
- 底层实现使用了“execute direct on”,因此必须gsql连接CN上执行。
- 第一个参数nodename需用单引号包括。
- 第二个参数必须是nodename指定进程内存在的线程,否则会报错“invalid thread id”。
- tid需通过其他视图获取,不支持lwtid。
- 仅获取指定CN或DN进程内指定线程的运行堆栈,运行时间短,对正常业务运行无影响,推荐使用。
1 2 3 4 5 6 7 8 9 10 11
SELECT * FROM gs_stack('datanode2', 140634549634816); tid | lwtid | stack -----------------+-------+------------------------------------ 140634549634816 | 95438 | epoll_wait + 0x33 + | | LibcommEpollWait(int, int) + 0x38 + | | RecvDataThreadMain(void*) + 0x8e + | | LibcommThreadRoutine(void*) + 0x41+ | | start_thread + 0xc5 + | | clone + 0x6d + | | (1 row)
pgxc_get_xlog_stats()
描述:在CN上执行,统计各个DN节点自开机到当前不同xlog类型数量。该函数仅8.3.0及以上集群版本支持。
返回值类型:record
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
node_name |
text |
节点名称。 |
rmgr_name |
text |
xlog主类型。 |
record_info |
text |
xlog info信息。 |
record_count |
bigint |
数量信息。 |
count_pct |
text |
数量占比。 |
record_size |
bigint |
record大小, 单位byte。 |
record_pct |
text |
record大小占比。 |
fpi_size |
bigint |
fpi(full page image)大小,单位byte。 |
fpi_pct |
text |
fpi大小占比。 |
combined_size |
bigint |
xlog总大小,单位byte。 |
combined_pct |
text |
xlog总大小占比。 |
- 该函数只统计DN节点最近一次启动以来,不同类型的xlog数量与大小。
- 该函数统计的xlog的大小未考虑到其写盘时的对齐问题,与实际xlog段文件大小存在部分误差。
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
SELECT * FROM pgxc_get_xlog_stats(); node_name | rmgr_name | record_info | record_count | count_pct | record_size | record_pct | fpi_size | fpi_pct | combined_size | combined _pct -----------+-------------+-------------------------------+--------------+-----------+-------------+------------+----------+---------+---------------+--------- ----- datanode1 | XLOG | checkpoint: shutdown | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | checkpoint: online | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | xlog no-op | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | nextOid | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | xlog switch | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | backup end | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | parameter change | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | restore point | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | full page writes | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | xlog recovery end | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | XLOG | page hint | 1 | 0.12% | 56 | 0.11% | 8192 | 17.92% | 8248 | 8.71% datanode1 | XLOG | xlog fpi | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Transaction | commit | 3 | 0.35% | 246 | 0.50% | 0 | 0.00% | 246 | 0.26% datanode1 | Transaction | prepare | 1 | 0.12% | 469 | 0.96% | 0 | 0.00% | 469 | 0.50% datanode1 | Transaction | abort | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Transaction | commit prepared | 1 | 0.12% | 106 | 0.22% | 0 | 0.00% | 106 | 0.11% datanode1 | Transaction | abort prepared | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Transaction | xid assignment xtop | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Transaction | commit compact | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Storage | file create | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Storage | file truncate | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Storage | vacuum clear file | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | CLOG | zero page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | CLOG | truncate before | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Database | create db | 1 | 0.12% | 50 | 0.10% | 0 | 0.00% | 50 | 0.05% datanode1 | Database | drop db | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Tablespace | create tablespace | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Tablespace | drop tablespace | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Tablespace | relative create | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | MultiXact | zero offsets page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | MultiXact | zero members page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | MultiXact | create multixact | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | RelMap | update relmap | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Standby | AccessExclusive locks | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Standby | xlog running xacts | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Standby | release AccessExclusive locks | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Standby | xlog standby csn | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | freeze | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | clean | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | page upgrade | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | cleanup info | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | visible | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | multi-insert | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | bcm | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | logical newpage rel | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | no repair page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap2 | multi-insert(init) base xid | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap | insert | 280 | 32.67% | 15964 | 32.63% | 14314 | 31.31% | 30278 | 31.99% datanode1 | Heap | delete | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap | update | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap | base shift | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap | hot update | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap | new page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap | lock type | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap | inplace | 2 | 0.23% | 116 | 0.24% | 8164 | 17.86% | 8280 | 8.75% datanode1 | Heap | init page | 2 | 0.23% | 130 | 0.27% | 92 | 0.20% | 222 | 0.23% datanode1 | Heap | insert(init) base xid | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | insert leaf | 562 | 65.58% | 31484 | 64.35% | 13352 | 29.21% | 44836 | 47.37% datanode1 | Btree | insert upper | 1 | 0.12% | 72 | 0.15% | 148 | 0.32% | 220 | 0.23% datanode1 | Btree | insert meta | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | split left | 1 | 0.12% | 78 | 0.16% | 744 | 1.63% | 822 | 0.87% datanode1 | Btree | split right | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | split left root | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | split right root | 1 | 0.12% | 78 | 0.16% | 672 | 1.47% | 750 | 0.79% datanode1 | Btree | delete | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | delete page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | delete page meta | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | lev | 1 | 0.12% | 78 | 0.16% | 40 | 0.09% | 118 | 0.12% datanode1 | Btree | delete page half | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | vacuum | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Btree | reuse page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Create index | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Create ptree | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Insert item | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Page split | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Vacuum page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Delete page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Update metapage | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Insert new list page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Delete list pages | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gin | Vacuum data leaf page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gist | page update | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gist | page split | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gist | Create index | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Gist | page delete | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Sequence | log | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | create index | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | add leaf to page | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | move leafs | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | add node | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | prefix off | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | picksplit | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | vacuum leaf | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | vacuum root | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | SPGist | newest XID | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Slot | create slot | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Slot | advance slot | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Slot | drop slot | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Slot | check slot | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap3 | new cid | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Heap3 | heap rewrite | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% datanode1 | Barrier | barrier | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% | 0 | 0.00% (102 rows) |
pgxc_get_wal_speed()
描述:在CN上执行,获取每一个DN实例的wal生成速率以及备DN receive、write、flush、redo速率。该函数仅8.3.0及以上集群版本支持。
返回值类型:record
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
node_name |
text |
节点名称。 |
pid |
bigint |
线程PID号。 |
local_role |
text |
当前节点role。 |
peer_role |
text |
接收方role。 |
peer_state |
text |
接收方状态。 |
state |
text |
传输状态。 |
generate_speed |
bigint |
主DNwal生成速率,单位为byte/s。 |
receive_speed |
bigint |
备DN接受速率,单位为byte/s。 |
write_speed |
bigint |
备DN write速率,单位为byte/s。 |
flush_speed |
bigint |
备DN刷盘速率,单位为byte/s。 |
redo_speed |
bigint |
备DN redo速率,单位为byte/s。 |
1 2 3 4 5 6 |
SELECT * FROM pgxc_get_wal_speed(); node_name | pid | local_role | peer_role | peer_state | state | generate_speed | receive_speed | write_speed | flush_speed | apply_speed -----------+-----------------+------------+-----------+------------+-----------+----------------+---------------+-------------+-------------+------------- datanode1 | 140240389260824 | Primary | Secondary | Normal | Streaming | 0 | 0 | 0 | 0 | 0 datanode1 | 140240389262192 | Primary | Standby | Normal | Streaming | 0 | 0 | 0 | 0 | 0 (2 rows) |
pg_xlog_display_one_lsn(start_lsn)
描述:可以在CN或者DN上执行,根据起始LSN号完整解析当前位置的xlog。该函数仅8.3.0及以上集群版本支持。
入参:start_lsn,表示起始LSN。需要保证输入的起始LSN号是一条xlog的开始处。
返回值类型:record
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
node_name |
text |
当前实例名。 |
start_lsn |
text |
设定的起始LSN。 |
end_lsn |
text |
设定的终止LSN。 |
startlsn |
text |
xlog起始LSN。 |
endlsn |
text |
xlog终止LSN。 |
prelsn |
text |
前一条xlog起始LSN。 |
xid |
xid |
xlog事务ID号。 |
datalen |
int4 |
xlog数据长度,单位为byte。 |
totallen |
int4 |
xlog长度,单位为byte。 |
type |
text |
xlog类型。 |
desc |
text |
xlog内容。 |
blkref |
text |
xlog关联的relfilenode。 |
示例:
1 2 3 4 5 6 7 8 |
SELECT * FROM pg_xlog_display_one_lsn('0/101CA00'); node_name | startlsn | endlsn | prelsn | xlog_tid | datalen | totallen | xlogtype | xlogdescribe | blkref -----------+-----------+-----------+-----------+----------+---------+----------+-------------+------------------------------------------------------------------------- ----------+-------- datanode1 | 0/101CA00 | 0/101CA78 | 0/101C3F8 | 5 | 80 | 114 | Transaction | commit: 2023-10-19 22:21:38.617092+08; csn:0; inval msgs: catcache 11 ca tcache 10 | (1 row) |
pg_xlogdump (tablename)
描述:在CN或者DN上执行,根据表名解析xlog文件并过滤。该函数仅8.3.0及以上集群版本支持。
返回值类型:record
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
node_name |
text |
节点名称。 |
start_lsn |
text |
设定的起始LSN。 |
end_lsn |
text |
设定的终止LSN。 |
startlsn |
text |
xlog起始LSN。 |
endlsn |
text |
xlog终止LSN。 |
prelsn |
text |
前一条xlog起始LSN。 |
xid |
xid |
xlog事务ID号。 |
datalen |
int4 |
xlog数据长度,单位为byte。 |
totallen |
int4 |
xlog长度,单位为byte。 |
type |
text |
xlog类型。 |
desc |
text |
xlog内容。 |
blkref |
text |
xlog关联的relfilenode。 |
- 由于不同xlog类型xlogdescribe字段的长度不一致,pg_xlogdump()函数会对该字段进行裁剪,仅保留前64个字节。
- 可以找到目标xlog后结合pg_xlog_display_one_lsn()函数查看完整xlog内容。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
SELECT * FROM pg_xlogdump(pg_class); node_name | startlsn | endlsn | prelsn | xlog_tid | datalen | totallen | xlogtype | xlogdescribe | blkref -----------+-----------+-----------+-----------+----------+---------+----------+----------+-----------------+--------------------------------------------------- datanode1 | 0/2DFC660 | 0/2DFE1D0 | 0/2DFA610 | 0 | 2 | 7000 | Heap | inplace: off 17 | blkrel #0: rel 1663/16324/15920, fork main, blk 2 datanode1 | 0/2E02270 | 0/2E02D88 | 0/2E00220 | 0 | 2 | 2840 | Heap | inplace: off 2 | blkrel #0: rel 1663/16324/15920, fork main, blk 0 datanode1 | 0/2E06E60 | 0/2E06F68 | 0/2E06E28 | 0 | 2 | 264 | Heap | inplace: off 10 | blkrel #0: rel 1663/16324/15920, fork main, blk 0 datanode1 | 0/2E0FC08 | 0/2E0FD10 | 0/2E0EBB8 | 0 | 2 | 264 | Heap | inplace: off 13 | blkrel #0: rel 1663/16324/15920, fork main, blk 0 datanode1 | 0/2E12960 | 0/2E12A68 | 0/2E11960 | 0 | 2 | 264 | Heap | inplace: off 15 | blkrel #0: rel 1663/16324/15920, fork main, blk 0 datanode1 | 0/2E12C88 | 0/2E12D90 | 0/2E12B78 | 0 | 2 | 264 | Heap | inplace: off 17 | blkrel #0: rel 1663/16324/15920, fork main, blk 0 datanode1 | 0/2E13FF8 | 0/2E14118 | 0/2E13110 | 0 | 2 | 264 | Heap | inplace: off 18 | blkrel #0: rel 1663/16324/15920, fork main, blk 0 datanode1 | 0/2E169F8 | 0/2E185E0 | 0/2E169B0 | 0 | 2 | 7120 | Heap | inplace: off 1 | blkrel #0: rel 1663/16324/15920, fork main, blk 1 datanode1 | 0/2E188B8 | 0/2E189D0 | 0/2E185E0 | 0 | 2 | 280 | Heap | inplace: off 2 | blkrel #0: rel 1663/16324/15920, fork main, blk 1 datanode1 | 0/2E18BF8 | 0/2E18CE0 | 0/2E189D0 | 0 | 2 | 232 | Heap | inplace: off 28 | blkrel #0: rel 1663/16324/15920, fork main, blk 1 datanode1 | 0/2E18E80 | 0/2E18F88 | 0/2E18DC0 | 0 | 2 | 264 | Heap | inplace: off 4 | blkrel #0: rel 1663/16324/15920, fork main, blk 1 datanode1 | 0/2E19160 | 0/2E19268 | 0/2E19088 | 0 | 2 | 264 | Heap | inplace: off 5 | blkrel #0: rel 1663/16324/15920, fork main, blk 1 datanode1 | 0/2E19460 | 0/2E1B1D0 | 0/2E19388 | 0 | 2 | 7508 | Heap | inplace: off 16 | blkrel #0: rel 1663/16324/15920, fork main, blk 6 datanode1 | 0/2E1B1D0 | 0/2E1B2E8 | 0/2E19460 | 0 | 2 | 280 | Heap | inplace: off 18 | blkrel #0: rel 1663/16324/15920, fork main, blk 6 datanode1 | 0/2E1B2E8 | 0/2E1B3D0 | 0/2E1B1D0 | 0 | 2 | 232 | Heap | inplace: off 30 | blkrel #0: rel 1663/16324/15920, fork main, blk 1 (15 rows) |
pg_xlogdump (xid)
描述:可以在CN或者DN上执行,根据事务id号解析xlog文件并过滤。该函数仅8.3.0及以上集群版本支持。
返回值类型:record
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
node_name |
text |
节点名称。 |
start_lsn |
text |
设定的起始LSN。 |
end_lsn |
text |
设定的终止LSN。 |
startlsn |
text |
xlog起始LSN。 |
endlsn |
text |
xlog终止LSN。 |
prelsn |
text |
前一条xlog起始LSN。 |
xid |
xid |
xlog事务ID号。 |
datalen |
int4 |
xlog数据长度,单位为byte。 |
totallen |
int4 |
xlog长度,单位为byte。 |
type |
text |
xlog类型。 |
desc |
text |
xlog内容。 |
blkref |
text |
xlog关联的relfilenode。 |
- 由于不同xlog类型xlogdescribe字段的长度不一致,pg_xlogdump()函数会对该字段进行裁剪,仅保留前64个字节。
- 可以找到目标xlog后结合pg_xlog_display_one_lsn()函数查看完整xlog内容。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
SELECT * FROM pg_xlogdump(1); node_name | startlsn | endlsn | prelsn | xlog_tid | datalen | totallen | xlogtype | xlogdescribe | blkref -----------+-----------+-----------+-----------+----------+---------+----------+----------+----------------+--------------------------------------------- datanode1 | 0/10000A0 | 0/10020F0 | 0/1000028 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/1255, fork fsm, blk 2 datanode1 | 0/10020F0 | 0/1004140 | 0/10000A0 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/1247, fork fsm, blk 2 datanode1 | 0/1004140 | 0/1004168 | 0/10020F0 | 1 | 4 | 38 | XLOG | nextOid: 18192 | datanode1 | 0/1004168 | 0/10061B8 | 0/1004140 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/2616, fork fsm, blk 2 datanode1 | 0/10061B8 | 0/1008208 | 0/1004168 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/2602, fork fsm, blk 2 datanode1 | 0/1008208 | 0/100A258 | 0/10061B8 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/2603, fork fsm, blk 2 datanode1 | 0/100A258 | 0/100C2A8 | 0/1008208 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/2609, fork fsm, blk 2 datanode1 | 0/100C2A8 | 0/100E2F8 | 0/100A258 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/2605, fork fsm, blk 2 datanode1 | 0/100E2F8 | 0/1010348 | 0/100C2A8 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/1259, fork fsm, blk 2 datanode1 | 0/1010348 | 0/1012398 | 0/100E2F8 | 1 | 0 | 8248 | XLOG | page hint | blkrel #0: rel 1663/1/2610, fork fsm, blk 2 (10 rows) |
pg_xlogdump (start_lsn, end_lsn)
描述:可以在CN或者DN上执行,根据起始和终止lsn解析xlog文件。该函数仅8.3.0及以上集群版本支持。
入参:start_lsn,表示设定的起始LSN号;end_lsn,表示设定的终止LSN号。无需保证起始LSN号是一条xlog的起始位置,会从起始LSN号后第一条有效的xlog开始解析。
返回值类型:record
返回信息如下:
字段名称 |
类型 |
含义 |
---|---|---|
node_name |
text |
节点名称。 |
start_lsn |
text |
设定的起始LSN。 |
end_lsn |
text |
设定的终止LSN。 |
startlsn |
text |
xlog起始LSN。 |
endlsn |
text |
xlog终止LSN。 |
prelsn |
text |
前一条xlog起始LSN。 |
xid |
xid |
xlog事务ID号。 |
datalen |
int4 |
xlog数据长度,单位为byte。 |
totallen |
int4 |
xlog长度,单位为byte。 |
type |
text |
xlog类型。 |
desc |
text |
xlog内容。 |
blkref |
text |
xlog关联的relfilenode。 |
- 由于不同xlog类型xlogdescribe字段的长度不一致,pg_xlogdump()函数会对该字段进行裁剪,仅保留前64个字节。
- 可以找到目标xlog后结合pg_xlog_display_one_lsn()函数查看完整xlog内容。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
SELECT * FROM pg_xlogdump('0/101EF70','0/101F590'); node_name | startlsn | endlsn | prelsn | xlog_tid | datalen | totallen | xlogtype | xlogdescribe | blkref -----------+-----------+-----------+-----------+----------+---------+----------+----------+-----------------------+---------------------------------------------- datanode1 | 0/101EF70 | 0/101EFC0 | 0/101EF18 | 6 | 2 | 80 | Btree | insert leaf: off 1 | blkrel #0: rel 1663/1/2674, fork main, blk 1 datanode1 | 0/101EFC0 | 0/101F018 | 0/101EF70 | 6 | 3 | 88 | Heap | insert: off 2 flags 0 | blkrel #0: rel 1663/1/2608, fork main, blk 0 datanode1 | 0/101F018 | 0/101F068 | 0/101EFC0 | 6 | 2 | 80 | Btree | insert leaf: off 1 | blkrel #0: rel 1663/1/2673, fork main, blk 1 datanode1 | 0/101F068 | 0/101F0B8 | 0/101F018 | 6 | 2 | 80 | Btree | insert leaf: off 2 | blkrel #0: rel 1663/1/2674, fork main, blk 1 datanode1 | 0/101F0B8 | 0/101F110 | 0/101F068 | 6 | 3 | 88 | Heap | insert: off 3 flags 0 | blkrel #0: rel 1663/1/2608, fork main, blk 0 datanode1 | 0/101F110 | 0/101F160 | 0/101F0B8 | 6 | 2 | 80 | Btree | insert leaf: off 1 | blkrel #0: rel 1663/1/2673, fork main, blk 1 datanode1 | 0/101F160 | 0/101F1B0 | 0/101F110 | 6 | 2 | 80 | Btree | insert leaf: off 3 | blkrel #0: rel 1663/1/2674, fork main, blk 1 datanode1 | 0/101F1B0 | 0/101F208 | 0/101F160 | 6 | 3 | 88 | Heap | insert: off 4 flags 0 | blkrel #0: rel 1663/1/2608, fork main, blk 0 datanode1 | 0/101F208 | 0/101F258 | 0/101F1B0 | 6 | 2 | 80 | Btree | insert leaf: off 1 | blkrel #0: rel 1663/1/2673, fork main, blk 1 datanode1 | 0/101F258 | 0/101F2A8 | 0/101F208 | 6 | 2 | 80 | Btree | insert leaf: off 4 | blkrel #0: rel 1663/1/2674, fork main, blk 1 datanode1 | 0/101F2A8 | 0/101F300 | 0/101F258 | 6 | 3 | 88 | Heap | insert: off 5 flags 0 | blkrel #0: rel 1663/1/2608, fork main, blk 0 datanode1 | 0/101F300 | 0/101F350 | 0/101F2A8 | 6 | 2 | 80 | Btree | insert leaf: off 1 | blkrel #0: rel 1663/1/2673, fork main, blk 1 datanode1 | 0/101F350 | 0/101F3A0 | 0/101F300 | 6 | 2 | 80 | Btree | insert leaf: off 5 | blkrel #0: rel 1663/1/2674, fork main, blk 1 datanode1 | 0/101F3A0 | 0/101F3F8 | 0/101F350 | 6 | 3 | 88 | Heap | insert: off 6 flags 0 | blkrel #0: rel 1663/1/2608, fork main, blk 0 datanode1 | 0/101F3F8 | 0/101F448 | 0/101F3A0 | 6 | 2 | 80 | Btree | insert leaf: off 1 | blkrel #0: rel 1663/1/2673, fork main, blk 1 datanode1 | 0/101F448 | 0/101F498 | 0/101F3F8 | 6 | 2 | 80 | Btree | insert leaf: off 5 | blkrel #0: rel 1663/1/2674, fork main, blk 1 datanode1 | 0/101F498 | 0/101F4F0 | 0/101F448 | 6 | 3 | 88 | Heap | insert: off 7 flags 0 | blkrel #0: rel 1663/1/2608, fork main, blk 0 datanode1 | 0/101F4F0 | 0/101F540 | 0/101F498 | 6 | 2 | 80 | Btree | insert leaf: off 1 | blkrel #0: rel 1663/1/2673, fork main, blk 1 datanode1 | 0/101F540 | 0/101F590 | 0/101F4F0 | 6 | 2 | 80 | Btree | insert leaf: off 6 | blkrel #0: rel 1663/1/2674, fork main, blk 1 (19 rows) |