gpt4 book ai didi

java - 使用 Datastax Cassandra 驱动程序时重新使用 PreparedStatement?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:34 24 4
gpt4 key购买 nike

我目前正在使用 Cassandra 2 的 Datastax Cassandra 驱动程序来执行 cql3。这工作正常。我开始使用 PreparedStatement 的:

Session session = sessionProvider.getSession();
try {
PreparedStatement ps = session.prepare(cql);
ResultSet rs = session.execute(ps.bind(objects));
if (irsr != null) {
irsr.read(rs);
}
}

有时我会在日志中收到来自驱动程序的警告:

Re-preparing already prepared query . Please note that preparing the same query more than once is generally an anti-pattern and will likely affect performance. Consider preparing the statement only once.

这个警告是有道理的,但我不确定我应该如何重用 PreparedStatement

我是否应该只在构造函数/初始化方法中创建我所有的 PreparedStatement 而不是简单地使用它们?

但是当多个线程同时使用相同的PreparedStatement(特别是调用PreparedStatement.bind()来绑定(bind)对象)时,这是否顺利

最佳答案

您可以只初始化一次 PreparedStatement 并在应用程序运行时缓存它。只要 Cassandra 集群启动,它就应该可以使用。

使用来自多个线程的语句是可以的(只要您不通过 setXXX() 方法修改它)。当您调用 bind() 时,下面的代码仅读取 PreparedStatement,然后创建一个 BoundStatement() 的新实例,然后调用者线程可以自由改变该实例。

Here is the source code ,如果您好奇(搜索 bind())。

关于java - 使用 Datastax Cassandra 驱动程序时重新使用 PreparedStatement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915840/

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