| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 40. PostgreSQL 內部概貌 | Fast Forward | Next |
PostgreSQL 是用一個簡單的"每用戶一進程" 的client/server 模型實現的。 在這種模式裡一個客戶端進程只是與一個伺服器進程連線。 因為我們不知道具體要建立多少個連線, 所以我們不得不利用一個主進程在每次連線請求時派生出一個新的伺服器進程來。 這個主進程叫做 postmaster, 它監聽著一個特定的 TCP/IP 連接埠等待進來的連線。 每當檢測到一個連線請求時,postmaster 進程派生出一個新的叫 postgres的伺服器進程。 伺服器任務(postgres 進程)相互之間使用信號燈和共享內存進行通訊, 以確保在並行的資料訪問過程中的資料完整性。
客戶端進程可以是任何理解 PostgreSQL 協議(在 Chapter 42 裡描述)的程序。 許多客戶端都是基於 C 語言庫 libpq, 但是也存在幾個對協議之獨立的實現,比如 Java JDBC 驅動。
一旦建立起來連線, 客戶端進程就可以向後端(伺服器)進程發送查詢了。 查詢是透過純文本傳輸的,也就是說在 前端(客戶端)不做任何分析處理。 伺服器分析查詢,建立執行規劃, 執行該規劃並且透過已經建立起來的連接把檢索出來的資料行返回給客戶端。