麻烦问一下,ADB中比如新建一个表,包含字段然后插入3条不同BUY_DATE的数据,立即查询或隔一?[阿里云云原生数据仓库]

麻烦问一下,ADB中比如新建一个表,包含字段BUY_DATE INT,指定分区为 PARTITION BY VALUE(BUY_DATE) LIFECYCLE 2,然后插入3条不同BUY_DATE的数据,立即查询或隔一段时间查询时,为什么仍然能查询到3条数据?这个LIFECYCLE的触发是有时间的么?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 在 ADB 中创建一个分区表时,可以通过指定 LIFECYCLE 参数来控制分区数据的存储时间。LIFECYCLE 参数表示分区中数据的过期时间(单位为天),超过指定时间的数据将会自动删除。但这并不一定意味着在超过指定时间后分区中的所有数据都会立即删除。以下是可能影响分区数据删除的因素:

    1. 数据库运维操作:例如备份、迁移、恢复、扩容等操作可能会影响分区数据的删除。

    2. 系统繁忙或耗时操作:例如大量数据插入、更新、删除等操作可能会导致系统繁忙,延迟分区数据的删除。

    3. 过期时间与当前时间之间的时间差:如果分区中的数据没有到达过期时间,那么它们将不会被删除。过期时间与当前时间之间的时间差就是分区数据的删除触发时间。

    因此,对于您提出的问题,虽然已经指定了分区过期时间为2天,但分区中的数据并不会立即删除,直到过期时间和当前时间之间的时间差等于2天时才会触发分区数据的删除。所以,无论查询表时立即查询还是在隔一段时间后查询,分区中的数据都能够查询到,除非达到分区数据的删除触发时间。

  2. ADB中的表分区是基于分区键进行的,每个分区都是独立的,数据只会存储在指定的分区中。在您的情况下,您指定了分区键为BUY_DATE,并且为每个BUY_DATE的值创建了一个分区。因此,当您插入3条不同BUY_DATE的数据时,它们将被存储在3个不同的分区中,每个分区中只有一条数据。

    在查询时,如果您使用的是分区键作为查询条件,那么查询将只在指定的分区中进行,因此您将只能看到分区中的数据。如果查询条件不包括分区键,那么查询将在所有分区中进行,您将看到所有数据。

    LIFECYCLE参数指定了分区的生命周期,单位为天。当分区的数据不再需要时,将根据LIFECYCLE参数的设置自动删除分区中的数据。例如,如果您将LIFECYCLE设置为2天,则在2天后,分区中的数据将被自动删除。但是,如果您在2天内查询分区中的数据,您仍然可以看到这些数据,因为它们还没有被删除。

  3. 指定LIFECYCLE N,超出N的分区需要触发build任务才能过滤掉分区,没有触发build任务就会导致出现数据没有过滤的情况。自动触发build任务的条件:1)达到最小Build时间间隔(预留模式:0.5小时,弹性模式:1.5小时),且单表满足新增数据达到5W条。 2)距离上次Build,时间已过去24小时且至少修改1行数据。https://help.aliyun.com/document_detail/411218.html?spm=a2c4g.123430.0.i6,此回答整理自钉群“云数据仓库ADB-开发者群”