开发者社区 > 数据库 > 数据仓库 > 正文

云数据仓库ADB打标记的数据是存内存,还是落盘到磁盘里面的一个专门的标记文件里啊?

云数据仓库ADB采用的是标记删除方式,针对这种方式有几个小问题咨询一下

1 删除标记的数据如果定期清除的话,该数据会越来越大,应该有什么策略定期把标记数据与底层数据合并后并删除这部分标记数据吧?

2 比如update一条数据,给该条数据打上了标记但还没有更新到底层,这个时候用户来查询数据如果判断查询的数据不是最新的,是不是要通过buffer缓冲取以及打上标记的这个缓存数据来查询才能查询到最新数据呢?

3 这个打标记的数据是存内存,还是落盘到磁盘里面的一个专门的标记文件里啊

展开
收起
嘟嘟嘟嘟嘟嘟 2024-06-05 09:44:18 20 0
1 条回答
写回答
取消 提交回答
  • 针对删除标记的数据管理,确实需要有策略来定期清理这些数据以避免无限增长。一种常见的做法是使用“合并”(Compact)操作,它会将未删除的数据与已标记删除的数据进行区分,然后将有效数据重新组织并释放那些被标记的数据所占用的空间。在实际操作中,ADB MySQL可能会利用维护窗口或者低峰时段自动执行这类优化任务,确保存储的有效利用和查询效率。具体策略和操作细节可能依赖于ADB MySQL内部的管理和优化机制。参考链接虽然没有直接描述清理过程,但它强调了不同删除策略的选择,间接提示了系统对数据管理的考虑。

    当您更新一条数据时,ADB MySQL会尽可能保证数据的一致性视图。在更新尚未完全持久化之前,查询引擎会根据事务隔离级别和当前数据的状态来决定返回哪一版本的数据。如果需要获取最新的数据,通常查询会查看缓冲池(Buffer Pool)中的数据,这个缓冲池包含了最近访问或修改的数据,确保查询能快速得到最新结果。至于标记数据,它们更多用于后台的垃圾回收和空间重用逻辑,而不是直接参与查询决策。因此,查询时系统会处理好新旧数据的可见性问题,确保用户查询到的是符合其事务隔离级别的最新数据。

    在分布式数据库系统如ADB MySQL中,对于标记删除的数据,其处理方式往往涉及内存与磁盘的协同工作。标记信息可能会先记录在内存中,以加快处理速度,随后在合适的时机(例如事务提交、检查点或者合并操作时)同步到磁盘上的日志或元数据区域,确保持久化。这样做既能快速响应写操作,又能保证系统的崩溃恢复能力。具体的实现细节会根据ADB MySQL的内部设计和优化策略有所不同,但核心目标是在保证数据一致性和性能之间找到平衡。参考链接虽然没有直接描述标记数据的存储位置,但其提及的更新和删除实践间接反映了系统如何高效管理数据变化。

    此回答整理自钉群“云数据仓库ADB-开发者群”

    2024-06-05 09:59:40
    赞同 1 展开评论 打赏

相关产品

  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 热门讨论

    热门文章

    相关电子书

    更多
    基于阿里云MaxCompute构建企业云数据仓库CDW的最佳实践建议 立即下载
    PostgresChina2018_陶征霖_新一代数据仓库OushuDB架构剖析 立即下载
    MaxCompute数据仓库数据转换实践 立即下载