我已经意识到,某些稳定器即使仅包含墓碑也不会被丢弃。使用手动重大压实,将这些稳定土移除。也许需要将unchecked_tombstone_compaction与gc_grace_period一起更新为true
我已经看到了实用程序sstableexpiredblockers实用程序,它将显示阻止SSTable的阻止SSTable删除的功能。
在压缩期间,如果Cassandra仅包含过期的逻辑删除,并且可以保证不覆盖其他SSTable中的任何数据,则可以删除整个SSTable。此诊断工具输出阻止其他SSTable被删除的所有SSTable。
我不明白:
...如果保证不覆盖其他SSTables中的任何数据...
由于我的压缩策略是TimeWindowCompactionStrategy,因此所有sstable的时间间隔都不同。
我想知道如何处理那些阻塞的SSTables。
所以在datastax doc 中,它指出 ConsistencyLevel 可以通过 QueryOptions 全局设置:
QueryOptions qo = new QueryOptions().setConsistencyLevel(ConsistencyLevel.ALL);
Run Code Online (Sandbox Code Playgroud)
我注意到这不是一个静态方法并返回一个 QueryOptions 实例。这是否意味着简单地调用此方法不会全局设置默认一致性级别,并且在连接到 Cassandra 集群时我需要使用 QueryOptions?我的意思是,是否需要以下代码(QueryOption
在构建Cluster
对象时设置)
cluster = Cluster.builder().addContactPoint("192.168.0.30")
.withQueryOptions(new QueryOptions()
.setConsistencyLevel(ConsistencyLevel.ONE)
.withRetryPolicy(DefaultRetryPolicy.INSTANCE)
.withLoadBalancingPolicy(new TokenAwarePolicy(new DCAwareRoundRobinPolicy()))
.build();
session = cluster.connect("demo");
Run Code Online (Sandbox Code Playgroud)
我的问题是我无权访问构建 Cluster 实例的代码。这是否意味着我无法设置全局一致性级别而必须依赖于设置 per Statement
?
我目前正在研究我的NoSQL项目,我有两个数据库Cassandra和Redis(我使用Redis进行缓存).现在使用Redis我有一个列表,我使用DataContract序列化我的自定义对象,但是当涉及到Cassandra时,我正在努力,因为我试图以某种方式在Cassandra表中插入Guid,其中我使用uuid作为主键.我在互联网上搜索过,我所能找到的只是Guid是Cassandra的uuid数据类型.我已经在Cassandra中使用now()插入了uuid所以我想知道我是否可以以某种方式从C#调用now()或者如果我能以某种方式将Guid转换为uuid.非常感谢任何帮助或参考.谢谢.
我在 Cassandra 中创建了下一个表
create table yyy (
index1 int,
index2 int,
name text,
primary key ((index1, index2), name)
)
Run Code Online (Sandbox Code Playgroud)
当我只按 index1 搜索时,完美。没关系!
select * from yyy where index1 ...
Run Code Online (Sandbox Code Playgroud)
买我不能按 index2 搜索
ReadFailure:来自服务器的错误:code=1300 [Replica(s) failed to execute read] message="操作失败 - 收到 0 个响应和 1 个失败" info={'failures': 1, 'received_responses': 0, 'required_responses' : 1, '一致性': 'ONE'}
如何按index2搜索?
我目前在 18 节点配置中运行Cassandra 3.0.9。我们加载了相当多的数据,现在正在对每个节点进行修复。我的 nodetool 命令脚本如下:
nodetool repair -j 4 -local -full
Run Code Online (Sandbox Code Playgroud)
使用 nodetool tpstats 我看到了 4 个需要修复的线程,但它们的修复速度非常慢。我有 1000 次维修,按照这个速度需要数周时间。系统日志有修复项目,但也列出了“重新分发索引摘要”。这是导致我行动缓慢的原因吗?有没有更快的方法来做到这一点?
我是cassandra的新手,希望将快照从3节点Cassandra群集还原到新的6节点群集时有所帮助。我们只有几个键空间,希望将数据从开发人员复制到生产环境。
提前致谢。