成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我不認為PG的Double Buffering是更優秀的解決方案

數據庫 其他數據庫
PG消除DOUBLE BUFFERING,在技術發展上來說,是必須要做的事情,只不過因為歷史欠債還是較多,這方面的改造工作量很大,需要一些時間來完成。

關于PG在Shared buffers上的DOUBLE BUFFERING設計,一直是爭議極多的。有一些搞PG的朋友認為這是PG充分利用OS CACHE的一種特殊設計,是PG數據庫設計中比較優秀的地方。還有一些朋友則認為這是一種過時的設計,與當前數據庫技術的發展潮流所相違背的。前些天有幾個朋友談到這個問題,希望我寫篇位置表達下我的觀點。

以我這些年做數據庫優化的經驗來看,DOUBLE BUFFERING的設計如果算是一種技術上的進步,在這一點上我一直是不太認同的。眾所周知,現在幾乎所有的現代數據庫產品都是用AIO/DIO等方式來訪問底層存儲系統,只有PG目前還通過BUFFER/CACHE來讀取物理文件。隨著現代硬件的發展,BUFFERED IO的劣勢越來越顯現出來了。如果我們采用直接IO,繞過文件緩沖,那么就可以繞過BUFFER CACHE這一層,讓數據從文件到內存更為直接,這會大幅提升OS到數據庫緩沖的數據交換的吞吐能力,同時,因為DMA等技術的使用,可以讓文件IO消耗的CPU資源更少,讓系統更為高效。這對于大型數據庫系統來說絕對是十分必要的。PG數據庫越來越被用于大型OLTP系統,直接IO替代BUFFERED IO肯定可以有效增加大型系統的并發IO能力。

另外一個方面,操作系統是無法充分理解數據庫的PAGE訪問邏輯的,因此操作系統緩沖的效率比較shared buffers而言,要低的多。兩個分別由RDBMS和OS管理的分離的緩沖的效率肯定沒有一個獨立的數據庫緩沖高,這個應該也是廣大研發人員的共識。不過這句話成立的前提是數據庫緩沖區被設計的十分高效,其LRU算法也被設計的十分合理。通過分析Oracle DB CACHE的算法的改進,我們也了解到為什么Oracle的DB CACHE能夠保持那么高的DB CACHE命中率了。

既然使用統一緩沖,消除DOUBLE BUFFERING那么重要,那么為什么PG還在堅持使用DOUBLE BUFFERING呢?這個原因十分復雜,實際上最近這些年里,PG社區也在這方面做著不斷的努力。通過利用OS的AIO來替代當前bufmgr.c中的BUFFERD IO操作,不過PG的IO堆棧太長了,在大量的代碼中都存在和buffered io相關的內容,再加上PG的文件結構導致的預讀、連續塊訪問的IO合并等問題,要解決這個問題并不容易。在IO路徑上,不僅僅需要修改bufmgr.c,在smgr.c,xlog.c,到底層的md.c,fd.c,甚至backend等模塊中都有大量IO相關的代碼需要修改。這些修改不僅僅是在調用文件IO時的函數調用的修改,還涉及到異步IO模式的修改,以及IO優化、預讀等一系列的問題。因此這部分的修改中左雖然已經進行了數年,但是要出現在正是發布的版本中,依然還需要一定的時間。這也成為PG代碼中的XID64之外的又一個老大難的問題。

除此之外,在shared buffers的管理上,也需要做相應的優化,否則哪怕底層IO改為了AIO,buffer contention沖突也會讓一個大型的統一的數據庫緩沖的性能出現問題。比如在Oracle上遇到的buffer busy waits等待,可能會在PG上放大,從而在高并發訪問時引發嚴重的性能問題。

舉個最簡單的場景,那就是當多個backend需要訪問相同的一組PAGE的時候,PG目前的管理算法上海經常會出現lwlock等待方面的超時等問題。而Oracle從9i開始已經優化了這方面的算法,當多個并發的會話訪問相同的block的時候,首先為這個BLOCK申請db cache的會話會PIN住這個BUFFER HEADER,然后開始加載這個block(當然也包含IO合并以及預讀,多塊讀方面的算法優化),其他并發訪問相同數據的會話就會等待“read by another session”,這個等待事件是Oracle 10g才開始引入的,在9i中等待的依然是buffer busy waits,不過reason code(P3)參數是特殊的,從reason code可以缺別處這種特殊的熱塊沖突類型。當PG在這方面算法沒有做優化之前,就無法區分這種情況,也就無法與AIO配合,達到最低成本的開銷。

PG消除DOUBLE BUFFERING,在技術發展上來說,是必須要做的事情,只不過因為歷史欠債還是較多,這方面的改造工作量很大,需要一些時間來完成。一旦PG完成這個改造,將可以充分利用AIO的能力,大幅提升PG數據庫讀寫的能力,從而讓PG數據庫真正向大型關系型數據庫邁出一大步。目前我們有很多數據庫企業都是基于PG生態在做研發,我也希望我們的數據庫廠商能夠在這方面多投入一些研發,為PG社區解決這個難題提供一些中國方案。

責任編輯:武曉燕 來源: 白鱔的洞穴
相關推薦

2018-02-26 16:51:57

AI比爾·蓋茨互聯網

2013-05-30 23:19:15

Twitter CEOD11

2011-11-17 10:38:03

SAP蕭潔云金蝶

2023-05-18 11:19:38

AI

2022-03-15 23:55:33

混合云云計算遠程辦公

2020-02-03 16:40:48

人工智能安全數據

2021-01-06 08:05:32

JavaSocke粘包

2022-12-09 10:00:20

算法推薦模式

2022-05-24 07:06:16

Debian自由軟件標準開發者

2024-09-18 00:15:58

2022-07-19 14:41:00

安全

2021-10-11 10:33:24

云計算DaaS云應用

2022-12-14 08:01:56

數據庫運維IO

2021-09-09 06:38:56

網絡虛擬化網絡網絡可見性

2017-12-22 21:42:24

游戲語音游戲實時語音

2019-06-18 08:00:00

電子商務開源解決方案

2021-08-27 13:52:50

服務器備份軟件IT技術

2019-07-29 07:29:05

2023-08-18 10:22:24

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本黄视频在线观看 | 国产亚洲成av人在线观看导航 | 成人在线免费 | 最新国产视频 | 青青草久久 | 日韩影院在线 | 久草久草久草 | 懂色一区二区三区免费观看 | 国产sm主人调教女m视频 | 久久国产精品视频免费看 | 日韩免费视频 | 亚洲二区精品 | 99精品国产一区二区三区 | 免费一区在线 | 99久久久久国产精品免费 | 久久精品免费一区二区三 | 欧美日本韩国一区二区 | av日日操| 欧美精品久久久 | 免费一看一级毛片 | 亚洲欧美在线一区 | 色爱综合网 | 国产小视频在线观看 | 精品国产一级 | 一级国产精品一级国产精品片 | 久久成人高清视频 | 精国产品一区二区三区四季综 | 男女国产视频 | 黄色播放 | 亚洲精品成人网 | 国产一区二区精品 | 日韩aⅴ在线观看 | 成人欧美一区二区三区黑人孕妇 | 日韩精品一区二区三区中文在线 | 国产欧美一区二区三区国产幕精品 | 久久精品亚洲精品国产欧美 | 成人国产精品久久久 | 国产精品成人在线观看 | 美国a级毛片免费视频 | 精品国产乱码久久久久久闺蜜 | 欧美99久久精品乱码影视 |