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

把數(shù)據(jù)庫該干的活交給OS可行嗎

數(shù)據(jù)庫 其他數(shù)據(jù)庫
實(shí)際上早期的數(shù)據(jù)庫也是十分依賴于操作系統(tǒng)的,我大學(xué)畢業(yè)后使用過的第一個數(shù)據(jù)庫RMS就是一個基于openVMS的記錄管理系統(tǒng),其底層依賴于操作系統(tǒng)的基礎(chǔ)IPC能力構(gòu)建。后來隨著數(shù)據(jù)庫變得越來越復(fù)雜,需要支持的底層OS平臺越來越多,數(shù)據(jù)庫產(chǎn)品逐漸把一些以前OS干的事情由自己獨(dú)立來干。

?這兩天在思考前幾天一個朋友提到的一個問題,現(xiàn)在的OS越來越強(qiáng)大了,能不能把一些數(shù)據(jù)庫該干的事情交給OS去做,這樣數(shù)據(jù)庫的內(nèi)核可以大大的簡化。這個觀點(diǎn)讓我想起了十多年前Linux是否需要提供o_direct這個文件IO選項(xiàng)給開發(fā)者的討論。當(dāng)時Linus Torvalds說了那句十分著名的話—“In short, the whole "let's bypass the OS" notion is just fundamentally broken. It sounds simple, but it sounds simple only to an idiot who writes databases and doesn't even UNDERSTAND what an OS is meant to do”。他甚至認(rèn)為繞過OS強(qiáng)大的VMM設(shè)計(jì)去處理IO是傻瓜才會干的事情,因?yàn)長inux已經(jīng)為數(shù)據(jù)庫類的應(yīng)用提供了強(qiáng)大的能力。

實(shí)際上早期的數(shù)據(jù)庫也是十分依賴于操作系統(tǒng)的,我大學(xué)畢業(yè)后使用過的第一個數(shù)據(jù)庫RMS就是一個基于openVMS的記錄管理系統(tǒng),其底層依賴于操作系統(tǒng)的基礎(chǔ)IPC能力構(gòu)建。后來隨著數(shù)據(jù)庫變得越來越復(fù)雜,需要支持的底層OS平臺越來越多,數(shù)據(jù)庫產(chǎn)品逐漸把一些以前OS干的事情由自己獨(dú)立來干。2012年的一次測試,讓我對數(shù)據(jù)庫與OS融合后的能力有了深刻的體會。當(dāng)時在一臺Oracle公司的T4-8上,服務(wù)器+Solaris操作系統(tǒng)+Oracle 11g的組合跑出了驚人的高性能。不用做復(fù)雜的調(diào)優(yōu),僅僅裝好數(shù)據(jù)庫,簡單調(diào)整一下數(shù)據(jù)庫參數(shù),就取得了那次測試最佳的成績。后來我和參加測試的老外聊了聊,他說在這個組合里,Oracle的一些并發(fā)控制相關(guān)底層調(diào)用得到了全面優(yōu)化,操作系統(tǒng)幫助Oracle的閂鎖與鎖操作的并發(fā)能力得到了極大的提升。

實(shí)際上開頭提的這個問題應(yīng)該不是問題了,現(xiàn)在的Linux與90年代剛剛進(jìn)入我們視野的時候已經(jīng)不可同日而語了,那時候的Linux可以很好的支撐WEB應(yīng)用,但是對數(shù)據(jù)庫的底層支持還比較弱。而現(xiàn)在Linux的能力已經(jīng)得到了巨大的強(qiáng)化,無論是Redis,MongoDB還是ClickHose,這些新生代的數(shù)據(jù)庫產(chǎn)品無一例外的充分利用了操作系統(tǒng)底層的能力,從而簡化了很多傳統(tǒng)數(shù)據(jù)庫自己要做的復(fù)雜控制。外加在存儲引擎上使用了大量的開源技術(shù),使得數(shù)據(jù)庫研發(fā)的門檻大大降低了。包括我們耳熟能詳?shù)拈_源數(shù)據(jù)庫MySQL和Postgresql,它們在存儲引擎上也充分利用了操作系統(tǒng)的能力。充分利用OS FILE CACHE的能力來緩沖數(shù)據(jù),從而提升IO性能,通過使用帶日志的文件系統(tǒng)來消除數(shù)據(jù)庫double write的開銷,這一切都是數(shù)據(jù)庫向OS能力借力的有效例證。

不過通用關(guān)系型數(shù)據(jù)庫面臨的場景十分復(fù)雜,在某些特殊的高負(fù)載場景下,OS的自動優(yōu)化能力還是無法滿足數(shù)據(jù)庫的需求。2007年引發(fā)的關(guān)于o_direct的討論就是一個十分典型的例證。當(dāng)時數(shù)據(jù)庫廠商需要自己來控制IO,而不是使用OS提供的能力。

