欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PostgreSQL如何查看數(shù)據(jù)庫及表中數(shù)據(jù)占用空間大小詳解

 更新時間:2025年02月14日 09:39:14   作者:fuqying  
這篇文章主要介紹了PostgreSQL中用于查看數(shù)據(jù)庫和表空間大小的函數(shù),并提供了每個函數(shù)的詳細說明和應(yīng)用場景,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

1、應(yīng)用場景

場景1:查看數(shù)據(jù)庫占用空間大小

SELECT pg_size_pretty(pg_database_size('database_name'));

場景2:查看每張表占用空間大小

SELECT
    table_schema || '.' || table_name AS table,
    #僅表數(shù)據(jù)
    pg_size_pretty(pg_relation_size(table_schema || '.' || table_name)) AS size
    #表數(shù)據(jù)+索引數(shù)據(jù)
    #pg_size_pretty(pg_total_relation_size(table_schema || '.' || table_name)) AS size
FROM information_schema.tables
WHERE 
    table_schema = 'public'
ORDER BY
    pg_relation_size(table_schema || '.' || table_name) DESC;
    #pg_total_relation_size(table_schema || '.' || table_name) DESC;

查看特定表占用大小, 可用:

#僅表數(shù)據(jù)
SELECT pg_size_pretty(pg_relation_size('schemal_test.table_test'));
#表數(shù)據(jù)+索引數(shù)據(jù)
SELECT pg_size_pretty(pg_total_relation_size('schemal_test.table_test'));

2、PostgreSQL 空間大小知多少

表空間(Table Space)

#查找 postgresql 表空間大小
SELECT pg_size_pretty (pg_tablespace_size ('tablespace_name'));

#所有表空間的名稱和大小
SELECT spcname, pg_size_pretty(pg_tablespace_size(spcname)) as size from pg_tablespace;

數(shù)據(jù)庫(Database)

#查找單個 postgresql 數(shù)據(jù)庫大小
SELECT pg_size_pretty(pg_database_size('db_name'));

#所有數(shù)據(jù)庫的總大小,以易讀的格式顯示
SELECT pg_size_pretty(SUM(pg_database_size(datname))) FROM pg_database;


#查看所有數(shù)據(jù)庫的列表及其大?。ㄒ?GB 為單位),降序
SELECT
	pg_database.datname as db_name,
	pg_database_size(pg_database.datname)/1024/1024/1024 as db_size
FROM pg_database ORDER by db_size DESC;

#或 pg_size_pretty用修飾大小
SELECT
	pg_database.datname as db_name,
	pg_size_pretty(pg_database_size(pg_database.datname)) as db_size
FROM pg_database ORDER by pg_database_size(pg_database.datname) DESC;

#查看所有數(shù)據(jù)庫的名稱、所有者以及它們各自的大小
SELECT 
    db.datname AS db_name,
    pg_catalog.pg_get_userbyid(db.datdba) AS owner,
    CASE
        WHEN pg_catalog.has_database_privilege(db.datname, 'CONNECT') THEN
            pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(db.datname))
        ELSE 'No Access'
    END AS size
FROM pg_catalog.pg_database db
ORDER BY CASE
            WHEN pg_catalog.has_database_privilege(db.datname, 'CONNECT') THEN
                pg_catalog.pg_database_size(db.datname)
        END;

模式(Schema)

#當前模式或任何模式中所有表的大小、表相關(guān)對象的大小以及總表大小
SELECT stats.relname as table_name,
	pg_size_pretty(pg_relation_size(statios.relid)) as table_size,
	pg_size_pretty(pg_total_relation_size(statios.relid) - pg_relation_size(statios.relid)) as external_size,
	pg_size_pretty(pg_total_relation_size(statios.relid)) as total_table_size,
	stats.n_live_tup as live_rows
FROM pg_catalog.pg_statio_user_tables as statios
JOIN pg_stat_user_tables as stats
USING (relname)
WHERE stats.schemaname = 'schema_name'  -- 替換成模式名稱
UNION ALL
SELECT 'TOTAL' as table_name,
   pg_size_pretty(sum(pg_relation_size(statios.relid))) AS table_size,
   pg_size_pretty(sum(pg_total_relation_size(statios.relid) - pg_relation_size(statios.relid))) AS external_size,
   pg_size_pretty(sum(pg_total_relation_size(statios.relid))) AS total_table_size,
   sum(stats.n_live_tup) AS live_rows
