gpt4 book ai didi

javascript - java.Statement.executeQuery() 创建一个不应该的准备好的语句

转载 作者:行者123 更新时间:2023-12-03 05:13:20 24 4
gpt4 key购买 nike

我有大量如下所示的代码:

conn.createStatement().executeQuery("SELECT a, b, c FROM foo;");

在我的 postgres 日志中,我看到大量这样的行:

parse <unnamed>: SELECT a, b, c FROM foo;
bind <unnamed>: SELECT a, b, c FROM foo;
execute <unnamed>: SELECT a, b, c FROM foo;

这是在生产服务器上。

在我的测试服务器上,我看到:

execute <unnamed>: SELECT a, b, c FROM foo;

这就是我期望在生产服务器上看到的内容。

为什么它要尝试为我的简单选择查询创建准备好的语句?

<小时/>

一些背景:

  • Mirth 3.4.1,连接到 Postgres 9.5
  • 我的测试用例位于数据库读取器 channel 中,并且选中了“使用 Javascript”。
  • 但是,从日志来看,似乎每个查询都被解析/绑定(bind)/执行。甚至是 Mirth 提出的内部质疑。

最佳答案

是的,PostgreSQL JDBC 驱动程序使用扩展协议(protocol)(解析/绑定(bind)/执行),除非您强制使用协议(protocol)版本 2。

通常,性能影响很小,因为协议(protocol)消息往往来自单个网络数据包,这应该不是问题。

在强制使用协议(protocol)版本 2 之前,我会三思而后行,好好测试并测试性能差异。这个旧的协议(protocol)版本没有得到很好的支持,并且已经开始变得奇怪了。我们已经认真考虑过取消对它的支持(请参阅 this message 了解最近的讨论)。

关于javascript - java.Statement.executeQuery() 创建一个不应该的准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com