PostgreSQL 連接如何建立

2021-09-14 09:33 更新

PostgreSQL以一種簡(jiǎn)單的一用戶(hù)一進(jìn)程的客戶(hù)端/服務(wù)器模型實(shí)現(xiàn)。在該模型中,一個(gè)客戶(hù)端進(jìn)程僅連接到一個(gè)服務(wù)器進(jìn)程。由于我們無(wú)法預(yù)先知道會(huì)有多少連接被建立,我們必須使用一個(gè)主進(jìn)程在每次連接請(qǐng)求時(shí)生產(chǎn)一個(gè)新的服務(wù)器進(jìn)程。該主進(jìn)程被稱(chēng)為 postgres,它在一個(gè)特定的TCP/IP端口監(jiān)聽(tīng)進(jìn)入的連接。當(dāng)一個(gè)連接請(qǐng)求被監(jiān)測(cè)到時(shí),postgres會(huì)產(chǎn)生一個(gè)新的服務(wù)器進(jìn)程。服務(wù)器作業(yè)之間通過(guò)信號(hào)共享內(nèi)存通信,以保證并發(fā)數(shù)據(jù)訪問(wèn)時(shí)的數(shù)據(jù)完整性。

客戶(hù)端進(jìn)程可以是任何符合PostgreSQL協(xié)議(見(jiàn)第 52 章)的程序。很多客戶(hù)端基于C語(yǔ)言庫(kù)libpq,但也有一些該協(xié)議的獨(dú)立實(shí)現(xiàn)存在,例如Java的JDBC驅(qū)動(dòng)。

一旦一個(gè)連接被建立,客戶(hù)端進(jìn)程就能發(fā)送一個(gè)查詢(xún)給后端(服務(wù)器)。查詢(xún)被以純文本傳送,即在前端(客戶(hù)端)不做任何分析。服務(wù)器會(huì)分析查詢(xún),創(chuàng)建一個(gè)執(zhí)行計(jì)劃,然后執(zhí)行之并通過(guò)已建立的連接向客戶(hù)端返回檢索到的行。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)