Oracle CONCURRENCY_WAIT_TIME在这里是什么意思?

时间:2017-07-28 07:11:54

标签: java sql oracle jmeter

问题

  • 对于简单的选择查询,使用concurrency_wait_time需要更长的时间,而访问表没有插入,更新或删除,有什么方法可以做某种 脏读 对于Oracle中特定表中的行?
  • CONCURRENCY_WAIT_TIME究竟是什么意思?我可以猜测,当从多个会话访问表中的同一行(记录)时会发生concurrency_wait_time吗?即使只使用只读?

场合

我一直在对WEB和REST API服务器进行负载测试,发现简单的选择查询花费的时间比预期的要长。

如何测试

  • 来自桌面的Jmeter,500个并发POST请求重复3次以上

吞吐量结果

  • 每次使用100 maxActive时的30 /秒
  • 22 /秒,每个实例使用200个maxActive

如何查找慢查询

  1. Spring AspectJ on Application通过@around annotation编写方法处理时间
  2. 使用avg,min,max time分析日志排名列表方法的Python脚本
  3. 发现一些数据库选择调用时间过长(2~20秒),通常需要不到一秒钟。
  4. 查找v $ sqlarea以查找慢查询
  5. 发现前4个查询,平均时间为2076毫秒,大约为1970毫秒concurrency_wait_time
  6. enter image description here

      

    CONCURRENCY_WAIT_TIME:并发等待时间(以微秒为单位)

    Oracle V$SQLAREA Definition

1 个答案:

答案 0 :(得分:1)

我建议在其他地方寻找瓶颈:

  

CONCURRENCY_WAIT_TIME:并发等待时间(微秒

Microsecond是百万分之一秒,所以它不应该导致显着的延迟,它是基于ie latches的内部Oracle同步机制,它非常简单和快速。

  1. 确保您的Java应用程序服务器和数据库服务器都有适当的基准操作系统运行状况指标监控,可能原因是平庸的资源缺乏(CPU,RAM,网络或磁盘)。您可以使用JMeter PerfMon Plugin
  2. 如果您的系统没有超载并且您仍然对处理时间不满意,可以考虑使用YourKitJProfiler之类的Java Profilers来查找相关的繁重方法。
  3. 最后,您可以向DBA报告慢查询,以便他们可以查看查询优化的方法。