PG技術大講堂 - Part 4:PostgreSQL例項結構

unix_5359發表於2023-02-27
PG技術大講堂 - Part 4:PostgreSQL例項結構

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色許可權、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。

Part 4:PG例項結構

內容1:PostgreSQL例項簡介

內容2:PostgreSQL初始化引數檔案

內容3:PostgreSQL記憶體結構

內容4:PostgreSQL後臺程式


1.1、PG例項簡介

PostgreSQL例項:用來訪問PostgreSQL資料庫

一個例項對應一個資料庫集簇

由記憶體和後臺程式組成

PG技術大講堂 - Part 4:PostgreSQL例項結構


1.2、建立一個連線和建立一個會話

連線到一個PostgreSQL例項建立一個使用者連線

建立一個會話

PG技術大講堂 - Part 4:PostgreSQL例項結構


2、初始化引數檔案

PG技術大講堂 - Part 4:PostgreSQL例項結構

兩種型別的引數顯式:在檔案中對引數進行設定

隱式:檔案中沒有設定,使用Postgres預設值

可以存在多個初始化引數檔案靜態引數檔案:postgresql.conf

動態引數檔案:postgresql.auto.conf

可選引數檔案:postgresql.conf.user

讀取順序postgresql.conf

postgresql.auto.conf

postgresql.conf.user


2.1、postgresql.conf引數檔案

postgresql.conf引數檔案文字檔案

使用作業系統編輯器修改

手動修改

更改將在下次啟動時生效

僅在例項啟動期間讀取

預設位置為$PGDATA


2.2、postgresql.auto.conf引數檔案

postgresql.auto.conf引數檔案文字檔案

由Postgres伺服器維護

支援用文字編輯器修改(不推薦)

ALTER SYSTEM命令修改的引數儲存在該檔案

能夠在關閉和啟動期間持續進行更改

可以實現自我調整引數值

預設位置為$PGDATA

改變一個引數的值,會在檔案中自動新增引數

ALTER SYSTEM SET archive_mode = on;

恢復一個引數預設值,會在檔案中自動刪除引數

ALTER SYSTEM RESET archive_mode;


2.3、引數生效條件

引數生效條件 sighup:表示需要超級管理員修改,reload就能夠生效。

superuser:表示使用超級管理員可以為普通使用者、資料庫、或者超級管理員自己修改。(注:有些引數是可以針對使用者、資料庫、例項)

postmaster:表示需要超級管理員修改,需要重啟才能夠生效。

user:表示普通使用者可以修改該引數值,立即生效。

PG技術大講堂 - Part 4:PostgreSQL例項結構


3、Memory Architecture

PostgreSQL中的記憶體架構可以分為兩大類:Local memory area –由每個後端程式分配給自己使用

Shared memory area –由PostgreSQL伺服器的所有程式使用

PG技術大講堂 - Part 4:PostgreSQL例項結構

3.1、Memory Architecture

Local Memory Area:

PG技術大講堂 - Part 4:PostgreSQL例項結構

Shared Memory Area:

PG技術大講堂 - Part 4:PostgreSQL例項結構


4、Process Architecture

PostgreSQL程式結構:

postgres server process :postgres伺服器程式是與資料庫群集管理相關的所有程式的父程式。

backend process:每個後端程式處理連線的客戶端發出的所有查詢和語句。

background processes:各種後臺程式執行用於資料庫管理的每個特性的程式(例如清空和檢查點程式)。

replication associated processes:在與複製相關聯的程式中,它們執行流式複製。

background worker process-:在版本9.3支援的後臺工作程式中,它可以執行使用者實現的任何處理。

PostgreSQL程式結構:

PG技術大講堂 - Part 4:PostgreSQL例項結構

4.1、Postgres Server Process

Postgres Server Processpostgres伺服器程式是PostgreSQL伺服器中所有程式的父程式。早期版本它被稱為“postmaster”。

pg_ctl實用程式啟動該程式,然後派生出各個後臺程式。同時分配共享記憶體區域。

一個postgres伺服器程式偵聽一個網路埠,預設埠為5432。


4.2、Backend Processes

Backend Processes後端程式(也稱為postgres)由postgres伺服器程式啟動,並處理一個連線的客戶端發出的所有查詢。

PostgreSQL允許多個客戶端同時連線;配置引數max_connections控制客戶端的最大數量。

PG技術大講堂 - Part 4:PostgreSQL例項結構

Background Processes

PG技術大講堂 - Part 4:PostgreSQL例項結構

postgres> pstree -p 9687-+= 00001 root /sbin/launchd\-+- 09687 postgres /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data |--= 09688 postgres postgres: logger process|--= 09690 postgres postgres: checkpointer process |--= 09691 postgres postgres: writer process|--= 09692 postgres postgres: wal writer process|--= 09693 postgres postgres: autovacuum launcher process |--= 09694 postgres postgres: archiver process|--= 09695 postgres postgres: stats collector process|--= 09697 postgres postgres: postgres sampledb 192.168.1.100(54924) idle\--= 09717 postgres postgres: postgres sampledb 192.168.1.100(54964) idle in transaction

PG技術大講堂 - Part 4:PostgreSQL例項結構

相關閱讀:

從小白到專家 PG技術大講堂 - Part 1:PG簡介

從小白到專家 PG技術大講堂 - Part 2:PG原始碼安裝

從小白到專家 PG技術大講堂 - Part 3:PG建庫與使用

以上就是Part 4 - PG例項結構 的內容,大家練習的時候如果遇到困難,可以進群一起探討,釘釘交流群:35,82,24,60


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31544987/viewspace-2937193/,如需轉載,請註明出處,否則將追究法律責任。

相關文章