【问题标题】:What does Oracle CONCURRENCY_WAIT_TIME mean here?Oracle CONCURRENCY_WAIT_TIME 在这里是什么意思?
【发布时间】:2017-07-30 21:16:51
【问题描述】:

问题

  • 对于简单的选择查询,使用 concurrency_wait_time 需要更长的时间,而访问表不会被插入、更新或删除,有什么方法可以做一些 脏读 strong> 用于 Oracle 中特定表中的行?
  • CONCURRENCY_WAIT_TIME 在这里到底是什么意思?我可以猜测从多个会话访问表上的同一行(记录)时会发生 concurrency_wait_time 吗?即使使用只读?

情况

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

如何测试

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

吞吐量结果

  • 每个实例使用 100 maxActive 时为 30/秒
  • 每个实例使用 200 maxActive 时为 22/秒

如何找到慢查询

  1. Spring AspectJ on Application 通过@around注解写方法处理时间
  2. Python 脚本,用于分析日志以使用 avg、min、max time 对列表方法进行排名
  3. 发现某些 DB 选择调用耗时过长(2~20 秒),通常不到一秒。
  4. 查找 v$sqlarea 以查找慢查询
  5. 前 4 个查询的平均时间为 2076 毫秒,其中 concurrency_wait_time 约为 1970 毫秒

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

Oracle V$SQLAREA Definition

【问题讨论】:

  • 表示服务器处理LGWR、DBWn等共享资源等待其他服务器进程释放的时间。

标签: java sql oracle jmeter


【解决方案1】:

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

CONCURRENCY_WAIT_TIME :并发等待时间(微秒

Microsecond是百万分之一秒,所以不会造成很大的延迟,它是基于latches的Oracle内部同步机制,非常简单快速。

  1. 确保您对 Java 应用程序服务器和数据库服务器都进行了基线操作系统运行状况指标监控,原因可能是资源(CPU、RAM、网络或磁盘)普遍不足。您可以为此使用JMeter PerfMon Plugin
  2. 如果您的系统没有过载并且您仍然对处理时间不满意,您可以考虑使用 Java Profiler,例如 YourKitJProfiler 来查找相关的繁重方法。
  3. 最后,您可以向 DBA 报告慢查询,以便他们了解查询优化的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-25
    • 2021-04-14
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多