【PostgreSQL】進程及體繫結構

來源:互聯網
上載者:User

標籤:color   緩衝區   16px   訊息   大小   log   數值   postgre   class   

本文主要講述了PG的幾個主要進程,以及PG的核心架構。進程和體繫結構詳見:

從上面的體繫結構圖可以看出來,PG使用經典的C/S架構,進程架構。在伺服器端有主進程、服務進程、子進程、共用記憶體以及檔案儲存體幾大部分,下面詳細講述伺服器段的幾大部分:

1. Postmaster主進程和服務進程

當PG資料庫啟動時,首先會啟動Postmaster主進程。這個進程是PG資料庫的總控制進程,負責啟動和關閉資料庫執行個體。實際上Postmaster進程是一個指向postgres命令的連結,如下:

[[email protected] ~]$ ll /opt/postgresql/bin/postmaster lrwxrwxrwx. 1 postgres dba 8 Aug  7 23:33 /opt/postgresql/bin/postmaster -> postgres

當使用者和PG資料庫建立串連時,要先與Postmaster進程建立串連,此時用戶端進程會發送身分識別驗證訊息給Postmaster主進程,Postmaster主進程根據訊息進行身分識別驗證,驗證通過後,Postmaster主進程會fork出一個會話服務進程為這個使用者串連服務。可以通過pg_stat_activity表來查看服務進程的pid,如下:

test=# select pid,usename,client_addr,client_port from pg_stat_activity;  pid  | usename  | client_addr | client_port -------+----------+-------------+------------- 26402 | postgres |             |          -1(1 row)

2. BgWriter(後台寫)進程

BgWriter進程是把共用記憶體中的髒頁寫到磁碟上的進程。它的作用有兩個:一是定期把髒資料從記憶體緩衝區刷出到磁碟中,減少查詢時的阻塞;二是PG在定期作檢查點時需要把所有髒頁寫出到磁碟,通過BgWriter預先寫出一些髒頁,可以減少設定檢查點(CheckPoint,資料庫恢複技術的一種)時要進行的IO操作,使系統的IO負載趨向平穩。BgWriter是PostgreSQL 8.0以後新加的特性,它的機制可以通過postgresql.conf檔案中以"bgwriter_"開頭配置參數來控制:

# - Background Writer -#bgwriter_delay = 200ms                 # 10-10000ms between rounds                      
#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round#bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round#bgwriter_flush_after = 512kB # measured in pages, 0 disables

bgwriter_delay:
backgroud writer進程連續兩次flush資料之間的時間的間隔。預設值是200,單位是毫秒。
bgwriter_lru_maxpages:
backgroud writer進程每次寫的最多資料量,預設值是100,單位buffers。如果髒資料量小於該數值時,寫操作全部由backgroud writer進程完成;反之,大於該值時,大於的部分將有server process進程完成。設定該值為0時表示禁用backgroud writer寫進程,完全有server process來完成;配置為-1時表示所有髒資料都由backgroud writer來完成。(這裡不包括checkpoint操作)
bgwriter_lru_multiplier:
這個參數表示每次往磁碟寫資料區塊的數量,當然該值必須小於bgwriter_lru_maxpages。設定太小時需要寫入的髒資料量大於每次寫入的資料量,這樣剩餘需要寫入磁碟的工作需要server process進程來完成,將會降低效能;值配置太大說明寫入的髒資料量多於當時所需buffer的數量,方便了後面再次申請buffer工作,同時可能出現IO的浪費。該參數的預設值是2.0。
bgwriter的最大資料量計算方式:
1000/bgwriter_delay*bgwriter_lru_maxpages*8K=最大資料量
bgwriter_flush_after:

資料頁大小達到bgwriter_flush_after時觸發BgWriter,預設是512KB。

【PostgreSQL】進程及體繫結構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.