Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra Datastax-PreparedStatement线程安全吗?_Cassandra_Prepared Statement_Datastax Enterprise_Datastax Java Driver - Fatal编程技术网

Cassandra Datastax-PreparedStatement线程安全吗?

Cassandra Datastax-PreparedStatement线程安全吗?,cassandra,prepared-statement,datastax-enterprise,datastax-java-driver,Cassandra,Prepared Statement,Datastax Enterprise,Datastax Java Driver,com.datastax.driver.core.PreparedStatement实例是否应该是应用程序中的单例 如果是这样,如果连接丢失会发生什么情况?PreparedStatement是否变得无效,并且必须采取手动操作来“重新准备” 一个简单的PreparedStatement用法示例(而不是在同一方法中准备+执行)将非常精彩 PreparedStatement对象是线程安全的。如果多个线程同时执行这些操作,您可以对它们进行变异(例如设置默认一致性级别),从而导致不一致,但这是另一回事 P

com.datastax.driver.core.PreparedStatement实例是否应该是应用程序中的单例

如果是这样,如果连接丢失会发生什么情况?PreparedStatement是否变得无效,并且必须采取手动操作来“重新准备”


一个简单的PreparedStatement用法示例(而不是在同一方法中准备+执行)将非常精彩

PreparedStatement对象是线程安全的。如果多个线程同时执行这些操作,您可以对它们进行变异(例如设置默认一致性级别),从而导致不一致,但这是另一回事

Prepared语句基本上是围绕ID和元数据的包装,服务器将保留Prepared语句,直到它启动为止(但节点崩溃或重新启动将意味着它丢失并必须重新准备)。理论上,一个准备好的语句可以在其他地方被序列化和反序列化,但仍然可以工作,但我不推荐它


准备好的语句是节点的本地语句,正如我所提到的,在重新启动后无法生存,因此如果要保留它们,则需要确保在连接失败或节点重新启动时清除它们。我会尝试以与您确定连接范围相同的方式确定它们的范围,在连接和重新连接上重新创建它们。可能不是什么好建议,但这在很大程度上取决于应用程序的结构

我认为准备好的语句不仅是特定于节点的,而且它们在Cassandra集群中共享。