性能優化項目的總結

在性能優化項目中,我只是一個協助參與的角色,但也正好給了我從外部參看項目運作的機會,需要優化的系統已經是運行了6年的老系統,數據從來沒有做過分離,涉及全庫查詢等致命的優化問題。另外本次項目的業主也希望對優化工作進行指導,造成走了不少彎路,同時由於垂直數據庫技術不足,從外部找了合作伙伴進行深入性能優化研究。
總之這個項目雖小,但具備了複雜項目的各方面的內容,我也將會對這個項目進行初步的分析。

基礎方向

SQL優化

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

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

    調整表分區

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

    數據量的增加對性能開銷的影響

    項目中存在測試環境與生產環境,其數據量級別不同,環境配置也不同,就會造成執行相同的SQL或業務得到相反的結果,故在性能優化的前期,要至少滿足數據量的同步,這樣可以實現具有相同標準的對比。
    在項目中的系統,將特定表的數據調整爲相同時,執行效率基本相同,這就證明:

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

    讀寫分離

    由於系統的業務數據量過大,且根據需求要滿足無條件限制的查詢,這樣就勢必造成全表掃描。爲了能夠查詢效率,必須要實現讀寫分離,在業務時間範圍只進行讀操作(對查詢時限要求較低),非業務時間將數據進行同步。

    關於業主

    本次項目的業主,技術負責人對技術要求極爲苛刻,當然這也是爲了項目能夠順利進行的必要條件,如何才能順應這樣的客戶,時限快速迭代,快速彙報?在項目初期,我們也走了很多彎路。

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

以上是我們在於業務溝通和處事時出現的問題,當然問題的源頭也出在開始我們對項目理解不清楚。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章