首页 > 解决方案 > 在 cassandra 3.0.10 中清除准备好的语句缓存

问题描述

我们在 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 我们目前正在使用一种解决方法来清除与某些表关联的准备好的语句,方法是删除索引然后在表上重新创建索引。这将丢弃依赖于已定义索引的准备好的语句。目前,这是我们能做的最多的事情。问题是,如果这不适用于没有定义索引的表。

仍然需要一个更好的方法来做到这一点,例如一些管理命令来清除缓存。

标签: cassandra

解决方案


推荐阅读