postgresql查詢表的大小

2021-09-20 10:24:41 字數 2464 閱讀 9394

–資料庫中單個表的大小(不包含索引)

select pg_size_pretty(pg_relation_size(

'表名'))

;

–查出所有表(包含索引)並排序

select table_schema ||

'.'|| table_name as table_full_name, pg_size_pretty(pg_total_relation_size(

'"'|| table_schema ||

'"."'

|| table_name ||

'"')

)as size

from information_schema.

tables

order

bypg_total_relation_size(

'"'|| table_schema ||

'"."'

|| table_name ||

'"')

desc

limit

20

–查出表大小按大小排序並分離data與index

select

table_name,

pg_size_pretty(table_size)

as table_size,

pg_size_pretty(indexes_size)

as indexes_size,

pg_size_pretty(total_size)

as total_size

from

(select

table_name,

pg_table_size(table_name)

as table_size,

pg_indexes_size(table_name)

as indexes_size,

pg_total_relation_size(table_name)

as total_size

from

(select

('"'

|| table_schema ||

'"."'

|| table_name ||

'"')

as table_name

from information_schema.

tables

)as all_tables

order

by total_size desc

)as pretty_sizes

檢視資料庫中各個資料庫佔磁碟的大小:

select d.datname as name,  pg_catalog.pg_get_userbyid(d.datdba)

as owner,

case

when pg_catalog.has_database_privilege(d.datname,

'connect'

)then pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname)

)else

'no access'

endas size

from pg_catalog.pg_database d

order

bycase

when pg_catalog.has_database_privilege(d.datname,

'connect'

)then pg_catalog.pg_database_size(d.datname)

else

null

enddesc

統計資料庫中各表占用磁碟大小:

select

table_schema ||

'.'|| table_name as table_full_name,

pg_size_pretty(pg_total_relation_size(

'"'|| table_schema ||

'"."'

|| table_name ||

'"')

)as size

from information_schema.

tables

order

by pg_total_relation_size(

'"'|| table_schema ||

'"."'

|| table_name ||

'"')

desc

如果表中的字段是大文字(text)時,所計算出來的表占用空間不足以表示該錶的資料占用的空間,因為text文字資料實際是儲存在資料庫的 pg_largeobject 表中,而自己建的表中的text型別記錄的是liod,即pg_largeobject 中的loid字段值。

PostgreSQL大表拆分方法

資料庫中單錶如果很大,會帶來很多管理個使用上的不便和問題,因此一般大表都建議進行分割槽,這也是比較常見的將大表拆分的方法,在pg中還可以直接對資料檔案進行操作來實現大表拆分。例子 1 建立實驗表,插入資料 這裡需要注意避免使用toast表 bill create table tt1 c1 int c...

PostgreSQL查詢表中是否存在值的優化

postgresql查詢表中是否存在值的優化 經常會碰到這麼乙個應用 往表裡更新資料前先查詢一遍被更新的資料存不存在。通常我們的做法是使用select 查詢過濾一遍,然後再決定是否更新,怎麼更新。在pg庫里,除了以上方法外,還有一種更能提公升效能的辦法,使用perform來代替select。exam...

PostgreSQL的查詢優化

postgresql 的查詢優化 資料庫管理系統中的 sql執行,有多種多樣,從 sql語句型別上講,有 ddl dml dql dcl。不同語句,被資料庫引擎執行,其執行方式 複雜程度都不相同。其中,最為複雜的,是 dql,查詢語句。查詢語句的執行,在資料庫中,又可以分為 2個階段,一是查詢計畫的...