主頁 > 知識庫 > 查詢PostgreSQL占多大內(nèi)存的操作

查詢PostgreSQL占多大內(nèi)存的操作

熱門標簽:地圖標注和圖片名稱的區(qū)別 美容工作室地圖標注 合肥公司外呼系統(tǒng)運營商 辦公外呼電話系統(tǒng) 漯河外呼電話系統(tǒng) 外呼調(diào)研系統(tǒng) 重慶自動外呼系統(tǒng)定制 打電話智能電銷機器人授權(quán) 海豐有多少商家沒有地圖標注

我就廢話不多說了,大家還是直接看代碼吧~

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'));

補充:PostgreSQL 配置內(nèi)存參數(shù)

對于任何數(shù)據(jù)庫軟件,內(nèi)存配置項都是很重要的配置項。在 PostgreSQL 主要有以下幾個內(nèi)存配置參數(shù)。

shared_buffers: integer 類型,設(shè)置數(shù)據(jù)庫服務器將使用的共享內(nèi)存緩沖區(qū)數(shù)量,此緩沖區(qū)為緩沖數(shù)據(jù)塊所用。此緩沖區(qū)是放在共享內(nèi)存中的。每個緩沖區(qū)大小的典型值是 8K 字節(jié),默認值通常是 4000,對于 8KB 的數(shù)據(jù)塊則共享內(nèi)存緩沖區(qū)大小為 400*8KB=32MB。這個數(shù)值必須大于 16,并且至少是 max_connections 數(shù)值的兩倍。通常都會把此值設(shè)置的大一些,這樣可以改進性能。一般設(shè)置為物理內(nèi)存的 25%,若把 shared_buffers 設(shè)置的更大,如超過物理內(nèi)存的 40%,就會發(fā)現(xiàn)緩沖的效果并不明顯了,這是因為 PostgreSQL 是運行文件系統(tǒng)之上的,若文件系統(tǒng)也有緩存,將導致雙緩存過多,造成負面影響。

temp_buffers: integer 類型,設(shè)置每個數(shù)據(jù)庫會話使用的臨時緩沖區(qū)的最大數(shù)目。此本地緩沖區(qū)只用于訪問臨時表。臨時緩沖區(qū)是在某個連接會話的服務進程中分配的,屬于本地內(nèi)存。臨時緩沖區(qū)的大小也是按數(shù)據(jù)塊大小分配的,默認是 1000,對于 8K 的數(shù)據(jù)塊大小為 8MB。

work_mem: integer 類型,聲明內(nèi)部排序操作和 Hash 表在開始使用臨時磁盤文件之前可使用的內(nèi)存數(shù)目。這個內(nèi)存也是本地內(nèi)存,默認是 1MB。請注意對于復雜的查詢,可能會同時并發(fā)運行好幾個排序或散列(hash)操作;每個排序或散列操作都會分配這個參數(shù)聲明的內(nèi)存來存儲中間數(shù)據(jù),只有存不下才會使用臨時文件。同樣,好幾個正在運行的會話可能會同時進行排序操作,因此使用的總內(nèi)存量可能是 work_mem 的好幾倍。 ORDER BY、DISTINCT 和 MERGE JOINS 都要用到排序操作。Hash 表在以 Hash join、Hash 為基礎(chǔ)的聚集、以 Hash 為基礎(chǔ)的 IN 子查詢處理中都要用到。

maintenance_work_mem: integer 類型,聲明在維護性操作(比如 CACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中使用的最大內(nèi)存數(shù)。默認是 16 MB。在一個數(shù)據(jù)庫會話里,只有一個這樣的操作可以執(zhí)行行,并且一個數(shù)據(jù)庫實例通常不會有太多這樣的工作并發(fā)執(zhí)行,把這個數(shù)值設(shè)置得比 work_mem 大一些通常是合適的。更大的設(shè)置可以提高上述操作的速度。

max_stack_depth: integer 類型,聲明服務器執(zhí)行堆棧的最大安全深度。默認值 2MB。如果發(fā)現(xiàn)不能運行復雜的函數(shù),可以適當提高此配置的值,不過通常情況下保持默認值就夠了。

把 max_stack_depth 參數(shù)設(shè)置得大于實際的操作系統(tǒng)內(nèi)核限制值時,意味著一個正在運行的遞歸函數(shù)可能會導致 PostgreSQL 后臺服務進程奔潰。在一些操作系統(tǒng)平臺上,PG 能夠檢測出內(nèi)核限制,這時它將不允許將其設(shè)置為一個不安全的值。但PG并不能在所有操作系統(tǒng)的平臺都檢測它的限制值,所以還是建議設(shè)置一個明確的值。

總結(jié):

shared_buffers:共享內(nèi)存的大小,主要用于共享內(nèi)存數(shù)據(jù)塊。

work_mem:單個 SQL 執(zhí)行時,排序、hash join 所使用的內(nèi)存,SQL 運行完成后,內(nèi)存就釋放了。

shared_buffers 默認值為 32 MB,work_mem 為 1MB,如果你的機器上有足夠的內(nèi)存,可以把這個參數(shù)改得大一些,

這樣數(shù)據(jù)庫就可以緩存更多的數(shù)據(jù)塊,當讀取數(shù)據(jù)時,就可以從共享內(nèi)存中讀,而不需要再從文件上去讀取。

work_mem 設(shè)置大一些,會讓排序操作快一些。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • postgresql 補齊空值、自定義查詢字段并賦值操作
  • postgresql 13.1 insert into select并行查詢的實現(xiàn)
  • postgresql insert into select無法使用并行查詢的解決
  • 關(guān)于PostgreSQL錯誤日志與慢查詢?nèi)罩臼占?/li>
  • PostgreSQL 實現(xiàn)查詢表字段信息SQL腳本
  • postgresql 實現(xiàn)查詢出的數(shù)據(jù)為空,則設(shè)為0的操作

標簽:來賓 錦州 烏海 蚌埠 株洲 珠海 衡陽 晉城

巨人網(wǎng)絡(luò)通訊聲明:本文標題《查詢PostgreSQL占多大內(nèi)存的操作》,本文關(guān)鍵詞  查詢,PostgreSQL,占,多大,內(nèi)存,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《查詢PostgreSQL占多大內(nèi)存的操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于查詢PostgreSQL占多大內(nèi)存的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章