问题
- 对于简单的选择查询,使用concurrency_wait_time需要更长的时间,而访问表没有插入,更新或删除,有什么方法可以做某种 脏读 对于Oracle中特定表中的行?
- CONCURRENCY_WAIT_TIME究竟是什么意思?我可以猜测,当从多个会话访问表中的同一行(记录)时会发生concurrency_wait_time吗?即使只使用只读?
场合
我一直在对WEB和REST API服务器进行负载测试,发现简单的选择查询花费的时间比预期的要长。
如何测试
- 来自桌面的Jmeter,500个并发POST请求重复3次以上
吞吐量结果
- 每次使用100 maxActive时的30 /秒
- 22 /秒,每个实例使用200个maxActive
如何查找慢查询
- Spring AspectJ on Application通过@around annotation编写方法处理时间
- 使用avg,min,max time分析日志排名列表方法的Python脚本
- 发现一些数据库选择调用时间过长(2~20秒),通常需要不到一秒钟。
- 查找v $ sqlarea以查找慢查询
- 发现前4个查询,平均时间为2076毫秒,大约为1970毫秒concurrency_wait_time
醇>
CONCURRENCY_WAIT_TIME:并发等待时间(以微秒为单位)
Oracle V$SQLAREA Definition