我们在centos上安装了cassandra 3.0.10。开发人员在准备语句时犯了一些编码错误。结果是准备好的语句缓存超限,我们总是得到驱逐的错误消息。错误如下所示:
INFO [ScheduledTasks:1] 2017-12-07 10:38:28,216 QueryProcessor.java:134 - 7 prepared statements discarded in the last minute because cache limit reached (8178944 bytes)
我们已经更正了准备好的语句,并希望将准备好的语句缓存刷新为从头开始。我们已经停止并重新启动了cassandra实例,但是没有重置准备好的语句计数。
Cassandra 3.0.10安装在centos上,我们使用svcadm disable / enable cassandra来停止/启动cassandra。
我注意到在后来的cassandra版本中,例如3.11.1,系统密钥空间下有一个prepared_statements表。关闭cassandra并删除文件${CASSANDRA_HOME}/data/data/system/prepared_statements-*
,然后重新启动cassandra实际上会重置prepared_statement缓存。
感谢您的任何帮助。
感谢。
更新:2018-06-01 我们目前正在使用解决方法来清除与某些表关联的预准备语句,方法是删除索引,然后在表上重新创建索引。这会丢弃与已定义索引相关的预准备语句。目前,这是我们能做的最多的事情。问题是,如果这对于没有定义索引的表不起作用。
仍然需要更好的方法来做到这一点,例如一些管理员命令来清除缓存。