簡單系統優化
專案描述:
公司oms業務系統執行過程中突然出現cpu爆滿異常,導致業務無法正常訪問。業務部門要求馬上解決此問題,恢復生產,並同時反饋最近部分業務訪問十分緩慢,要求可以針對某些特定業務做優化調整,提高業務人員的工作效率。
責任描述:
檢視dbtime發現超過1500,生成awr報告發現,sql軟解析比值,buffer cache 命中率以及sql重用率非常低,既然是cpu耗費較大,判斷問題原因可能是硬解析或者是邏輯讀過高,檢視cursor_sharing引數,發現此引數設定為similar,判斷此處為cpu異常的根因,因為similar引數已經是oracle廢棄引數,不推薦使用,檢視邏輯讀,沒有發現異常,綜合考慮,問題應該就在硬解析上了,找到原因後對資料庫做了以下調整,
1、將引數改成force,讓共享池強制使用游標,減少硬解析機率。
2、增加了共享池大小,增加軟解析命中率。
3、增加會話游標快取數的數量,增加sql重用率。
重啟資料庫和業務系統,當併發上來之後,cpu穩定保持在10%以下,至此,cpu異常問題解決。接下來針對業務部門提出的部分業務訪問緩慢問題進行分析。
發現如下問題:
1、sql解析時間過長,發現開發人員所編寫大部分sql未進行任何優化,僅僅只是達到業務需求。
2、主流程表出現大量行遷移。
3、索引規劃錯誤,需要常用查詢條件沒有建立相應索引,出現大量全表掃瞄。
4、聯絡開發部門,發現程式包含大量迴圈更新,拉長了執行時間。
考慮到系統為核心系統,首先,我對資料庫層做了如下調整。
1、對主流程表進行重構,將出現行遷移的資料匯入中間表,刪除遷移行,重新將資料匯入原表,消除行遷移,重建索引。
2、根據sql執行計畫,在頻繁出現的查詢列,及條件列根據不同情況建立不同型別的索引。
3、根據sql,將部分無意義索引進行清除。
4、和開發部門相關人員對程式進行改寫,將大量迴圈查詢和更新盡量放在一起操作。
5、重新收集統計資訊。
6、對索引進行監控乙個週期,刪除完全不會使用的索引。
最終結果:業務部門所提出的部分流程,訪問效率有顯著提公升,從之前的40秒壓縮到現在2秒,cpu穩定執行,整體速率得到提公升。
資料庫系統優化 業務邏輯設計優化
當我們優化乙個系統時,有時發現一種情況就是自己修改sql,索引以及分割槽是不能解決效能問題的。這時你要考慮業務邏輯優化和表設計的重構。這兩點的確和設計結合的很緊密。結合實際,我們先談談業務邏輯優化。案例一 我們的系統乙個文件模組,客戶點選時很慢,通過效能分析,是點選是去查詢資料庫,這時系統是通過hi...
Android應用優化之業務優化
作為程式開發者,我們應該也需要花費一些時間放在業務優化上。很多時候迫於時間的關係,當實現業務的方案並非最優。比如為了實現多張的上傳,很多人直接使用序列操作,儘管這樣比較容易達到效果,但並非最優。由於每個產品的業務並不相同,也就很難有通用的優化方案。首先我們先來設立兩個目標。1 如果有可能,序列業務並...
業務報表速度優化
業務報表速度優化 對大資料量的業務報表做速度優化是使用者經常提的需求,特別是大型的erp系統中的報表。下面是我在過程中優化報表生成速度使用幾個方法 1.減少與資料庫的互動 減少與資料庫的互動是非常有效的優化方法,最好一次性將生成報表的所需要的資料從資料庫中讀取出來,這樣生成報表的速度就要快很多 當然...