優(yōu)化數(shù)據(jù)庫對象

優(yōu)化表的數(shù)據(jù)類型

procedure anylyse() 可以對當(dāng)前應(yīng)用的表進(jìn)行分析,該函數(shù)可以對數(shù)據(jù)表中列的數(shù)據(jù)類型提出優(yōu)化建議

select * from tablename procedure analyse();

通過拆分提高表的訪問效率

這里所說的拆分,是指對數(shù)據(jù)表進(jìn)行拆分。如果針對 MyISAM 類型的表進(jìn)行,那么有兩種拆分方法

  • 第一種是垂直拆分,即把主碼和一些列放到一個(gè)表,然后把主碼和另外的列放到另一個(gè)表中。如果一個(gè)表中某些列常用,而另一些列不常用,則可以采用垂直拆分,另外,垂直拆分可以使得數(shù)據(jù)行變小,一個(gè)數(shù)據(jù)頁就能存放更多的數(shù)據(jù),在查詢時(shí)就會(huì)減少 I/O 次數(shù)。其缺點(diǎn)是需要管理冗余列,查詢所有數(shù)據(jù)需要聯(lián)合操作
  • 第二種方法是水平拆分,即根據(jù)一列或多列數(shù)據(jù)的值把數(shù)據(jù)行放到兩個(gè)獨(dú)立的表中。水平拆分通常在以下幾種情況下使用:
    • 表很大,分割后可以降低在查詢時(shí)需要讀的數(shù)據(jù)和索引的頁數(shù),同時(shí)也降低了索引的層數(shù),提高查詢速度
    • 表中的數(shù)據(jù)本來就有獨(dú)立性,例如,表中分別記錄各個(gè)地區(qū)的數(shù)據(jù)或不同時(shí)期的數(shù)據(jù),特別是有些數(shù)據(jù)常用,而另外一些數(shù)據(jù)不常用
    • 而要把數(shù)據(jù)存放到多個(gè)介質(zhì)上

逆規(guī)范化

數(shù)據(jù)庫設(shè)計(jì)時(shí)要滿足規(guī)范化這個(gè)道理大家都非常清楚,但是否數(shù)據(jù)的規(guī)范化程度越高越好呢?這還是由實(shí)際需求來決定。因?yàn)橐?guī)范化越高,那么產(chǎn)生的關(guān)系就越多,關(guān)系過多的直接結(jié)果就是導(dǎo)致表之間的連接操作越頻繁,而表之間的連接操作是性能較低的操作,直接影響到查詢的速度,所以,對于查詢較多的應(yīng)用,就需要根據(jù)實(shí)際情況運(yùn)用逆規(guī)范化對數(shù)據(jù)進(jìn)行設(shè)計(jì),通過逆規(guī)范化來提高查詢的性能

反規(guī)范的好處是降低連接操作的需求降低外碼和索引的數(shù)目,還可能減少表的數(shù)目,相應(yīng)帶來的問題是可能出現(xiàn)數(shù)據(jù)的完整性問題。加快查詢速度,但會(huì)降低修改速度。因此,決定做反規(guī)范時(shí),一定要權(quán)衡利弊,仔細(xì)分析應(yīng)用的數(shù)據(jù)存取需求和實(shí)際的性能特點(diǎn),好的索引和其他方法經(jīng)常能夠解決性能問題,而不必采用反規(guī)范這種方法

在進(jìn)行反規(guī)范操作之前,要充分考慮數(shù)據(jù)的存取需求,常用表表的大小,一些特殊的計(jì)算,數(shù)據(jù)的物理存儲(chǔ)位置等。常用的反規(guī)范技術(shù)有增加冗余列,增加派生列,重新組表和分割表

另外,逆規(guī)范技術(shù)需要維護(hù)數(shù)據(jù)的完整性。無論使用何種反規(guī)范技術(shù),都需要一定的管理來維護(hù)數(shù)據(jù)的完整性,常用的方法是批處理維護(hù),應(yīng)用邏輯和觸發(fā)器

使用中間表提高統(tǒng)計(jì)查詢速度

對于數(shù)據(jù)量較大的表,在其上進(jìn)行統(tǒng)計(jì)查詢通常會(huì)效率很低,并且還要考慮統(tǒng)計(jì)查詢是否會(huì)對在線的應(yīng)用產(chǎn)生負(fù)面影響。通常在這種情況下,使用中間表可以提高統(tǒng)計(jì)查詢的效率

中間表復(fù)制原表部分?jǐn)?shù)據(jù),并且與原表相隔離,在中間表上做統(tǒng)計(jì)查詢不會(huì)對在線應(yīng)用產(chǎn)生負(fù)面影響

中間表上可以靈活的添加索引或正價(jià)臨時(shí)用的新字段,從而達(dá)到提高統(tǒng)計(jì)查詢效率和輔助統(tǒng)計(jì)查詢作用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容