如何解决从Cassandra表中删除很多行
我有一个表Foo,其中有4列A,B,C,D,E。
分区键是A。
聚类键是B,C,D。
我想做什么?
使用特定的分区键删除行
我为什么要这样做?
回收存储空间
我想怎么做?
使用datastax / python-driver
我希望删除这些行,以最大程度地减少中断或风险。 我担心删除期间读取/写入请求的影响。 而且我想回收存储ASSP,不知道如何处理逻辑删除。
解决方法
Cassandra中的删除操作将数据添加到表中,而不修改现有表。磁盘空间的回收将在压缩过程中发生,压缩过程将从现有的SSTable中创建新的SSTable,并删除过时或已删除的数据,因此您将需要有足够的磁盘空间来执行SSTable的压缩。您可以调整压缩属性,例如min_threshold
,以强制压缩发生得更快,甚至可以在删除后执行nodetool compact -s
,以强制重写整个表。
使用Python删除数据是straightforward-只需准备这样的查询
DELETE FROM <table> WHERE pk = ?;
,然后遍历您要删除的键列表,然后调用session.execute(prepared_statement,[key_to_delete])
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。