1. 程式人生 > >2.MySQL優化概述

2.MySQL優化概述

介紹

資料庫效能取決於資料庫級別的幾個因素,例如表,查詢和配置設定。 這些軟體結構導致硬體級別的CPU和I/O操作,必須儘可能地降低這些操作並使其儘可能高效。 在處理資料庫效能時,首先要了解軟體方面的高階規則和指南,並使用掛鐘時間來衡量效能。

1 在資料庫級別進行優化

1.1 基本原則

  • 對於表設計,針對更新插入頻繁的系統,應該在採用列數較少的表,而再進行統計查詢時,應該使用少量的列多的大表避免關聯查詢。
  • 正確的使用索引
  • 瞭解儲存引擎的優缺點,正確的使用儲存引擎。

在新版本MySQL中預設的儲存引擎是InnoDB,在現有版本中InnoDB的效能通常都優於MyISAM,尤其是對於訪問量比較大的資料庫。

  • 行格式也比較重要,壓縮適用於InnoDB引擎的各種工作負載,以及只讀MyISAM表,所以對於大表應該優先進行使用壓縮表。
  • InnoDB可以更好的處理併發事務而無需人工干預,減少程式碼的實驗和調優。
  • 合理配置快取,,足夠大以容納頻繁訪問的資料,但不能太大以至於它們會超載實體記憶體並導致分頁。要配置的主要記憶體區域是InnoDB buffer pool和MyISAM key cache。

2 在硬體級別進行調優

隨著資料庫變得越來越忙,任何資料庫應用程式最終都會達到硬體限制。 DBA必須評估是否可以調整應用程式或重新配置伺服器以避免這些瓶頸,或者是否需要更多硬體資源。 系統瓶頸通常來自這些來源:

  • 磁碟定址。在現在的告訴磁碟下,每次定址的平均時間小於10ms,所以可以通過變為固態硬碟,或者使用多磁碟併發解決。
  • 磁碟讀寫。同樣使用多磁碟並行讀取。
  • CPU週期。當資料在主存時,我們經過處理得到資料,由於大表很可能超過快取,這一般是限制效率的常見因素,小表一般不存在此問題。
  • 記憶體頻寬。當CPU需要的資料量超過CPU快取容量時,主存就成了瓶頸。一般不會出現。

3 平衡可移植性和效能

由於hint都是資料庫特有的,所以在做優化的時候需要平衡可移植性與效能。