任何人都可以清除我的怀疑吗?
请参阅文档https://docs.oracle.com/cd/B28359_01/java.111/b31224/oraperf.htm,假设我使用与绑定变量相同的SQL批量更新(批量大小= 10),当来到Oracle数据库时,SQL执行将是1次还是10次?
从我在EM监控中观察到的情况来看,SQL执行是10次。这是正常的预期行为还是可以优化在Oracle db中执行1次?
答案 0 :(得分:0)
您链接到的文档有很多条件需要真实才能生效。使用Oracle的增强版本,您只能使用预准备语句以及其他限制。如果您在每个语句后执行提交,则结束批处理。
我会相信EM统计;但是随意发布一些代码,这样我们就可以提供更多的东西。
更新
@ ibre5041是对的;您必须查看网络往返和来自客户端的数据,以确定是否正在批量处理语句。
有几种方法可以做到这一点; dba可以监视v $ sysstat的统计信息,例如"发送的消息" "通过SQL * Net从客户端收到的字节"等,并启用批处理进行测试,并在禁用批处理时再次测试。另一种方法是使用Wireshark或snoop或其他网络数据包实用程序捕获网络流量,以查看您是否来回14,000次或更少。您还可以打开SQLNet侦听器上的监视。
您发布的更新SQL看起来很适合满足某些要求。问题仍然存在,无论您是使用预准备语句,还是您的应用程序是否正在调用提交,以及您是否正在关闭循环中的语句或连接。
答案 1 :(得分:0)