優(yōu)化概要

數(shù)據(jù)庫(kù)的性能取決于很多因素,比如:表,查詢(xún),和配置。配置就是最簡(jiǎn)單的算法,用于調(diào)整程序邏輯,以便適應(yīng)更多場(chǎng)景。優(yōu)化主要從如下幾個(gè)方面進(jìn)行:

  • 硬件層面
  • 數(shù)據(jù)庫(kù)層面
  • 可移植和性能的平衡

硬件層面

隨著數(shù)據(jù)庫(kù)的越來(lái)越忙碌,任何一個(gè)數(shù)據(jù)庫(kù)應(yīng)用最終會(huì)受到硬件的制約。一個(gè)DBA一定要評(píng)估是否可以通過(guò)調(diào)整應(yīng)用或者重新配置服務(wù)器來(lái)避免瓶頸,是否需要更多硬件資源。系統(tǒng)瓶頸一般有如下幾個(gè)來(lái)源:

  • 磁盤(pán)尋址
    磁盤(pán)上尋找一塊數(shù)據(jù)的時(shí)間。在現(xiàn)在的磁盤(pán)中,平均時(shí)間通常小于10ms,所以我們可以尋找100次在1s內(nèi)。這個(gè)時(shí)間對(duì)于新磁盤(pán)有小幅度提高,對(duì)單表的優(yōu)化非常難。優(yōu)化尋找數(shù)據(jù)的時(shí)間是將數(shù)據(jù)分布到多個(gè)磁盤(pán)。

  • 磁盤(pán)讀寫(xiě)
    當(dāng)磁盤(pán)到達(dá)正確的位置,我們需要讀寫(xiě)數(shù)據(jù)?,F(xiàn)在磁盤(pán)中,一個(gè)磁盤(pán)吞吐至少10-20MB/S。你可以通過(guò)并行讀取多個(gè)磁盤(pán)。

  • CPU周期
    當(dāng)數(shù)據(jù)在內(nèi)存的時(shí)候,我們?yōu)榱说玫浇Y(jié)果來(lái)處理數(shù)據(jù)。大量的大表是主要的因素。對(duì)于小表,完全不是問(wèn)題。

  • 主存帶寬
    當(dāng)CPU需要更多數(shù)據(jù),而不是命中CPU自帶的緩存。主存帶寬就是一個(gè)瓶頸,多數(shù)系統(tǒng)基本不會(huì)是這個(gè)瓶頸。

數(shù)據(jù)庫(kù)層面

  • 表結(jié)構(gòu)的合理性。列的數(shù)據(jù)類(lèi)型的合理性,一個(gè)表中列的合理性。比如:多更新數(shù)據(jù)應(yīng)該設(shè)計(jì)多表(少列),分析大量數(shù)據(jù)則設(shè)計(jì)成少表(多列)。
  • 合理的索引。索引的數(shù)據(jù)結(jié)構(gòu)偉B樹(shù),查詢(xún)效率很高。而且Mysql的鎖的機(jī)的粒度就是基于索引。
  • 對(duì)于行的格式設(shè)定。Mysql的行的設(shè)置模式有:COMPACT,REDUNDANT,DYNAMIC,COMPRESSED。引擎Innodb默認(rèn)COMPACT。
  • 正確的鎖策略。分為共享模式和排他模式,選用Innodb引擎性能更好。
  • 配置緩存合適的大小。具體就是配置InnoDB buffer pool合適的大小。

可移植和性能的平衡

編寫(xiě)高新能的SQL語(yǔ)句(Mysql 特殊SQL方言)和可移植的SQL語(yǔ)句需要進(jìn)行取舍。

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

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

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