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;