FROM pg_catalog.pg_statio_user_tables AS statios
JOIN pg_stat_user_tables AS stats
USING (relname)
WHERE stats.schemaname = 'schema_name'  -- 替換成模式名稱
ORDER BY live_rows ASC;

表(Table-Relation)

#查看postgresql 數(shù)據(jù)庫的單個表大小-不包括依賴項大?。?
SELECT pg_size_pretty(pg_relation_size('schema_test.table_name'));
#SELECT pg_size_pretty(pg_relation_size('table_name'));

#查看postgresql 數(shù)據(jù)庫的單個表大小-包括依賴項大?。?
SELECT pg_size_pretty(pg_total_relation_size('schema_test.table_name'));
#SELECT pg_size_pretty(pg_total_relation_size('table_name'));

#查找當前數(shù)據(jù)庫中每張表大小,包含索引
SELECT 
    table_schema || '.' || table_name as table_name, 
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) as table_size 
FROM information_schema.tables 
ORDER BY 
    pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC

#查找當前數(shù)據(jù)庫中每張表和索引大小,包含索引
SELECT
    table_name,
    pg_size_pretty(pg_table_size(table_name)) as table_size,
    pg_size_pretty(pg_indexes_size(table_name)) as index_size, 
    pg_size_pretty(pg_total_relation_size(table_name)) as total_size
FROM (
    select ('"' || table_schema || '"."' || table_name || '"') as table_name FROM information_schema.tables) as tables
ORDER BY 4 DESC

#查看表大小以及依賴項大小
SELECT schemaname as schema_name,
	relname as table_name,
	pg_size_pretty(pg_total_relation_size(relid)) as table_size,
	pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as external_size
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

#查看所有表的行數(shù)
select relname as table_name, reltuples as rows from pg_class where relkind = ‘r' order by rowCounts desc

索引(Index-Relation)

#postgresql數(shù)據(jù)庫的單個索引大?。?
SELECT pg_size_pretty(pg_indexes_size('index_name'));

#列出數(shù)據(jù)庫中每個索引的大小
SELECT indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes;

列(Column)

#PostgreSQL 列值大小, 要查找存儲特定值需要多少空間,可以使用 pg_column_size() 函數(shù),例如:
select pg_column_size(5::smallint);
select pg_column_size(5::int);
select pg_column_size(5::bigint);
#獲取OID
select * from pg_class where relname='table_name';
select oid, datname from pg_database;

#查看文件地址
select pg_relation_filepath('table_name');

函數(shù)說明

函數(shù)名返回類型描述
pg_column_size(any)int存儲一個指定的數(shù)值需要的字節(jié)數(shù)(可能壓縮過)
pg_database_size(oid)bigint指定OID的數(shù)據(jù)庫使用的磁盤空間
pg_database_size(name)bigint指定名稱的數(shù)據(jù)庫使用的磁盤空間
pg_indexes_size(regclass)bigint關(guān)聯(lián)指定表OID或表名的表索引的使用總磁盤空間
pg_relation_size(relation regclass, fork text)bigint指定OID或名的表或索引,通過指定fork('main', 'fsm' 或'vm')所使用的磁盤空間
pg_relation_size(relation regclass)bigintpg_relation_size(..., 'main')的縮寫
pg_size_pretty(bigint)text把以字節(jié)計算的數(shù)值轉(zhuǎn)換成一個人類易讀的單位
pg_size_pretty(numeric)text把以字節(jié)計算的數(shù)值轉(zhuǎn)換成一個人類易讀的單位
pg_table_size(regclass)bigint指定表OID或表名的表使用的磁盤空間,除去索引(但是包含TOAST,自由空間映射和可視映射)
pg_tablespace_size(oid)bigint指定OID的表空間使用的磁盤空間
pg_tablespace_size(name)bigint指定名稱的表空間使用的磁盤空間
pg_total_relation_size(regclass)bigint指定表OID或表名使用的總磁盤空間,包括所有索引和TOAST數(shù)據(jù)

oid獲取

#獲取數(shù)據(jù)表的OID
select oid,relname from pg_class where relname='table_name';
#獲取數(shù)據(jù)庫的OID
select oid, datname from pg_database;
#獲取數(shù)據(jù)表的文件路徑
select pg_relation_filepath('table_name');

總結(jié) 

到此這篇關(guān)于PostgreSQL如何查看數(shù)據(jù)庫及表中數(shù)據(jù)占用空間大小的文章就介紹到這了,更多相關(guān)PostgreSQL查看數(shù)據(jù)占用空間大小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論