檢視資料庫佔用磁碟空間的方法

瀚高PG實驗室發表於2021-10-27
環境
系統平臺: N/A
版本: 6.0,5.6.5,4.5.2,4.3.4.9
詳細資訊

一、通過系統函式查詢


通過系統函式查詢資料庫大小得到的結果僅為資料庫、模式、表等各類邏輯資料物件佔用大小,不包含WAL日誌、審計日誌、資料庫執行日誌等其他部分。

1、檢視全部資料庫大小之和

highgo=# select sum(pg_database_size(datname)) from pg_database;
   sum   
----------
 33227060
(1 row)
highgo=#
highgo=#
highgo=# select pg_size_pretty(sum(pg_database_size(datname))) from pg_database;
 pg_size_pretty
----------------
 32 MB
(1 row)
highgo=# select  sum(pg_database_size(datname)) /1024/1024 as "SIZE M" from pg_database;
       SIZE M       
---------------------
 31.6877937316894531
(1 row)

注:函式pg_database_size()得到的結果單位為位元組,函式pg_size_pretty()得到的結果單位是資料庫認為便於觀看單位,結果不是非常準確,存在四捨五入。


2、檢視某幾個資料庫大小之和,使用過程中將函式內的引數填寫對應資料庫名稱即可。


highgo=# select sum(pg_database_size(pg_database.datname))/1024/1024 as "SIZE M" from pg_database where datname in('highgo','template0'); total_size
------------
   16744602
(1 row)
highgo=# select pg_size_pretty(sum(pg_database_size(pg_database.datname))) as total_size from pg_database where datname in('highgo','template0'); total_size
------------
 16 MB
(1 row)
highgo=# select sum(pg_database_size(pg_database.datname))/1024/1024 as "SIZE M" from pg_database where datname in('highgo','template0');
       SIZE M       
---------------------
 15.9688968658447266
(1 row)



3、檢視單個資料庫大小明細,使用過程中將函式內的引數填寫為對應資料庫名稱即可。

highgo=# SELECT pg_database_size('highgo');
 pg_database_size
------------------
          8576663
(1 row)
highgo=# SELECT pg_size_pretty(pg_database_size('highgo'));
 pg_size_pretty
----------------
 8376 kB
(1 row)
highgo=# SELECT pg_database_size('highgo')/1024/1024 as "SIZE M";
 SIZE M
--------
      8
(1 row)


4、檢視資料庫叢集內各資料庫大小明細

highgo=# select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;
  datname  | pg_size_pretty
-----------+----------------
 highgo    | 8376 kB
 template1 | 7977 kB
 template0 | 7977 kB
 test      | 8120 kB
(4 rows)



二、通過檢視資料庫對應目錄大小確定磁碟使用空間


1、資料集簇佔用大小,包含WAL日誌、資料庫執行日誌等。 如果使用者手動建立過表空間,此種情況下還需要統計該表空間所在目錄的大小,表空間的路徑可通過元命令\db檢視確定。

[highgo@host1 base]$ cd $PGDATA
[highgo@host1 data]$ du -sh
49M .

注:windows環境下找到對應資料夾,滑鼠右鍵檢視大小即可。


2、資料庫各類邏輯物件大小之和,不包含WAL日誌、資料庫執行日誌等,只需檢視base、global兩個資料夾大小。如果使用者手動建立過表空間,此種情況下還需要統計該表空間所在目錄的大小,表空間的路徑可通過元命令\db檢視確定。

[highgo@host1 data]$ du -sk base global  
32616 base
584 global
[highgo@host1 data]$ du -sm base global 
32 base
1 global

注:windows環境下找到對應資料夾,滑鼠右鍵檢視大小即可。


3、單個資料庫大小確定。首先查詢資料庫oid,通過oid確定資料庫存放路徑,檢視該資料夾大小即可,預設存放路徑為$PGDATA/base/oid;如果資料庫使用的是使用者自建的表空間,則資料庫存放路徑為$PGDATA/pg_tblspc/oid


highgo=# select datname,oid from pg_database;
  datname  |  oid 
-----------+-------
 highgo    | 13864
 template1 |     1
 template0 | 13863
 test      | 16444
 tbltest   | 16451
(5 rows)

[highgo@host1 16451]$ cd $PGDATA/base/16444
[highgo@host1 16444]$ du -sm
8 .
[highgo@host1 16444]$ du -sk
8140 .

注:windows環境下找到對應資料夾,滑鼠右鍵檢視大小即可。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2839538/,如需轉載,請註明出處,否則將追究法律責任。

相關文章