【发布时间】:2020-12-06 06:02:51
【问题描述】:
我有一个 Foo 表,有 4 列 A、B、C、D、E。
分区键是 A。
聚类键为 B、C、D。
我想做什么?
删除具有特定分区键的行
我为什么要这样做?
回收存储
我想怎么做?
使用datastax/python-driver
我希望以最小的中断或风险删除这些行。 我担心删除期间读/写请求的影响。 而且我想回收存储ASSP,不知道怎么处理tombstone。
【问题讨论】:
标签: cassandra
我有一个 Foo 表,有 4 列 A、B、C、D、E。
分区键是 A。
聚类键为 B、C、D。
我想做什么?
删除具有特定分区键的行
我为什么要这样做?
回收存储
我想怎么做?
使用datastax/python-driver
我希望以最小的中断或风险删除这些行。 我担心删除期间读/写请求的影响。 而且我想回收存储ASSP,不知道怎么处理tombstone。
【问题讨论】:
标签: cassandra
Cassandra 中的删除是将数据添加到表中,而不是修改现有表。磁盘空间的回收将在压缩过程中进行,该过程将从现有的 SSTable 创建新的 SSTable,并删除过时或已删除的数据,因此您需要有足够的磁盘空间来执行 SSTable 的压缩。您可以调整压缩属性,例如 min_threshold 以强制压缩发生得更快,甚至可以在删除后执行 nodetool compact -s 以强制重写整个表。
使用 Python 删除数据是 straightforward - 只需准备这样的查询
DELETE FROM <table> WHERE pk = ?;
然后遍历要删除的键列表,并调用session.execute(prepared_statement, [key_to_delete])。
【讨论】: