cassandra - Cassandra 截断性能
问题描述
最近有人告诉我,cassandra truncate 性能不佳,而且是反模式。但是,我不知道为什么?
所以,我有两个问题:
更新所有记录然后进行截断是否更高效?
截断操作会创建墓碑吗?
卡桑德拉版本:3.x
解决方案
来自 cassandra 文档:
注意:TRUNCATE 向所有节点发送 JMX 命令,告诉它们删除保存指定表中数据的 SSTable。如果这些节点中的任何一个已关闭或没有响应,则该命令将失败并输出如下消息
因此,运行 truncate 将删除属于您的 cassandra 表的所有 sstable,这将非常快,但必须得到所有节点的确认。根据您的 cassandra.yml 这将在之前对您的数据进行快照:
auto_snapshot (默认值:true)启用或禁用是否在键空间截断或删除表之前对数据进行快照。为防止数据丢失,强烈建议使用默认设置。如果设置为 false,则会在截断或丢弃时丢失数据。
创建或修改表时,您可以通过设置缓存参数来启用或禁用该表的键缓存(分区键缓存)或行缓存。其他行和键缓存调整和配置选项在全局(节点)级别设置。Cassandra 使用这些设置根据整体工作负载和特定表的使用情况自动为节点上的每个表分配内存。您还可以全局配置这些缓存的保存期限。
对于你的问题:
- upserts 会慢得多(当您的表中有大量数据时)
- truncate 根本不写墓碑(相反,它会立即删除所有节点上的所有截断表 sstables)
推荐阅读
- c# - Javascript sweetalert 插件总是显示一个输入文本框
- mysql - 如果 MySQL COUNT 不为空,则返回 0
- assembly - 如何将 AVR GCC 风格的 C 内联汇编翻译成 Rust 内联汇编?
- tcl - TCL - 将多个变量设置为 0
- excel - 访问网页中的主要 HTML 文档以使用 Selenium 自动化 Chrome
- python - 使用 Office365-REST-Client 从 OneDrive 的共享链接下载文件
- javascript - 使用 javascript 类中的方法返回未定义
- xamarin.ios - AVCaptureSession 捕获的照片大小与预览不同?
- symfony - Symfony 2.8 两个数据库连接
- python - 在numpy数组python中计算连续的