自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圖解PostgreSQL進(jìn)程結(jié)構(gòu)和內(nèi)存結(jié)構(gòu)

存儲 存儲軟件 PostgreSQL
客戶端與Postgres進(jìn)程建立通信連接,由Postgres進(jìn)程負(fù)責(zé)后續(xù)所有的客戶端請求操作,直至客戶端退出后,該P(yáng)ostgres進(jìn)程消失。

本文轉(zhuǎn)載自微信公眾號「數(shù)據(jù)和云」,作者陳家睿。轉(zhuǎn)載本文請聯(lián)系數(shù)據(jù)和云公眾號。

一.建立會話的過程

階段一:

客戶端發(fā)起請求。

階段二:

該階段由主服務(wù)postmaster進(jìn)程負(fù)責(zé)。

  • 服務(wù)器是否接受客戶端的host通信認(rèn)證。
  • 服務(wù)器對客戶端進(jìn)行身份鑒別。
  • PM進(jìn)程:提供監(jiān)聽、連接協(xié)議、驗(yàn)證功能,fork其他進(jìn)程 ,監(jiān)聽哪個IP是受到postgres.conf影響的,默認(rèn)提供socket和TCP方式連接,建立會話的過程 。
  • 驗(yàn)證功能:通過pg_hba.conf和用戶驗(yàn)證模塊來提供。

階段三:

階段二通過之后,主服務(wù)進(jìn)程為該客戶端單獨(dú)fork一個客戶端工作進(jìn)程Postgres。

SP進(jìn)程:會話進(jìn)程。用戶一旦驗(yàn)證成功就會fork一個新的進(jìn)程。

分配PGA里面的work_mem,從磁盤讀取數(shù)據(jù)到SGA中,與SP通信。

階段四:

客戶端與Postgres進(jìn)程建立通信連接,由Postgres進(jìn)程負(fù)責(zé)后續(xù)所有的客戶端請求操作,直至客戶端退出后,該P(yáng)ostgres進(jìn)程消失。

二.更新語句的流程

  • BgWriter(后臺寫)進(jìn)程
  • WaLWriter(預(yù)寫式日志)進(jìn)程
  • AutoVAcuum(系統(tǒng)自動清理)
  • SysLogger(系統(tǒng)日志)進(jìn)程
  • PgArch(歸檔)進(jìn)程
  • PgStat(統(tǒng)計(jì)數(shù)據(jù)收集)進(jìn)程
  • CheckPoint(檢查點(diǎn))進(jìn)程

建立通信之后,更新操作將磁盤中數(shù)據(jù)讀取到shared_buffers,對數(shù)據(jù)的操作在此進(jìn)行,同時會在log buffer中記錄更新操作,并且后續(xù)會有BgWriter(圖中BGW進(jìn)程)進(jìn)程將數(shù)據(jù)刷臟到磁盤中。

數(shù)據(jù)刷臟前,日志會先落盤,log buffer會被進(jìn)程WaLWriter(預(yù)寫式日志)進(jìn)程刷新到磁盤。

三.PGA內(nèi)存

  • temp_buffers---臨時緩沖區(qū)

用于存放數(shù)據(jù)庫會話訪問臨時表數(shù)據(jù),系統(tǒng)默認(rèn)值為8M。

可以在單獨(dú)的session中對該參數(shù)進(jìn)行設(shè)置,尤其是需要訪問比較大的臨時表時,將會有顯著的性能提升。

  • work_mem --- 工作內(nèi)存或者操作內(nèi)存

其負(fù)責(zé)內(nèi)部的sort和hash操作,合適的work_mem大小能夠保證這些操作在內(nèi)存中進(jìn)行。

  • maintenance_work_mem ---維護(hù)工作內(nèi)存

主要是針對數(shù)據(jù)庫的維護(hù)操作或者語句。

主要針對VACUUM,CREATE INDEX,ALTER TABLE ADD FOREIGN KEY等操作。

在對整個數(shù)據(jù)庫進(jìn)行VACUUM或者較大的index進(jìn)行重建時,適當(dāng)?shù)恼{(diào)整該參數(shù)非常必要。

PostreSQL文檔提示在啟用了autoacuum功能的情況下,該參數(shù)不能配置的過大。

四.SGA內(nèi)存

  • shared_buffers ---共享緩沖區(qū)

它表示數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)塊的個數(shù),每個數(shù)據(jù)塊的大小是8KB。

數(shù)據(jù)緩沖區(qū)位于數(shù)據(jù)庫的共享內(nèi)存中,它越大越好,不能小于128KB。

這個參數(shù)只有在啟動數(shù)據(jù)庫時,才能被設(shè)置。

默認(rèn)值是128MB。

推薦值:1/4 主機(jī)物理內(nèi)存。

  • wal_buffers --- 日志緩存區(qū)的大小

可以降低IO,如果遇上比較多的并發(fā)短事務(wù),應(yīng)該和commit_delay一起用 。

存放WAL數(shù)據(jù)的內(nèi)存空間大小,系統(tǒng)默認(rèn)值是64K。

 

墨天輪原文鏈接:https://www.modb.pro/db/185840?sjhy

 

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)和云
相關(guān)推薦

2018-10-12 11:11:39

Oracle內(nèi)存結(jié)構(gòu)

2024-11-05 10:52:07

2010-11-15 12:02:24

Oracle進(jìn)程結(jié)構(gòu)

2010-10-28 14:29:39

Oracle內(nèi)存結(jié)構(gòu)

2010-03-31 14:36:50

Oracle進(jìn)程結(jié)構(gòu)

2010-09-27 13:48:41

JVM內(nèi)存結(jié)構(gòu)

2013-03-29 11:09:17

JVM內(nèi)存

2010-09-27 09:31:42

JVM內(nèi)存結(jié)構(gòu)

2017-09-20 08:48:09

JVM內(nèi)存結(jié)構(gòu)

2011-01-14 14:49:05

2020-03-06 16:08:46

堆結(jié)構(gòu)堆排序應(yīng)用

2010-04-08 09:00:29

Oracle內(nèi)存結(jié)構(gòu)

2022-12-26 14:41:38

Linux內(nèi)存

2010-03-31 14:20:23

Oracle內(nèi)存結(jié)構(gòu)

2010-01-13 09:20:18

交換機(jī)結(jié)構(gòu)

2019-11-04 12:51:48

mysql數(shù)據(jù)庫nnodb

2024-10-11 16:43:05

高并發(fā)數(shù)據(jù)結(jié)構(gòu)技巧

2018-12-25 09:03:35

內(nèi)存存儲器層次

2021-04-13 09:07:33

InnoDB內(nèi)存結(jié)構(gòu)

2021-08-13 08:15:23

JVM 虛擬機(jī)Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號