datastax-preparedstatement线程安全吗?

31moq8wy  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(398)

com.datastax.driver.core.preparedstatement示例应该是应用程序中的单例吗?
如果是这样的话,如果连接丢失了怎么办?preparedstatement是否变得无效,并且必须采取手动操作来“重新准备”?
一个简单的preparedstatement用法示例(而不是在同一个方法中preparing+执行)将会非常出色!

niwlg2el

niwlg2el1#

preparedstatement对象是线程安全的。如果多个线程同时执行这些操作,您可以以可能导致不一致的方式对它们进行变异(例如设置默认一致性级别),但这是另一回事。
prepared语句基本上是围绕id和元数据的 Package 器,只要prepared语句启动,服务器就会一直保留它(但是节点崩溃或重新启动将意味着它丢失,必须重新准备)。理论上,一个准备好的语句可以在其他地方被序列化和反序列化,但仍然可以工作,但我不建议这样做。
准备好的语句对于一个节点来说是本地的,正如我所提到的,在重新启动后不会继续存在,所以如果你想保留它们,你需要确保在连接失败或节点重新启动时清除它们。我会尝试用你的方式来定义你的连接,在连接和重新连接上重新创建它们。也许不是很好的建议,但这在很大程度上取决于应用程序的结构。

相关问题