Oracle效能解決的一個案例
最近關於Oracle資料庫的一個問題和大家分享一下。
我公司在運營的空中充值業務系統,現在的業務量大概是每天3萬筆充值交易左右(和競爭對手不好比:(),在最近的這段時間的最佳化過程中,為了解決報表查詢緩慢的問題。我在主要的幾張表上加了索引,加了索引以後呢。報表速度的確快了很多,但是帶來的問題是交易速度緩慢了不少,每天業務高峰期老是出現充值擁堵的問題。而且這樣的時間持續了2周時間,把全公司的人都急懷了。
後來透過監控索引,回憶變更記錄,在測試環境上對比分析重於發現是這幾個索引的問題。把這幾個索引Drop了以後,問題就解決了。
在解決這個問題的過程中,用到了一個索引監控的方法和大家分析一下(也是從 《Oracle 9i 效能調整》這本書上學習過來的)。
1.以Owner使用者登入
對要監控的索引執行如下命令
alter index CHARGE_IDX1 monitoring usage;
alter index CHARGE_IDX2 monitoring usage;
alter index CHARGE_IDX3 monitoring usage;
2.查詢 select * from v$object_usage t where t.monitoring='YES'
INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
----------------- ----------- ---------- ---- ------------------- -------------------
CHARGE_IDX1 TCHARGE YES NO 11/27/2007 15:41:28
CHARGE_IDX2 TCHARGE YES NO 11/27/2007 15:41:29
CHARGE_IDX3 TCHARGE YES NO 11/27/2007 15:41:29
可以看到 CHARGE_IDX1,CHARGE_IDX2,CHARGE_IDX3 已經在開始監控的了。
3.過一段時間(比如一天),再去看select * from v$object_usage t where t.monitoring='YES',如果索引使用的話USED就為YES了
INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
----------------- ----------- ---------- ---- ------------------- -------------------
CHARGE_IDX1 TCHARGE YES YES 11/27/2007 15:41:28
CHARGE_IDX2 TCHARGE YES NO 11/27/2007 15:41:29
CHARGE_IDX3 TCHARGE YES NO 11/27/2007 15:41:29
對USED為NO的索引根據情況可以根據需求進行刪除(drop)
4. 完畢後記得關閉索引監控
alter index CHARGE_IDX1 nomonitoring usage;
alter index CHARGE_IDX2 nomonitoring usage;
alter index CHARGE_IDX3 nomonitoring usage;
此外在解決這個問題的另一個感受就是加索引一定要小心。當初為了解決Full Table Scan的查詢,簡單的在資料表上加了索引,殊不知加了索引對日常業務的影響有那麼大(原來1秒4筆的,變成了3秒/筆)。看來只要Full Table Scan不在業務高峰期問題也是可以接受的(在晚上查詢慢一點有何妨?)。如果要解決報表查詢的問題,應該透過資料複製、資料轉移、建立點陣圖索引等方法解決,簡單的增加索引不是解決問題的方法。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90000/viewspace-1043220/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個有關"ORA-01722: 無效數字"的小案例解決過程
- 這個問題誰能解決啊?
- AJAX 是否能解決這個業務需求
- KANO模型,一個能解決你工作中90%煩惱的需求分析神器模型
- 暴力不能解決一切問題
- 大家好!這個Resin的中文問題誰能解決?
- RAG能解決大模型的什麼問題?不能解決什麼問題?大模型
- Oracle技術嘉年華的一個案例,redo的那些事,連載一Oracle
- ORACLE 11G EM問題萬能解決辦法Oracle
- 一個案例,教你巧用DMAIC解決“大問題”!AI
- 利用THOMAS KATE理論,成功解決一個案例
- 用jdon框架出現的問題 一直不能解決框架
- Oracle修改主機名問題解決案例一則Oracle
- Oracle技術嘉年華的一個案例,redo的那些事,連載二Oracle
- Oracle技術嘉年華的一個案例,redo的那些事,連載三Oracle
- Oracle 無效的月份Oracle
- MySQL:一個奇怪的hang案例MySql
- 一個動態ACL的案例
- 一個效能優化的案例優化
- sourceTree這是一個無效的倉庫
- 一次Oracle診斷案例-Spfile案例Oracle
- 一個RMAN備份時導致系統慢解決的案例
- 這個新 Go 錯誤處理提案,能解決問題不?Go
- 專案中的一個AOP的編寫案例(配置+案例)
- 跨境電商ERP能解決的那些問題
- 能解決哪些企業管理問題的CRM?
- 關於J2ee的struts結構不能解決的幾個問題
- Bootstrap一個小案例boot
- oracle啟動案例一則Oracle
- oracle case處理案例(一)Oracle
- 案例: 解決ORACLE ORA-27211的錯誤Oracle
- 求一個ot的專案例項
- 【MySQL】NOT EXISTS優化的一個案例MySql優化
- 一個簡單的MVP模式案例MVP模式
- 巧妙使用exchange partition的一個案例
- 一個濫用程式碼的案例
- 一個簡單的sql稽核案例SQL
- 一個JDO的成功案例分析 (轉)