偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

內(nèi)存還是硬盤(pán)? 數(shù)據(jù)庫(kù)IO瓶頸時(shí)的抉擇

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
數(shù)據(jù)庫(kù)IO瓶頸有兩個(gè)解決方法:一是增加內(nèi)存;二是增加磁盤(pán)。到底是加內(nèi)存合算,還是加磁盤(pán)實(shí)惠呢,Jim Gray在20年前給出的“五分鐘規(guī)則”也許可以幫到我們。

很多DBA在進(jìn)行數(shù)據(jù)庫(kù)管理時(shí)通常都會(huì)遇到數(shù)據(jù)庫(kù)IO瓶頸,在硬件成本預(yù)算有限的情況下,解決這一瓶頸有兩個(gè)方法:一是增加內(nèi)存;二是增加磁盤(pán)(假設(shè)不增加機(jī)器的情況下)。到底是加內(nèi)存合算,還是加磁盤(pán)實(shí)惠呢,這是個(gè)頭疼的問(wèn)題。

已經(jīng)神秘消失的數(shù)據(jù)庫(kù)大師Jim Gray早在20年前就為我們考慮過(guò)這個(gè)問(wèn)題了,并且得出一個(gè)結(jié)論叫“五分鐘規(guī)則”(Five Minutes Rule),就是說(shuō)如果一個(gè)頁(yè)面每五分鐘就會(huì)被訪問(wèn)一次的話,就應(yīng)該把它放到內(nèi)存中去,否則就應(yīng)該把它存儲(chǔ)在磁盤(pán)上。這樣,數(shù)據(jù)庫(kù)只要統(tǒng)計(jì)一下有多少頁(yè)面的訪問(wèn)頻率超過(guò)五分鐘一次,就知道需要多少內(nèi)存了。

當(dāng)然五分鐘是個(gè)典型值,或者表示一個(gè)數(shù)量級(jí),具體的值要看硬件條件。Jim Gray給出的公式是:

RI = 每M數(shù)據(jù)頁(yè)數(shù) * 一塊磁盤(pán)的價(jià)格 / 磁盤(pán)每秒能進(jìn)行的隨機(jī)IO次數(shù) / 每M內(nèi)存的價(jià)格

其中RI即為要放到內(nèi)存的頁(yè)面訪問(wèn)時(shí)間周期閾值。

這個(gè)一公式可以這么理解。假設(shè)你拿到一個(gè)頁(yè)面,它的訪問(wèn)周期是I。你要決定是買內(nèi)存來(lái)存儲(chǔ)這個(gè)頁(yè)面還是買磁盤(pán)來(lái)存儲(chǔ)它。假設(shè)買內(nèi)存來(lái)存儲(chǔ),開(kāi)銷很容易算出來(lái)是"每M內(nèi)存價(jià)格/每M數(shù)據(jù)頁(yè)數(shù)"。如果買磁盤(pán)來(lái)存,則開(kāi)銷是"一塊磁盤(pán)的價(jià)格 / 磁盤(pán)每秒能進(jìn)行的隨機(jī)IO次數(shù) / I",意思是說(shuō),我買個(gè)磁盤(pán)花的錢是“一塊磁盤(pán)的價(jià)格”這么多,再我這個(gè)頁(yè)一秒只會(huì)訪問(wèn)"1/I"次,因此我只占用了磁盤(pán)帶寬的"1/I/磁盤(pán)每秒能進(jìn)行的隨機(jī)IO次數(shù)",因此為這個(gè)頁(yè)花的開(kāi)銷就是“一塊磁盤(pán)的價(jià)格 / 磁盤(pán)每秒能進(jìn)行的隨機(jī)IO次數(shù) / I"。

這樣,導(dǎo)致內(nèi)存開(kāi)銷"每M內(nèi)存價(jià)格/每M數(shù)據(jù)頁(yè)數(shù)"與磁盤(pán)開(kāi)銷"一塊磁盤(pán)的價(jià)格 / 磁盤(pán)每秒能進(jìn)行的隨機(jī)IO次數(shù) / I"相等的I值即為訪問(wèn)時(shí)間周期閾值,計(jì)算出來(lái)就是公式中的RI。

