全部產品
Search
文件中心

:查看錶和DB的儲存大小

更新時間:Oct 25, 2024

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;