數(shù)據(jù)庫性能優(yōu)化的誤區(qū)
常見的數(shù)據(jù)庫系統(tǒng)優(yōu)化中的一些觀點(diǎn):
“系統(tǒng)性能出現(xiàn)問題進(jìn)行優(yōu)化,一定要深入了解數(shù)據(jù)庫內(nèi)部參數(shù)、等待事件、Latch、緩沖池、trace文件、查詢/優(yōu)化引擎等底層細(xì)節(jié)?!?/strong>
這種觀點(diǎn)往往出自數(shù)據(jù)庫“高手”,這部分人以了解數(shù)據(jù)庫底層實(shí)現(xiàn)細(xì)節(jié)而感到非常驕傲。但是從優(yōu)化角度講數(shù)據(jù)庫的等待事件、Latch等指標(biāo)高等等都只是問題的表象,懂得底層細(xì)節(jié)和內(nèi)幕固然是好。但是解決問題的關(guān)鍵往往是在應(yīng)用層進(jìn)行優(yōu)化。
“只要系統(tǒng)參數(shù)調(diào)整了,性能就能提高。系統(tǒng)優(yōu)化應(yīng)該調(diào)整那些參數(shù)…”
這種觀點(diǎn)往往出自于一些偏運(yùn)維和應(yīng)用層的DBA,迷戀參數(shù)配置來調(diào)優(yōu)。
調(diào)整系統(tǒng)參數(shù)是非常重要的,但不一定能解決性能問題,否則就不會有去IOE了,問題可能性最大的還是應(yīng)用設(shè)計(jì)和開發(fā)問題。
同理,很多運(yùn)維人員和系統(tǒng)架構(gòu)師比較迷戀“Linux系統(tǒng)調(diào)優(yōu)”。認(rèn)為的對“文件句柄數(shù)、CPU/內(nèi)存/磁盤子系統(tǒng)…”各種參數(shù)做了優(yōu)化,以為這就能提升整個應(yīng)用系統(tǒng)的性能。其實(shí)不然。有些場景下,針對業(yè)務(wù)特點(diǎn)和應(yīng)用類型做操作系統(tǒng)調(diào)優(yōu)是能取到立竿見影的效果,但是大多數(shù)時候往往提升并不明顯。所以最關(guān)鍵的還是找出瓶頸所在,對癥下藥。
“系統(tǒng)性能問題需要從架構(gòu)上解決,與應(yīng)用開發(fā)關(guān)系不大。”
系統(tǒng)性能與各個層面都有關(guān),整體架構(gòu)很重要,但應(yīng)用開發(fā)也是非常重要的一環(huán)。
“你們必須要做讀寫分離,必須要弄分庫分表。”
這種通常是“吹水”的人常在外面忽悠的,這些技術(shù)手段都被說爛了。
反問一句,了解數(shù)據(jù)量嗎?知道實(shí)際壓力和瓶頸嗎?了解讀寫比如何嗎?怎么拆?拆了之后怎么玩?
上述那些觀點(diǎn),都是比較片面的,還是需要結(jié)合實(shí)際情況辯證分析。
常見影響數(shù)據(jù)庫性能的因素
1.業(yè)務(wù)需求和技術(shù)選型
2.應(yīng)用系統(tǒng)的開發(fā)及架構(gòu)
3.數(shù)據(jù)庫自身
3.1表結(jié)構(gòu)的設(shè)計(jì)
3.2查詢語句
3.3索引設(shè)計(jì)
3.4Mysql服務(wù)(安裝、配置等)
3.5操作系統(tǒng)調(diào)優(yōu)
3.6硬件升級(SSD、更強(qiáng)的CPU、更大的內(nèi)存)
4.數(shù)據(jù)架構(gòu)(讀寫分離、分庫分表等)
性能調(diào)優(yōu)的基本方法論

理想的數(shù)據(jù)庫優(yōu)化順序

在很多情況下,數(shù)據(jù)庫可能是互聯(lián)網(wǎng)應(yīng)用系統(tǒng)的最大瓶頸。但是單純從數(shù)據(jù)庫角度去做優(yōu)化,可能未必能達(dá)到理想的效果。

浙公網(wǎng)安備 33010602011771號