在使用Datastax Cassandra驱动程序时是否重新使用PreparedStatement?

TinusSky:

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

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在构造函数/ init方法中创建所有我的函数,而不是简单地使用它们?

但是,当多个线程同时使用同一线程PreparedStatement时(尤其是调用PreparedStatement.bind()绑定对象),这样做是否很好?

丹尼尔·S:

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

使用多个线程中的语句很好(只要您不通过setXXX()方法修改它即可)。当您调用bind()时,下面的代码仅读取PreparedStatement,然后创建BoundStatement()的新实例,然后调用者线程可以随意对其进行突变。

如果您有好奇心,请查看以下源代码(搜索bind())。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Datastax Cassandra Java驱动程序的Accessor是否使用分页?

使用 Datastax Cassandra 驱动程序时出现无效类型错误

使用DataStax C#驱动程序时故障转移不适用于Cassandra

Datastax Java Cassandra驱动程序:使用WHERE的多个AND语句?

Nodejs - Apache Cassandra(使用 Datastax 驱动程序)

尝试使用python安装cassandra驱动程序时出错

无法使用 Cassandra Datastax Java 驱动程序连接到 Cassandra 节点之一

如何使用Datastax Java驱动程序有效地使用批写入Cassandra?

如何使用datastax驱动程序创建Cassandra连接池

使用datastax驱动程序检索有关Cassandra集群数据中心的信息

无法使用DataStax C#驱动程序从Cassandra获取值

如何使用 C# Datastax 驱动程序删除 Cassandra 上的表?

如何使用带有Datastax Java驱动程序的CQL向Cassandra添加任意列?

Cassandra:使用DataStax Java驱动程序选择一系列TimeUUID

使用DataStax C#驱动程序处理Cassandra中的所有节点

如何使用DataStax Java驱动程序设置Cassandra客户端到节点的加密?

使用Datastax Java驱动程序无法通过Cassandra的UDT密钥检索

Datastax Node.js Cassandra驱动程序何时使用映射器与查询

使用Datastax Java驱动程序以JSON查询行

在Datastax Python驱动程序中使用Thrift协议

cassandra 4.0.0驱动程序-PreparedStatement使用一个CPU节点的100%?

如何在Cassandra中使用Datastax Java驱动程序有效地使用准备好的语句?

使用Cassandra的datastax Java驱动程序中的别名可链接便捷方法选择特定列以及avg和max

使用Datastax驱动程序3.6的Cassandra分页:不支持空分页状态和获取大小

使用DataStax的Java驱动程序在集合类型中使用自定义类

Cassandra使用datastax cassandra读取操作错误

是否可以通过datastax驱动程序将CQL脚本提交给cassandra集群?

是否可以通过Cassandra Datastax驱动程序从文件加载语句?

在同一jvm中部署的多次战争中使用cassandra驱动程序时出现jmx错误