查詢 PostgreSQL 表及其索引的磁碟大小
Shihab Sikder
2023年1月30日
本文將討論如何找到 PostgreSQL 表及其索引的磁碟大小。
使用 PSQL 查詢 PostgreSQL 表和資料庫的磁碟大小
你可以使用 \l+
檢視資料庫大小,使用 \d+
顯示錶大小。但在此之前,你需要登入資料庫執行查詢。
以下是在 Postgres 中顯示錶和資料庫大小的命令和輸出:
postgres=# \l+
輸出:
postgres-# \d+
List of relations
Schema | Name | Type | Owner | Persistence | Access method | Size | Description
--------+------------------+----------+----------+-------------+---------------+------------+-------------
public | book_lends | table | postgres | permanent | heap | 16 kB |
public | books | table | postgres | permanent | heap | 16 kB |
public | employee | table | postgres | permanent | heap | 16 kB |
public | employee_id_seq | sequence | postgres | permanent | | 8192 bytes |
public | events | table | postgres | permanent | heap | 16 kB |
public | mock_data | table | postgres | permanent | heap | 48 kB |
public | product | table | postgres | permanent | heap | 16 kB |
public | product_id_seq | sequence | postgres | permanent | | 8192 bytes |
public | products | table | postgres | permanent | heap | 16 kB |
public | products_id_seq | sequence | postgres | permanent | | 8192 bytes |
public | prroducts | table | postgres | permanent | heap | 8192 bytes |
public | prroducts_id_seq | sequence | postgres | permanent | | 8192 bytes |
public | stores | table | postgres | permanent | heap | 16 kB |
public | stores_id_seq | sequence | postgres | permanent | | 8192 bytes |
public | users | table | postgres | permanent | heap | 16 kB |
(15 rows)
這裡它顯示了我們在 Postgres 資料庫中的所有表及其名稱、型別、所有者、大小、訪問方法等。
查詢資料庫中最大表的大小
這是 Postgres 官方編寫的程式碼片段,用於按降序顯示錶格大小。
SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
AND C.relkind <> 'i'
AND nspname !~ '^pg_toast'
ORDER BY pg_total_relation_size(C.oid) DESC
LIMIT 10;
輸出:
relation | total_size
-------------------+------------
public.mock_data | 48 kB
public.product | 32 kB
public.products | 32 kB
public.books | 32 kB
public.book_lends | 32 kB
public.employee | 32 kB
public.stores | 32 kB
public.users | 32 kB
public.events | 16 kB
public.prroducts | 16 kB
(10 rows)
我們在資料庫中的 postgres
下搜尋了 10 個最大的表。
你可以點選以下 link 瞭解更多關於 Postgres 中磁碟大小的查詢。你將找到用於查詢最大叢集、最大關係、分割槽表等的 SQL 查詢。
這裡更多關於資料庫大小的函式。
作者: Shihab Sikder