【发布时间】: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/秒
如何找到慢查询
- Spring AspectJ on Application 通过@around注解写方法处理时间
- Python 脚本,用于分析日志以使用 avg、min、max time 对列表方法进行排名
- 发现某些 DB 选择调用耗时过长(2~20 秒),通常不到一秒。
- 查找 v$sqlarea 以查找慢查询
- 前 4 个查询的平均时间为 2076 毫秒,其中 concurrency_wait_time 约为 1970 毫秒
CONCURRENCY_WAIT_TIME :并发等待时间(以微秒为单位)
【问题讨论】:
-
表示服务器处理LGWR、DBWn等共享资源等待其他服务器进程释放的时间。