圖片

在一個DBA的眼里,Linus的言論似乎是有些武斷了,針對復(fù)雜的通用關(guān)系型數(shù)據(jù)庫來說,數(shù)據(jù)庫自己管理自己的緩沖,在有些時候比完全依賴于OS提供的文件緩沖能力,要高效的多。數(shù)據(jù)庫有自己的一些更為復(fù)雜的判斷熱數(shù)據(jù)的方法,因此在shared buffer中合適AGEOUT頁面,清理哪些頁面,數(shù)據(jù)庫管理系統(tǒng)可能更清楚。

不過對于大多數(shù)業(yè)務(wù)應(yīng)用來說,OS提供的FILE CACHE已經(jīng)能夠很好的幫助我們提升性能了。在目前的Postgresql的官方文檔中,還是建議shared buffer只使用20-30%,剩下的內(nèi)存交給OS。有些PG用戶認(rèn)為這個建議十分好,他們的數(shù)據(jù)庫按照這個建議設(shè)置后性能十分穩(wěn)定。不過也有些用戶認(rèn)為把物理內(nèi)存盡可能交給shared buffer具有更好的性能。這是因?yàn)闃I(yè)務(wù)應(yīng)用場景的復(fù)雜性,導(dǎo)致兩種策略可能在某些場景下會出現(xiàn)相反的效果。

對于一個數(shù)據(jù)庫應(yīng)用系統(tǒng)來說,其優(yōu)化是從上到下的。

圖片

對于一個復(fù)雜的應(yīng)用系統(tǒng)來說,越往上的優(yōu)化器效果就越好,只不過越往上的優(yōu)化對于前期建設(shè)隊(duì)伍的能力要求也越高,前期的投入也越大。對于一些較小的,不太復(fù)雜的應(yīng)用系統(tǒng)來說,只需要從下層做好優(yōu)化就可以了,其實(shí)施成本也很低。而負(fù)載越高,越復(fù)雜的系統(tǒng)就越需要更上層的優(yōu)化。對于有些系統(tǒng)來說,僅僅依賴操作系統(tǒng)提供的優(yōu)化能力就不足夠了。就像是開手動擋的車和自動擋的車,在一般路況下,自動擋車就足夠用了,但是在一些特殊的戶外陡坡上,手動擋車可能可以勝任,自動擋車就完全不勝任了。因?yàn)樽詣踊奶幚砟芰€是有限的。

不過隨著操作系統(tǒng)的不斷發(fā)展,其能力也越來越強(qiáng),操作系統(tǒng)對數(shù)據(jù)庫的支撐能力也在不斷增強(qiáng)。有些以前需要依靠數(shù)據(jù)庫核心代碼去優(yōu)化的工作依然可以由操作系統(tǒng)來承擔(dān)。一些專用場景的數(shù)據(jù)庫產(chǎn)品會首先從中受益,有時候數(shù)據(jù)庫不用做升級,升級一下OS,數(shù)據(jù)庫性能自然就提升了。不過針對某種數(shù)據(jù)庫去定制與優(yōu)化操作系統(tǒng)也是一種思路,在一些云原生的數(shù)據(jù)庫或者公有云RDS上,可能更容易實(shí)現(xiàn)。?

責(zé)任編輯:武曉燕 來源: 白鱔的洞穴
相關(guān)推薦

2024-01-03 09:40:01

QA軟件測試開發(fā)

2024-12-02 12:23:25

2025-04-28 08:35:07

2010-05-11 10:41:21

職業(yè)IT人

2018-07-17 11:20:01

數(shù)據(jù)庫日常管理

2023-07-06 14:52:36

數(shù)據(jù)分析師SQL

2015-06-01 15:11:37

數(shù)據(jù)庫update

2023-07-13 08:12:26

ControllerSpring管理

2018-01-03 09:57:19

異地雙活數(shù)據(jù)庫

2011-03-23 11:11:17

圖片數(shù)據(jù)庫

2022-12-18 19:38:31

時序數(shù)據(jù)庫數(shù)據(jù)庫

2021-12-23 10:54:35

數(shù)據(jù)庫索引技術(shù)

2010-06-09 14:19:35

導(dǎo)入MySQL數(shù)據(jù)庫

2019-07-22 09:55:43

誤刪數(shù)據(jù)庫用戶庫

2024-06-19 09:34:38

系統(tǒng)數(shù)據(jù)庫內(nèi)存

2011-03-23 17:10:41

ACCESSSQL數(shù)據(jù)庫

2014-02-27 10:08:33

NoSQL

2010-04-13 10:42:08

Oracle數(shù)據(jù)庫

2013-03-20 11:25:47

數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計(jì)

2013-03-20 11:33:31

點(diǎn)贊
收藏

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