postgresql進程簡介

  1. 啓動服務之後,在有無客戶端鏈接的進程對比sql

    上半部分是沒有psql鏈接時的進程狀態,下半部分是鏈接一個psql時候的進程狀態。經過對比能夠發現,當有客戶端鏈接的時候,啓動一個postgres進程。同理,當再增長一個客戶端鏈接的時候,也再起一個postgres進程。數據庫

  2. 守護進程postmaster緩存

    數據庫服務的主控制進程,負責整個系統的開啓和關閉,在其餘服務進程發生錯誤時完成系統恢復,當有客戶端請求時,fork一個postgres進程。如上圖,增長一個psql鏈接之後,增長一個postgres進程。函數

    守護進程入口函數postmaste.cpost

void PostmasterMain(int argc, char *argv[])

   3.  checkpointer進程日誌

        檢查點進程,各類類型的檢查點實現。檢查的做用主要是縮短數據庫恢復的時間。code

        checkpointer進程入口,checkpointer.c進程

void CheckpointerMain(void)

   4.  writer進程內存

        writer進程在適當的時間,將共享內存上的緩存寫入磁盤。it

        writer進程入口,bgwriter.c

 

void BackgroundWriterMain(void)

   5.  wal writer進程

        預寫日誌進程,一種比較高效的日誌模式,在數據庫進行操做是,先將數據寫入到日誌文件,而後再寫入數據庫,因爲           是順序寫,效率比通常的日誌模式快。相似的,SQLite也有WAL模式。

        wal writer進程入口,Walwriter.c

void WalWriterMain(void)

  6.  autovacuum 進程

        執行自動vacuum任務。

        autovacuum進程入口,autovacuum.c

NON_EXEC_STATIC void
AutoVacLauncherMain(int argc, char *argv[])

   7.  stats colletcor進程

        統計信息收集進程,收集表的訪問次數,磁盤的訪問次數等信息。

   8.  

相關文章
相關標籤/搜索