[20180829]減少日誌生成量.txt
[20180829]減少日誌生成量.txt
--//最近一段時間最佳化一下生產資料庫,主要是問題比我預計要嚴重,實際上exadata實在太快了,把許多問題都給掩蓋了.
--//實際上這個問題很早就存在,我實在不想提,基於國內許多應用都可能存在類似問題,還是寫一下.
SQL ordered by Executions
%CPU - CPU Time as a percentage of Elapsed Time
%IO - User I/O Time as a percentage of Elapsed Time
Total Executions: 13,385,158
Captured SQL account for 65.4% of Total
Executions Rows Processed Rows per Exec Elapsed Time (s) %CPU %IO SQL Id SQL Module SQL Text
....
140,257 139,411 0.99 14.74 101.1 0 5f2atm993xz6w PORTAL.EXE update PD_PMXS SET PDBZ =:"SYS..."
140,256 140,256 1.00 19.11 102 0 bs2qwd0crz5f3 PORTAL.EXE update PD_DLB SET PDBZ =:"SYS_..."
--//一天不到1萬人次就診,修改PD_DLB表在1個小時內就14萬次,注意看Rows per Exec,每次修改1條.很明顯在做無效刷頻.
--//我曾經跟一些開發講過,在寫程式碼時注意這些刷頻語句.這些語句單條執行很快,但是執行很頻繁,累積起來就很可怕.
--//甚至最終就是這樣執行模式導致執行緩慢..
--//真心感到可悲的是,我們團隊大部分比我熟悉表結構,PD_DLB(排隊表)這個表當天處理完後要刪除裡面的記錄的.
--//也就是最大記錄量當天就診人次,不大可能出現每小時14萬次的修改,這麼多人看awr報表,就沒人注意到這麼簡單的問題嗎?
5f2atm993xz6w
update PD_PMXS SET PDBZ =:"SYS_B_0" , STATUS =:"SYS_B_1" WHERE RDID =:1
修改為
update PD_PMXS SET PDBZ =:"SYS_B_0" , STATUS =:"SYS_B_1" WHERE RDID =:1 and PDBZ <> :"SYS_B_0" and STATUS <>:"SYS_B_1"
--//錯誤,應該修改如下:
修改為
update PD_PMXS SET PDBZ =:"SYS_B_0" , STATUS =:"SYS_B_1" WHERE RDID =:1 and (PDBZ,STATUS) not in(( :"SYS_B_0" , :"SYS_B_1" );
bs2qwd0crz5f3
update PD_DLB SET PDBZ =:"SYS_B_0" WHERE RDID =:1
修改為
update PD_DLB SET PDBZ =:"SYS_B_0" WHERE RDID =:1 and PDBZ <> :"SYS_B_0"
--//補充一下實際上不能這樣1條1條改,猜測是開啟brid的遊標,然後迴圈修改相關記錄.
--//這樣執行效率很低,而是一氣呵成,一次修改需要的記錄.
--//不想使用logminer探查,隨手找一個brid查詢,使用as of查詢方式.
SELECT ROWID x
,versions_starttime
,versions_endtime
,versions_xid
,versions_operation
,versions_startscn
,versions_endscn
,PD_DLB.PDBZ,pd_dlb.*
FROM PD_DLB VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE;
WHERE RDID =11327282
ORDER BY versions_endscn;
--//這樣執行10分鐘都沒結果出來,只能改成查詢10分鐘之前的變化.
SELECT ROWID x
,versions_starttime
,versions_endtime
,versions_xid
,versions_operation
,versions_startscn
,versions_endscn
,PD_DLB.PDBZ,pd_dlb.*
FROM PD_DLB VERSIONS BETWEEN TIMESTAMP sysdate-15/1440 and sysdate
WHERE RDID =11327282
ORDER BY versions_endscn;
--//結果不貼出了.15分鐘內查詢到112條,基本在做無用功.可以看出15*60/112 = 8.035, 8秒有一次重新整理.
SELECT ROWID x
,versions_starttime
,versions_endtime
,versions_xid
,versions_operation
,versions_startscn
,versions_endscn
,PD_PMXS.status,PDBZ,PD_PMXS.*
FROM PD_PMXS VERSIONS BETWEEN TIMESTAMP sysdate-15/1440 and sysdate
WHERE RDID =11327282
ORDER BY versions_endscn;
--//看到開發這樣寫程式碼,真心的很無語.這樣問題已經存在多年,這麼多人,無數的眼睛在看程式碼沒人提出異議嗎?可悲可嘆..
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2213259/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 減少日誌產生量小結
- [20180829]ora-00054.txt
- [20180625]簡單計算日誌生成率.txt
- [20181217]ogg抽取日誌分析.txt
- android 測試 kill -3 生成的 trace_xx.txt日誌怎麼重置Android
- 韓國央行:2020年4月韓國出口量同比減少12.6% 出口額減少22.8%
- 使用 Easysearch,日誌儲存少一半
- [20221101]如何減少BIND_EQUIV_FAILURE引起的子游標.txtUIAI
- [20211105]索引分裂 塊清除 日誌增加.txt索引
- 脈脈:2022年企業招聘總職位量同比減少21.67% 純網際網路職位量同比減少50.4%
- changelog 日誌自動生成外掛
- lumen 日誌按天生成檔案
- 成功的專案管理策略:減少成本,提高質量專案管理
- [20181116]18c DML 日誌優化.txt優化
- 地中海飲食加上定期鍛鍊和減少卡路里攝入可減少腹部脂肪和保持肌肉質量
- 產量減少全球葡萄酒價格或上漲
- 『 效率工具 』Spring Boot版的輕量級程式碼生成器,減少70%以上的開發任務Spring Boot
- TXT文字Log日誌分割工具(附工具連結)
- [20221121]rman刪除歸檔日誌問題.txt
- [20220826]顯示alert日誌檔案全路徑.txt
- 輕量級日誌收集方案LokiLoki
- python使用迭代生成器yield減少記憶體佔用的方法Python記憶體
- SOFAStack推出雲原生產品BizStack 可減少30%程式碼量AST
- 海豚排程清理:使用 API 輕鬆清理工作流歷史版本記錄,一鍵減少關係日誌和任務定義日誌表的資料量API
- 利用源生成器,在編譯階段生成對映程式碼,減少執行時反射編譯反射
- 如何減少攻擊面
- laravel欄位減少增加Laravel
- [20181112]11g 日誌傳輸壓縮模式.txt模式
- [20211105]索引分裂塊清除日誌增加(唯一索引).txt索引
- 世界旅遊組織:2020年1-4月全球國際遊客數量平均減少44% 收入減少1950億美元
- 蘋果:預估2022年iPhone出貨量或減少2000萬蘋果iPhone
- face 31減少http請求HTTP
- 減少Android APK的大小99.99%AndroidAPK
- 58安居客房產研究院:2022年3月長春二手房掛牌量環比減少35% 同比減少58%
- WWF:野生物種群數量近50年平均減少2/3
- 世界衛生組織:2023年全球減少鈉攝入量報告
- Wedbush:預計2022年Q4 iPhone產量減少5%至10%iPhone
- 日誌分析-apache日誌分析Apache