天天看點

性能優化項目的總結

在性能優化項目中,我隻是一個協助參與的角色,但也正好給了我從外部參看項目運作的機會,需要優化的系統已經是運作了6年的老系統,資料從來沒有做過分離,涉及全庫查詢等緻命的優化問題。另外本次項目的業主也希望對優化工作進行指導,造成走了不少彎路,同時由于垂直資料庫技術不足,從外部找了合作夥伴進行深入性能優化研究。

總之這個項目雖小,但具備了複雜項目的各方面的内容,我也将會對這個項目進行初步的分析。

基礎方向

SQL優化

首先要做的就是找出執行慢的SQL或業務子產品,調查SQL的業務邏輯是否存在可優化的空間。

  1. 我們先做的是根據業務部分給出的緩慢業務,查詢對應的SQL,并在測試環境中模拟運作,并記錄生産環境和測試環境執行響應SQL的時間
  2. 将最有代表性的SQL(常用業務)的執行計劃列出,并檢視索引的執行情況。在本次項目中,發現執行計劃沒有執行設定的索引,這個關鍵問題也是優化的重點方向。

    調整表分區

    表分區一直是資料庫優化的重要首選。根據業務将表按照特定的字段或特定規則進行分區,能夠大大提升資料庫的性能。但需要注意,分區表将影響資料的插入效率,與建立索引相同,在建立表分區的過程中要分析利弊。

    資料量的增加對性能開銷的影響

    項目中存在測試環境與生産環境,其資料量級别不同,環境配置也不同,就會造成執行相同的SQL或業務得到相反的結果,故在性能優化的前期,要至少滿足資料量的同步,這樣可以實作具有相同标準的對比。

    在項目中的系統,将特定表的資料調整為相同時,執行效率基本相同,這就證明:

  3. 性能不是造成SQL執行慢的瓶頸
  4. 資料量的增加會造成緩存的增加,同時效率變換與緩存大小有關,并且和命中率有關。

    讀寫分離

    關于業主

  1. 一味的順應隻能讓自己變成無頭蒼蠅
  2. 當出現信任危機的時候,建立信任可能已經是無法挽回的事情
  3. 溝通頻率要把握清楚,埋頭苦幹也要擡頭看路

繼續閱讀