迄今見到最長的SQL...濫用Union
上週,Production DB A的user 反應他們作業的速度變得很慢。
這臺DB用的是IBM X3850 16Core 2.93Ghz 16GB Memory AMS Storage,平時Performance表現十分良好,甚至可以支援一部分Report的作業。
[@more@]SSH連線上去之後,開啟TOP,IOSTAT觀察:
IO在正常範圍,最大IOWAIT不超過5%。
CPU Utilization 比一般要高,時有衝到50%整的現象。
對SMP System而言,這可以認為有Process持續消耗大量CPU。
這是初步印象。
連入Oracle,觀察了下v$session_wait:
select * from v$session_wait where event not in
(select event from stats$idle_event)
發現很多Latch Free.
進一步鑑別:
SELECT l.name,s.* FROM v$session_wait s,v$latchname l
WHERE s.event='latch free' and s.P2=l.LATCH#
發現幾乎一半是Library Cache, 一半是Library Cache Pin。
Client還能繼續執行,排除Compile造成objects被長期鎖住的問題。
那就應該是shared_pool本身出現效能問題。
但這臺DB 的通常應用很穩固,經過一年多調整,已經相當穩定,所以判斷為有新的應用上線。
查了下正在執行的SQL和Library Cache Pin 的Session在執行的SQL:
發現了一個令人驚訝的SQL:
從v$sqltext中Copy到TXT上竟然有140KB.
仔細察看是 N個SQL Union在一起,看來是某個程式自動生成的動態SQL。通知AP人員全部停止該應用後速度恢復正常。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10856805/viewspace-1012871/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 避免單例濫用單例
- 不要濫用IT規劃
- ThinkNet:迄今為止最簡單的語言建模網路
- 迄今為止最浮誇的程式碼編輯器外掛
- Oracle優化案例-又見union代替or(二十)Oracle優化
- 被濫用的 GUI 設計模式GUI設計模式
- 一個濫用程式碼的案例
- WPF-理解被濫用的MVVMMVVM
- 微軟Xbox天蠍座明年釋出 迄今最完美主機微軟
- 不要濫用懶載入
- 轉 介面濫用問題
- union all和union的區別
- union和union all的區別
- Union與Union All的區別
- 維護有感3 -- 被濫用的synchronizedsynchronized
- sql中union和union all的用法SQL
- 【SQL】UNION ALL 與UNION 的區別SQL
- Oracle中的Union、Union All、Intersect、MinusOracle
- 什麼?!90%的ThreadLocal都在濫用或錯用!thread
- Testing on the Toilet:不要濫用MockMock
- 最長
- 智慧計算加速搜尋,中國天眼FAST尋獲球狀星團中迄今最長週期脈衝星AST
- sql中UNION和UNION ALL的區別SQL
- sql中union和union allSQL
- 科學研究與大資料概念的濫用大資料
- 在實際應用中聯合體union的妙用
- 濫用Accessibility service自動安裝應用
- MYSQL merge union merge sort_union 的不同MySql
- [Android]元件化的Kotlin適配–迄今最強的Kotlin踩坑文章(5.24更新)Android元件化Kotlin
- [Android]元件化的Kotlin適配--迄今最強的Kotlin踩坑文章(5.24更新)Android元件化Kotlin
- 理解full outer jion,union,union all
- union 和union all 使用區別
- React新文件:不要濫用effect哦React
- React新文件:不要濫用Ref哦~React
- 創業建議氾濫成災 實用的太少創業
- 好用≠濫用,人臉識別的公共應用邊界在哪裡?
- Oracle的集合操作(union、union all、intersect、minus集合函式)Oracle函式
- MySQL學習(五) UNION與UNION ALLMySql