Hologres兼容PostgreSQL,當前支持查看表或者DB的存儲大小。本文將會為您介紹如何使用SQL語句查看表和DB的存儲大小。
使用限制
僅支持查看內部表的存儲規格大小,不支持直接查看分區父表(查看分區父表返回結果是0),需要指定分區子表進行查看。如果查詢到表的規格大小是0,則返回空值。
僅Hologres V1.3.24及以上版本支持使用
pg_relation_size
函數查看已經開啟Hologres Binlog表的Binlog存儲量。pg_relation_size
函數統計的是表的存儲量,監控指標采集的是實例在整個Pangu目錄的文件存儲量,Pangu文件包括表的存儲量、元數據文件以及因寫入、更新、刪除產生的臨時文件等,因此監控指標的存儲量會稍微多于使用pg_relation_size
函數查詢的結果。
查看表的存儲大小
函數語法
SELECT pg_relation_size('table_name');--返回單位是Byte
參數說明
參數
說明
table_name
表示待查詢的當前數據庫下的表名稱。
返回值:返回值的單位是 Byte,類型為字符串。返回的數據為該表此刻的內存所占空間和物理磁盤空間。
如果您需要提高可讀性,可以使用pg_size_pretty函數進行查詢,具體語法如下:
--查看單表存儲 SELECT pg_size_pretty(pg_relation_size('table_name')); --查看所有表大小 SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))) AS table_size, pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name)) AS order_size FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog','information_schema','hologres') ORDER BY order_size DESC;
查看Schema存儲大小
使用說明
您可以通過執行SQL語句查看對應schema下面的所有表的大小。
函數語法
SELECT table_schema, pg_size_pretty(SUM(pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))::decimal)) AS schema_size FROM information_schema.tables WHERE table_schema = '<schema_name>' GROUP BY table_schema;
參數說明
參數
說明
schema_name
表示當前表所對應的schema名稱。
返回值:返回值的單位是 Byte。
查看DB的存儲大小
使用說明
僅支持查看當前連接DB和該DB下內部表的存儲規格大小。
函數語法
SELECT pg_database_size(current_database()); --返回單位是Byte
參數說明
參數
說明
current_database
指代當前DB。您無需替換參數,直接執行函數命令語句即可查詢當前DB的存儲規格大小。
返回值:返回值的單位是Byte。返回的數據為指定DB下面所有Hologres表的大小和DB下面產生的WAL(Write-Ahead Log)日志大小。
如果您需要提高可讀性,可以使用pg_size_pretty函數進行查詢,具體語法如下:
SELECT pg_size_pretty(pg_database_size(current_database())); --返回單位是KB或者MB等單位
查看表存儲明細
Hologres從V2.1版本開始,支持通過hologres.hg_relation_size
函數查看表的明細存儲,包括數據、Binlog等存儲明細。
使用限制
僅V2.1及以上版本Hologres實例支持使用
hologres.hg_relation_size
函數。函數語法
SELECT hologres.hg_relation_size('<schema.table>','[data|binlog|mv|all]') ;
參數說明
參數
說明
schema.table
表的Schema名稱和表名稱。
[data|binlog|mv|all]
可選參數,其中:
data:表數據的存儲大小。
binlog:表Binlog的存儲大小。
mv:如果為該表創建了物化視圖,代表物化視圖占用的存儲大小。
all:表的總存儲量。
使用示例
示例1:查看單表的數據存儲。
SELECT hologres.hg_relation_size('<schema.table>','data') ;
示例2:查看單表的Binlog存儲大小。
SELECT hologres.hg_relation_size('<schema.table>','binlog') ;
示例3:查看數據庫下所有表的存儲大小。
SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(hologres.hg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name),'data')) AS data_size, hologres.hg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name),'data') AS order_size FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog','information_schema','hologres','hologres_statistic') ORDER BY order_size DESC;