最近有人告诉我,cassandra truncate不是高效能的,而是反模式。但是,我不知道为什么?
所以,我有两个问题:
对所有记录进行高位插入然后进行截断是否更有表现?
截断操作是否会创建逻辑删除?
Cassandra版本:3.x
答案 0 :(得分:5)
来自cassandra文档:
注意:TRUNCATE向所有节点发送一个JMX命令,告诉它们 从指定表中删除保存数据的SSTable。如果有 这些节点关闭或不响应,命令失败并输出 这样的消息
因此,运行truncate将删除属于cassandra表的所有sstables,这将非常快,但必须由所有节点确认。根据您的cassandra.yml,它将在以下之前对数据进行快照:
auto_snapshot (默认值:true)启用或禁用快照是否为 在键空间截断或删除表之前获取的数据。至 为避免数据丢失,强烈建议使用默认设置。如果 设置为false时,您将因截断或丢弃而丢失数据。
在创建或修改表时,启用或禁用键缓存 (分区键缓存)或该表的行缓存,方法是设置 缓存参数。其他行和键缓存的调优和配置 选项在全局(节点)级别设置。卡桑德拉使用这些 设置以自动为节点上的每个表分配内存 根据总体工作量和特定的表使用情况。你也可以 全局配置这些缓存的保存期限。
对您的问题: