在某些情况下,操作员会在 Cassandra 日志中看到以下警告:
WARN ... Replica filtering protection has cached over 2000 rows during query \
[SELECT ... FROM ... WHERE ...]. (See 'cached_replica_rows_warn_threshold' in cassandra.yaml.)
或者在最坏的情况下,一个错误:
ERROR ... Replica filtering protection has cached over 32000 rows during query \
[SELECT ... FROM ... WHERE ...]. (See 'cached_replica_rows_fail_threshold' in cassandra.yaml.)
这些日志条目是什么意思?
副本过滤保护是一种机制,可确保从陈旧副本中获得高于
ONE
或LOCAL_ONE
不违反所需一致性的读取一致性级别的结果。这适用于 (a) 二级索引查询,或 (b) 使用ALLOW FILTERING
.您收到警告是因为您的节点不同步,很可能是因为它们过载并且无法跟上写入速度,因此有很多丢弃的突变。有关详细信息,请参阅CASSANDRA-8272和CASSANDRA-15907。
您需要修复有问题的表以同步副本。您还应该考虑通过添加更多节点来增加集群的容量,这样您最终就不会出现数千个丢弃的突变。
ALLOW FILTERING
附带说明一下,如果不将查询限制为单个分区,则不应使用。否则,它将无法正常运行,并且其行为可能无法预测。干杯!从DataStax 社区重新发布。