PostgreSQL如何查看數(shù)據(jù)庫(kù)及表中數(shù)據(jù)占用空間大小詳解
1、應(yīng)用場(chǎng)景
場(chǎng)景1:查看數(shù)據(jù)庫(kù)占用空間大小
SELECT pg_size_pretty(pg_database_size('database_name'));
場(chǎng)景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')); #所有表空間的名稱(chēng)和大小 SELECT spcname, pg_size_pretty(pg_tablespace_size(spcname)) as size from pg_tablespace;
數(shù)據(jù)庫(kù)(Database)
#查找單個(gè) postgresql 數(shù)據(jù)庫(kù)大小 SELECT pg_size_pretty(pg_database_size('db_name')); #所有數(shù)據(jù)庫(kù)的總大小,以易讀的格式顯示 SELECT pg_size_pretty(SUM(pg_database_size(datname))) FROM pg_database; #查看所有數(shù)據(jù)庫(kù)的列表及其大?。ㄒ?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ù)庫(kù)的名稱(chēng)、所有者以及它們各自的大小 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)
#當(dāng)前模式或任何模式中所有表的大小、表相關(guān)對(duì)象的大小以及總表大小 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' -- 替換成模式名稱(chēng) 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' -- 替換成模式名稱(chēng) ORDER BY live_rows ASC;
表(Table-Relation)
#查看postgresql 數(shù)據(jù)庫(kù)的單個(gè)表大小-不包括依賴(lài)項(xiàng)大小: SELECT pg_size_pretty(pg_relation_size('schema_test.table_name')); #SELECT pg_size_pretty(pg_relation_size('table_name')); #查看postgresql 數(shù)據(jù)庫(kù)的單個(gè)表大小-包括依賴(lài)項(xiàng)大?。? SELECT pg_size_pretty(pg_total_relation_size('schema_test.table_name')); #SELECT pg_size_pretty(pg_total_relation_size('table_name')); #查找當(dāng)前數(shù)據(jù)庫(kù)中每張表大小,包含索引 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 #查找當(dāng)前數(shù)據(jù)庫(kù)中每張表和索引大小,包含索引 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 #查看表大小以及依賴(lài)項(xiàng)大小 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ù)庫(kù)的單個(gè)索引大?。? SELECT pg_size_pretty(pg_indexes_size('index_name')); #列出數(shù)據(jù)庫(kù)中每個(gè)索引的大小 SELECT indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes;
列(Column)
#PostgreSQL 列值大小, 要查找存儲(chǔ)特定值需要多少空間,可以使用 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ù)說(shuō)明
函數(shù)名 | 返回類(lèi)型 | 描述 |
pg_column_size(any) | int | 存儲(chǔ)一個(gè)指定的數(shù)值需要的字節(jié)數(shù)(可能壓縮過(guò)) |
pg_database_size(oid) | bigint | 指定OID的數(shù)據(jù)庫(kù)使用的磁盤(pán)空間 |
pg_database_size(name) | bigint | 指定名稱(chēng)的數(shù)據(jù)庫(kù)使用的磁盤(pán)空間 |
pg_indexes_size(regclass) | bigint | 關(guān)聯(lián)指定表OID或表名的表索引的使用總磁盤(pán)空間 |
pg_relation_size(relation regclass, fork text) | bigint | 指定OID或名的表或索引,通過(guò)指定fork('main', 'fsm' 或'vm')所使用的磁盤(pán)空間 |
pg_relation_size(relation regclass) | bigint | pg_relation_size(..., 'main')的縮寫(xiě) |
pg_size_pretty(bigint) | text | 把以字節(jié)計(jì)算的數(shù)值轉(zhuǎn)換成一個(gè)人類(lèi)易讀的單位 |
pg_size_pretty(numeric) | text | 把以字節(jié)計(jì)算的數(shù)值轉(zhuǎn)換成一個(gè)人類(lèi)易讀的單位 |
pg_table_size(regclass) | bigint | 指定表OID或表名的表使用的磁盤(pán)空間,除去索引(但是包含TOAST,自由空間映射和可視映射) |
pg_tablespace_size(oid) | bigint | 指定OID的表空間使用的磁盤(pán)空間 |
pg_tablespace_size(name) | bigint | 指定名稱(chēng)的表空間使用的磁盤(pán)空間 |
pg_total_relation_size(regclass) | bigint | 指定表OID或表名使用的總磁盤(pán)空間,包括所有索引和TOAST數(shù)據(jù) |
oid獲取
#獲取數(shù)據(jù)表的OID select oid,relname from pg_class where relname='table_name'; #獲取數(shù)據(jù)庫(kù)的OID select oid, datname from pg_database; #獲取數(shù)據(jù)表的文件路徑 select pg_relation_filepath('table_name');
總結(jié)
到此這篇關(guān)于PostgreSQL如何查看數(shù)據(jù)庫(kù)及表中數(shù)據(jù)占用空間大小的文章就介紹到這了,更多相關(guān)PostgreSQL查看數(shù)據(jù)占用空間大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Postgresql去重函數(shù)distinct的用法說(shuō)明
這篇文章主要介紹了Postgresql去重函數(shù)distinct的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01sqoop 實(shí)現(xiàn)將postgresql表導(dǎo)入hive表
這篇文章主要介紹了sqoop 實(shí)現(xiàn)將postgresql表導(dǎo)入hive表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12PostgreSQL 如何修改文本類(lèi)型字段的存儲(chǔ)方式
這篇文章主要介紹了PostgreSQL 如何修改文本類(lèi)型字段的存儲(chǔ)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12PostgreSQL拼接字符串的幾種方法簡(jiǎn)單示例
在PostgreSQL中有多種方式可以拼接字符串,這篇文章主要給大家介紹了關(guān)于PostgreSQL拼接字符串的幾種方法,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01postgresql 實(shí)現(xiàn)將字段為空的值替換為指定值
這篇文章主要介紹了postgresql 實(shí)現(xiàn)將字段為空的值替換為指定值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01在postgresql中運(yùn)行sql文件并導(dǎo)出結(jié)果的操作
這篇文章主要介紹了在postgresql中運(yùn)行sql文件并導(dǎo)出結(jié)果的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01PostgreSQL中enable、disable和validate外鍵約束的實(shí)例
這篇文章主要介紹了PostgreSQL中enable、disable和validate外鍵約束的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01