【问题标题】:Delete lots of rows from Cassandra Table从 Cassandra 表中删除大量行
【发布时间】:2020-12-06 06:02:51
【问题描述】:

我有一个 Foo 表,有 4 列 A、B、C、D、E。
分区键是 A。
聚类键为 B、C、D。

我想做什么?

删除具有特定分区键的行

我为什么要这样做?

回收存储

我想怎么做?

使用datastax/python-driver

我希望以最小的中断或风险删除这些行。 我担心删除期间读/写请求的影响。 而且我想回收存储ASSP,不知道怎么处理tombstone。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    Cassandra 中的删除是将数据添加到表中,而不是修改现有表。磁盘空间的回收将在压缩过程中进行,该过程将从现有的 SSTable 创建新的 SSTable,并删除过时或已删除的数据,因此您需要有足够的磁盘空间来执行 SSTable 的压缩。您可以调整压缩属性,例如 min_threshold 以强制压缩发生得更快,甚至可以在删除后执行 nodetool compact -s 以强制重写整个表。

    使用 Python 删除数据是 straightforward - 只需准备这样的查询

    DELETE FROM <table> WHERE pk = ?;
    

    然后遍历要删除的键列表,并调用session.execute(prepared_statement, [key_to_delete])。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2014-02-03
      • 2019-02-28
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      相关资源
      最近更新 更多