在數(shù)據(jù)庫(kù)IO瓶頸時(shí),針對(duì)當(dāng)前常用硬件來(lái)計(jì)算一下。設(shè)頁(yè)面大小為16K(InnoDB默認(rèn)頁(yè)面大?。簿褪敲縈數(shù)據(jù)頁(yè)數(shù)64,一塊SAS盤(pán)算3000塊,每秒能進(jìn)行200次隨機(jī)IO,4G的內(nèi)存算3000塊一條,也就是每M內(nèi)存0.75元。這樣算出來(lái)RI是1280秒,也就是20分鐘左右。

可惜的是MySQL并不提供頁(yè)面的訪問(wèn)頻率統(tǒng)計(jì)功能。可以用一個(gè)方法來(lái)代替,就是把數(shù)據(jù)庫(kù)關(guān)掉,起來(lái)后看20分鐘內(nèi)數(shù)據(jù)庫(kù)的緩存有沒(méi)有滿,若沒(méi)有滿,表示內(nèi)存太大,否則表示內(nèi)存太小。只是在熱門(mén)時(shí)間段肯定是不會(huì)去做這個(gè)實(shí)驗(yàn)的,非熱門(mén)時(shí)間段倒是可以把數(shù)據(jù)庫(kù)重起下,但這時(shí)負(fù)載輕又不準(zhǔn)了。即使是哪天MySQL crash了,在熱門(mén)時(shí)間段crash后要做很多redo,又不準(zhǔn)了。

實(shí)際上這一功能是可以實(shí)現(xiàn)的,統(tǒng)計(jì)有多少個(gè)20分鐘訪問(wèn)一次的頁(yè)面可以近似的轉(zhuǎn)化為統(tǒng)計(jì)20分鐘內(nèi)有多少個(gè)不同的頁(yè)面被訪問(wèn)。假設(shè)系統(tǒng)中內(nèi)存大小與理想值相差不太大,則只需要多用不到1/1000的內(nèi)存就可以統(tǒng)計(jì)出來(lái),當(dāng)然每次頁(yè)面訪問(wèn)時(shí)要多搜索一個(gè)哈希表。嗯,在NTSE里準(zhǔn)備實(shí)現(xiàn)吧,哈哈。

當(dāng)然這一計(jì)算已經(jīng)忽略了很多實(shí)際因素,比如如果你機(jī)器上的RAID卡已經(jīng)滿了不能加硬盤(pán),那就只好加內(nèi)存了,如果內(nèi)存槽插滿了,那就只好加硬盤(pán)了。如果硬盤(pán)和內(nèi)存都加不了,那就加機(jī)器吧。另外上述計(jì)算假設(shè)頁(yè)面訪問(wèn)是完全隨機(jī)的,如果是順序訪問(wèn),那就大不相同了,這時(shí)的RI會(huì)小很多,因?yàn)檫@時(shí)磁盤(pán)每秒能讀入的頁(yè)面數(shù)增加了。

 

【編輯推薦】

  1. MySQL數(shù)據(jù)庫(kù)性能優(yōu)化的關(guān)鍵參數(shù)
  2. 磁盤(pán)排序?qū)racle數(shù)據(jù)庫(kù)性能的影響
  3. 優(yōu)化數(shù)據(jù)庫(kù)大幅度提高Oracle的性能
  4. 數(shù)據(jù)庫(kù)機(jī)時(shí)代將到來(lái) DBA面臨新挑戰(zhàn)
  5. 高手詳解SQL性能優(yōu)化十條經(jīng)驗(yàn)
責(zé)任編輯:佚名 來(lái)源: Web思想
相關(guān)推薦

2013-07-02 09:34:58

數(shù)據(jù)庫(kù)HadoopNoSQL

2024-05-08 08:14:18

數(shù)據(jù)庫(kù)IO備份

2011-04-14 09:38:55

內(nèi)存數(shù)據(jù)庫(kù)

2009-12-31 09:23:59

2015-10-28 14:45:35

ORACLE AIO異步IO

2015-10-28 17:39:04

ORACLE AIO異步IO

2023-12-18 14:55:00

Oracle數(shù)據(jù)庫(kù)監(jiān)控

2009-06-30 15:22:00

Java還是.NET

2021-07-01 10:45:08

硬盤(pán)數(shù)據(jù)庫(kù)性能

2021-08-20 10:41:47

開(kāi)發(fā)工具代碼

2019-08-15 07:00:54

SQLite數(shù)據(jù)庫(kù)內(nèi)存數(shù)據(jù)庫(kù)

2011-04-14 09:27:37

內(nèi)存數(shù)據(jù)庫(kù)

2022-12-07 18:45:22

內(nèi)存數(shù)據(jù)庫(kù)Redis

2010-11-04 09:07:25

2011-08-03 14:02:02

數(shù)據(jù)庫(kù)連接ACCESS

2023-01-24 15:58:39

數(shù)據(jù)庫(kù)架構(gòu)編程語(yǔ)言

2018-07-13 15:56:39

緩存數(shù)據(jù)庫(kù)數(shù)據(jù)

2020-10-05 21:49:35

蜜罐惡意軟件黑客

2011-03-17 16:51:51

SQLServer數(shù)據(jù)加速劑

2013-05-07 09:14:35

OpenStack
點(diǎn)贊
收藏

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