Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉截断性能_Cassandra_Truncate - Fatal编程技术网

Cassandra 卡桑德拉截断性能

Cassandra 卡桑德拉截断性能,cassandra,truncate,Cassandra,Truncate,最近有人告诉我,cassandra truncate没有性能,它是反模式的。但是,我不知道为什么 因此,我有两个问题: 对所有记录进行upsert比执行truncate更有效吗 截断操作是否创建墓碑 卡桑德拉版本:3.x来自卡桑德拉文档: 注意:TRUNCATE向所有节点发送一个JMX命令,告诉它们 删除包含指定表中数据的SSTables。如果有的话 这些节点关闭或没有响应,命令失败并输出 像下面这样的消息 因此,运行truncate将删除属于cassandra表的所有SSTABLE,这将非

最近有人告诉我,cassandra truncate没有性能,它是反模式的。但是,我不知道为什么

因此,我有两个问题:

  • 对所有记录进行upsert比执行truncate更有效吗

  • 截断操作是否创建墓碑


卡桑德拉版本:3.x

来自卡桑德拉文档:

注意:TRUNCATE向所有节点发送一个JMX命令,告诉它们 删除包含指定表中数据的SSTables。如果有的话 这些节点关闭或没有响应,命令失败并输出 像下面这样的消息

因此,运行truncate将删除属于cassandra表的所有SSTABLE,这将非常快,但必须得到所有节点的确认。根据您的cassandra.yml,这将在以下时间之前快照您的数据:

自动_快照(默认值:true)启用或禁用快照是否为 在键空间截断或删除表之前获取数据。到 防止数据丢失,强烈建议使用默认设置。如果 如果设置为false,则截断或删除时将丢失数据

创建或修改表时,可以启用或禁用密钥缓存 (分区键缓存)或通过设置 缓存参数。其他行和键缓存优化和配置 选项在全局(节点)级别设置。卡桑德拉用这些 为节点上的每个表自动分配内存的设置 基于总体工作负载和特定的表使用情况。你也可以 全局配置这些缓存的保存周期

关于你的问题:

  • 上升速度会慢得多(当表中有重要数据时)
  • truncate根本不写逻辑删除(相反,它会立即删除被截断表sstables的所有节点上的所有逻辑删除)

哪里提到执行截断是反模式的?可以共享那个链接吗?是的,不是链接。我在我的应用程序中使用truncate,我必须对我的设计进行审核,并在审核意见中对其进行审核。我不是审查的一部分,所以,无法提出后续问题,我也在那里发布了相同的问题。这些文档非常过时,不再涉及jmx命令。很高兴知道,当前文档所在的地方有新的官方位置吗?谢谢,现在在浏览works duh时搜索似乎被破坏了。我错过了。我应该检查一下,如果我能做些什么,我是否可以花点时间来帮助你:)@ChrisLohfink当你说“不再涉及JMX命令”时,这是否也适用于cassandra版本3.x?是的,这是通过cql和消息服务完成的。我想我应该提到,它可以通过jmx启动(在storageservicembean中,它只触发与cql相同的机制),但它并没有对所有节点使用jmx。也没有人这样做,虽然它没有暴露在nodetool或任何方便的。即使在truncate中,它也没有向所有节点发出jmx(used-msg-service),并且可以使用thrift发出,因此我不确定文档片段的来源