文档首页/
数据仓库服务 GaussDB(DWS)/
开发指南/
标准数仓开发指南(8.1.3.x)/
GaussDB(DWS)系统表和系统视图/
系统视图/
PGXC_GET_TABLE_SKEWNESS
更新时间:2024-06-29 GMT+08:00
PGXC_GET_TABLE_SKEWNESS
PGXC_GET_TABLE_SKEWNESS视图展示当前库中表的数据分布倾斜情况。需要有系统管理员权限或预置角色gs_role_read_all_stats权限才可以访问此视图。
名称 |
类型 |
描述 |
---|---|---|
schemaname |
name |
表所在的模式名。 |
tablename |
name |
表名。 |
totalsize |
numeric |
表的总大小,单位为Byte。 |
avgsize |
numeric(1000,0) |
表大小平均值(totalsize/DN个数,该值为平均分布的理想情况下,表在各DN占用空间大小)。 |
maxratio |
numeric(10,3) |
单DN表大小最大值占比(表在各DN占用空间的最大值/avgsize)。 |
minratio |
numeric(10,3) |
单DN表大小最小值占比(表在各DN占用空间的最小值/avgsize)。 |
skewsize |
bigint |
表分布倾斜值(单DN表大小最大值 - 单DN表大小最小值)。 |
skewratio |
numeric(10,3) |
表分布倾斜率(skewsize/avgsize)。 |
skewstddev |
numeric(1000,0) |
表分布标准方差(在表大小一定的情况下,该值越大表明表的整体分布情况越倾斜)。 |
应用示例
查询当前数据库中(库中表个数少于1W的场景)所有表的数据倾斜情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT * FROM pgxc_get_table_skewness ORDER BY totalsize DESC; schemaname | tablename | totalsize | avgsize | maxratio | minratio | skewsize | skewratio | skewstddev ------------+-------------------------+-----------+---------+----------+----------+----------+-----------+------------ dbadmin | reason | 147456 | 49152 | .333 | .333 | 0 | 0.000 | 0 tpcds | reason_t2 | 73728 | 24576 | .556 | 0.000 | 40960 | .556 | 21674 dbadmin | reason_bk | 65536 | 21845 | .500 | 0.000 | 32768 | .500 | 18919 tsearch | pgweb | 49152 | 16384 | .333 | .333 | 0 | 0.000 | 0 dbadmin | student | 40960 | 13653 | .400 | .200 | 8192 | .200 | 4730 tsearch | ts_zhparser | 40960 | 13653 | .400 | .200 | 8192 | .200 | 4730 dbms_om | gs_wlm_session_info | 24576 | 8192 | .333 | .333 | 0 | 0.000 | 0 dbms_om | gs_wlm_ec_operator_info | 24576 | 8192 | .333 | .333 | 0 | 0.000 | 0 dbms_om | gs_wlm_operator_info | 24576 | 8192 | .333 | .333 | 0 | 0.000 | 0 (9 rows) |
若数据库中表个数非常多(至少大于1W的场景),因PGXC_GET_TABLE_SKEWNESS涉及全库查并计算非常全面的倾斜字段,所以可能会花费比较长的时间(小时级),建议参考PGXC_GET_TABLE_SKEWNESS视图定义,直接使用table_distribution()函数自定义输出,减少输出列进行计算优化,例如:
1 2 3 4 5 6 |
SELECT schemaname,tablename,max(dnsize) AS maxsize, min(dnsize) AS minsize FROM pg_catalog.pg_class c INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace INNER JOIN pg_catalog.table_distribution() s ON s.schemaname = n.nspname AND s.tablename = c.relname INNER JOIN pg_catalog.pgxc_class x ON c.oid = x.pcrelid AND x.pclocatortype = 'H' GROUP BY schemaname,tablename; |
父主题: 系统视图