0

0

Cassandra 中重复删除同一数据的性能影响与优化实践

霞舞

霞舞

发布时间:2026-02-06 16:06:34

|

713人浏览过

|

来源于php中文网

原创

Cassandra 中重复删除同一数据的性能影响与优化实践

在 cassandra 中,重复执行针对同一分区键的 delete 操作会持续写入新 tombstone(墓碑标记),不仅增加写负载,还可能引发读取放大和 gc 压力,应避免无谓的重复删除。

Cassandra 的写入模型决定了 所有 DML 操作(包括 DELETE)本质上都是写入操作。当你执行如下语句:

DELETE FROM sample_table WHERE id = '1';

Cassandra 并不会先检查 id = '1' 对应的数据是否已存在或已被删除;而是直接在对应分区中插入一个带有时间戳的 tombstone(逻辑删除标记)。该 tombstone 会在后续读取、压缩(compaction)和修复(repair)过程中参与处理,直到其超出 gc_grace_seconds(默认 10 天)并被彻底清理。

Scrumball
Scrumball

AI驱动的网红营销平台

下载

⚠️ 重复删除的真实开销

  • 写入放大:每次 DELETE 都是一次独立写请求,占用协调器资源、网络带宽及磁盘 I/O;
  • Tombstone 积累:高频重复删除同一分区,将产生多个 tombstone(即使时间戳相近),增大 SSTable 中无效数据比例;
  • 读取性能下降:当查询涉及该分区时,Cassandra 需扫描并过滤这些 tombstone,导致读取延迟上升(尤其在未充分 compaction 的场景下);
  • GC 压力与内存开销:大量 tombstone 在 memtable 和堆内存中暂存,可能加剧 JVM GC 频率,影响集群稳定性。

✅ 推荐实践与替代方案

  1. 幂等性控制(服务层)
    在应用或调度层维护轻量状态(如 Redis 中记录最近一次清理时间戳或完成标记),确保相同清理任务不被多实例并发重复触发:

    # 示例:使用 Redis SETNX 实现分布式锁 + 状态标记
    lock_key = "cleanup:sample_table:id_1"
    if redis.set(lock_key, "done", ex=3600, nx=True):  # 1小时过期,仅首次成功
        session.execute("DELETE FROM sample_table WHERE id = '1'")
  2. 改用 TTL 写入(如适用)
    若业务允许数据“自然过期”,优先在写入时设定 TTL,避免后期主动删除:

    INSERT INTO sample_table (id, value) VALUES ('1', 'data') USING TTL 86400;
  3. 批量清理 + 时间窗口约束
    将 housekeeping 改为按时间范围批量清理(如 WHERE created_at

  4. 监控与验证方法
    可通过以下方式量化影响:

    • 使用 nodetool tablestats keyspace.sample_table 观察 Total number of tombstones scanned 和 Maximum tombstones per slice;
    • 启用 TRACE ON 执行 DELETE 查看实际扫描的 tombstone 数量;
    • 在测试集群中模拟多实例定时任务(如 10 个线程每 5 秒执行一次),结合 cassandra-stress 或 Prometheus + Grafana 监控 WriteLatency, TombstoneScannedHistogram, PendingTasks 等关键指标。

总结

Cassandra 不支持“条件删除”或“存在性校验式删除”,因此重复 DELETE 不是无代价的空操作,而是真实写入负担。生产环境中应从架构层面规避重复触发,优先采用幂等调度、TTL 自动过期或批量时间窗口清理策略。唯有理解其“写即插入、删即标记”的底层机制,才能写出真正高效、可持续的 Cassandra 数据生命周期管理逻辑。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

400

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

579

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

610

2023.08.10

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

280

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

216

2023.12.29

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

986

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

648

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

491

2024.04.02

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

60

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号