查詢PostgreSQL占多大內(nèi)存的操作
我就廢話不多說了,大家還是直接看代碼吧~
select pg_size_pretty(pg_relation_size('cuiyonghua.top_iqiyi_info')); select pg_size_pretty(pg_relation_size('cuiyonghua.top_mgtv_info')); select pg_size_pretty(pg_relation_size('cuiyonghua.top_tencent_info')); select pg_size_pretty(pg_relation_size('cuiyonghua.top_zhihu_info'));
補(bǔ)充:PostgreSQL 配置內(nèi)存參數(shù)
對于任何數(shù)據(jù)庫軟件,內(nèi)存配置項(xiàng)都是很重要的配置項(xiàng)。在 PostgreSQL 主要有以下幾個(gè)內(nèi)存配置參數(shù)。
shared_buffers: integer
類型,設(shè)置數(shù)據(jù)庫服務(wù)器將使用的共享內(nèi)存緩沖區(qū)數(shù)量,此緩沖區(qū)為緩沖數(shù)據(jù)塊所用。此緩沖區(qū)是放在共享內(nèi)存中的。每個(gè)緩沖區(qū)大小的典型值是 8K 字節(jié),默認(rèn)值通常是 4000,對于 8KB 的數(shù)據(jù)塊則共享內(nèi)存緩沖區(qū)大小為 400*8KB=32MB。這個(gè)數(shù)值必須大于 16,并且至少是 max_connections 數(shù)值的兩倍。通常都會把此值設(shè)置的大一些,這樣可以改進(jìn)性能。一般設(shè)置為物理內(nèi)存的 25%,若把 shared_buffers 設(shè)置的更大,如超過物理內(nèi)存的 40%,就會發(fā)現(xiàn)緩沖的效果并不明顯了,這是因?yàn)?PostgreSQL 是運(yùn)行文件系統(tǒng)之上的,若文件系統(tǒng)也有緩存,將導(dǎo)致雙緩存過多,造成負(fù)面影響。
temp_buffers: integer
類型,設(shè)置每個(gè)數(shù)據(jù)庫會話使用的臨時(shí)緩沖區(qū)的最大數(shù)目。此本地緩沖區(qū)只用于訪問臨時(shí)表。臨時(shí)緩沖區(qū)是在某個(gè)連接會話的服務(wù)進(jìn)程中分配的,屬于本地內(nèi)存。臨時(shí)緩沖區(qū)的大小也是按數(shù)據(jù)塊大小分配的,默認(rèn)是 1000,對于 8K 的數(shù)據(jù)塊大小為 8MB。
work_mem: integer
類型,聲明內(nèi)部排序操作和 Hash 表在開始使用臨時(shí)磁盤文件之前可使用的內(nèi)存數(shù)目。這個(gè)內(nèi)存也是本地內(nèi)存,默認(rèn)是 1MB。請注意對于復(fù)雜的查詢,可能會同時(shí)并發(fā)運(yùn)行好幾個(gè)排序或散列(hash)操作;每個(gè)排序或散列操作都會分配這個(gè)參數(shù)聲明的內(nèi)存來存儲中間數(shù)據(jù),只有存不下才會使用臨時(shí)文件。同樣,好幾個(gè)正在運(yùn)行的會話可能會同時(shí)進(jìn)行排序操作,因此使用的總內(nèi)存量可能是 work_mem 的好幾倍。 ORDER BY、DISTINCT 和 MERGE JOINS 都要用到排序操作。Hash 表在以 Hash join、Hash 為基礎(chǔ)的聚集、以 Hash 為基礎(chǔ)的 IN 子查詢處理中都要用到。
maintenance_work_mem: integer
類型,聲明在維護(hù)性操作(比如 CACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中使用的最大內(nèi)存數(shù)。默認(rèn)是 16 MB。在一個(gè)數(shù)據(jù)庫會話里,只有一個(gè)這樣的操作可以執(zhí)行行,并且一個(gè)數(shù)據(jù)庫實(shí)例通常不會有太多這樣的工作并發(fā)執(zhí)行,把這個(gè)數(shù)值設(shè)置得比 work_mem 大一些通常是合適的。更大的設(shè)置可以提高上述操作的速度。
max_stack_depth: integer
類型,聲明服務(wù)器執(zhí)行堆棧的最大安全深度。默認(rèn)值 2MB。如果發(fā)現(xiàn)不能運(yùn)行復(fù)雜的函數(shù),可以適當(dāng)提高此配置的值,不過通常情況下保持默認(rèn)值就夠了。
把 max_stack_depth 參數(shù)設(shè)置得大于實(shí)際的操作系統(tǒng)內(nèi)核限制值時(shí),意味著一個(gè)正在運(yùn)行的遞歸函數(shù)可能會導(dǎo)致 PostgreSQL 后臺服務(wù)進(jìn)程奔潰。在一些操作系統(tǒng)平臺上,PG 能夠檢測出內(nèi)核限制,這時(shí)它將不允許將其設(shè)置為一個(gè)不安全的值。但PG并不能在所有操作系統(tǒng)的平臺都檢測它的限制值,所以還是建議設(shè)置一個(gè)明確的值。
總結(jié):
shared_buffers:
共享內(nèi)存的大小,主要用于共享內(nèi)存數(shù)據(jù)塊。
work_mem:
單個(gè) SQL 執(zhí)行時(shí),排序、hash join 所使用的內(nèi)存,SQL 運(yùn)行完成后,內(nèi)存就釋放了。
shared_buffers
默認(rèn)值為 32 MB,work_mem 為 1MB,如果你的機(jī)器上有足夠的內(nèi)存,可以把這個(gè)參數(shù)改得大一些,
這樣數(shù)據(jù)庫就可以緩存更多的數(shù)據(jù)塊,當(dāng)讀取數(shù)據(jù)時(shí),就可以從共享內(nèi)存中讀,而不需要再從文件上去讀取。
work_mem
設(shè)置大一些,會讓排序操作快一些。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
PotgreSQL?基于時(shí)間點(diǎn)恢復(fù)過程
本篇文章介紹?PostgreSQL?基于時(shí)間點(diǎn)恢復(fù)(point-in-time-recover)需要的條件及恢復(fù)過程,屬于操作說明,對PotgreSQL?時(shí)間點(diǎn)恢復(fù)相關(guān)知識感興趣的朋友跟隨小編一起看看吧2023-08-08postgresql分頁數(shù)據(jù)重復(fù)問題的深入理解
這篇文章主要給大家介紹了關(guān)于postgresql分頁數(shù)據(jù)重復(fù)問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用postgresql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04postgreSQL 數(shù)字與字符串類型轉(zhuǎn)換操作
這篇文章主要介紹了postgreSQL 數(shù)字與字符串類型轉(zhuǎn)換操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12淺析postgresql 數(shù)據(jù)庫 TimescaleDB 修改分區(qū)時(shí)間范圍
這篇文章主要介紹了淺析postgresql 數(shù)據(jù)庫 TimescaleDB 修改分區(qū)時(shí)間范圍,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01解決postgreSql遠(yuǎn)程連接數(shù)據(jù)庫超時(shí)的問題
這篇文章主要介紹了解決postgreSql遠(yuǎn)程連接數(shù)據(jù)庫超時(shí)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12postgresql 13.1 insert into select并行查詢的實(shí)現(xiàn)
這篇文章主要介紹了解決postgresql insert into select無法使用并行查詢的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01利用OGG實(shí)現(xiàn)PostgreSQL實(shí)時(shí)同步的過程詳解
本文詳細(xì)闡述了利用OGG實(shí)現(xiàn)PostgreSQL實(shí)時(shí)同步的全過程,文章通過代碼示例和圖文結(jié)合講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下2023-11-11使用PostgreSQL的JSONB數(shù)據(jù)類型進(jìn)行高效查詢的示例代碼
PostgreSQL的JSONB數(shù)據(jù)類型提供了一種靈活的方式來存儲和查詢JSON格式的數(shù)據(jù),下面我們將詳細(xì)討論如何使用JSONB數(shù)據(jù)類型進(jìn)行高效查詢,并提供相應(yīng)的解決方案和示例代碼,需要的朋友可以參考下2024-04-04