2017-07-28 80 views
0

問題Oracle CONCURRENCY_WAIT_TIME在這裏表示什麼?

  • 對於簡單的選擇查詢與concurrency_wait_time需要更長的時間,而訪問表沒有得到插入,更新或刪除,有沒有什麼辦法,我可以做某種髒讀對於Oracle中特定表中的行?
  • CONCURRENCY_WAIT_TIME在這裏的含義是什麼?我可以猜測,在多個會話的表上訪問同一行(記錄)時會發生concurrency_wait_time嗎?即使使用只讀?

形勢

我一直在Web和REST API服務器做負載測試,發現簡單的選擇查詢是需要時間比預期更長。

如何它是從桌面測試

  • 的JMeter,500併發POST請求重複3次,並且更

吞吐量結果

  • 30 /秒時,使用100 maxActive每個實例
  • 22 /秒時,每個實例使用200 maxActive

如何找到慢查詢

  1. 春AspectJ的應用上通過@Around註解寫方法處理時間
  2. Python腳本來分析日誌以平均值,最小值,最大值時間對列表方法進行排名
  3. 發現某些數據庫選擇調用花費的時間太長(2〜20秒),通常不到一秒鐘。
  4. 查找V $ SQLAREA找到慢查詢
  5. 前被發現,平均時間4查詢2076毫秒,其中有1970年左右,MS concurrency_wait_time

enter image description here

CONCURRENCY_WAIT_TIME:併發等待時間(微秒)

Oracle V$SQLAREA Definition

+1

它表示服務器處理此類LGWR,DBWn的時間花費在等待必須由其他服務器進程釋放的共享資源。 – fg78nc

回答

1

我建議找一個瓶頸,在其他地方爲尋找到:

CONCURRENCY_WAIT_TIME:併發等待時間(以微秒

Microsecond是一個百萬分之一秒等等它不應該造成顯着的延遲,它是基於內部Oracle的同步機制,例如latches,它非常簡單和快速。

  1. 確保您有兩個Java應用程序服務器和數據庫服務器到位基線OS衛生指標監測,也許原因是平庸缺乏資源(CPU,內存,網絡或磁盤)。您可以使用JMeter PerfMon Plugin
  2. 如果您的系統沒有超載,並且您對處理時間仍然不滿意,那麼可以考慮使用Java Profiler如YourKitJProfiler來查找相關的繁重方法。
  3. 最後,您可以向DBA報告緩慢的查詢,以便他們可以查看查詢優化的方式。