当前位置: 首页 > 知识库问答 >
问题:

基于条件的DB2表分区和删除旧记录

蓬新
2023-03-14
___________________________________________________________
| col1 | col2 | col3 | some_indicator | last_updated_date |
-----------------------------------------------------------
|      |      |      |        yes     | 2009-06-09.12.2345|        
-----------------------------------------------------------
|      |      |      |        yes     | 2009-07-09.11.6145|
-----------------------------------------------------------
|      |      |      |        no      | 2009-06-09.12.2345|
-----------------------------------------------------------

我可以使用db2分区特性来满足上述需求吗?。如何使用last_updated_date列和高于两个some_indicator值对表进行分区?一个分区应该包含按月删除标准的记录,而其他分区应该包含按年删除标准的记录。如果这个表被频繁地读取或更新,那么是否存在与表分区相关的性能问题?以上要求的任何其他最佳实践肯定会有所帮助。

共有1个答案

庞阳波
2023-03-14

我在分区方面做得不多(我主要是在iSeries上使用DB2),但据我所知,您通常不希望在分区之间进行洗牌(即在“1个月前”创建分区)。我甚至不确定这是否可能。如果是这样,您将不得不每天扫描表的某些部分(可能很大),只是为了移动它(在事务中选择、插入、删除)。

除此之外,分区是一个DB管理问题,听起来就像是一个DB用户问题--即删除“旧”记录。我只想在几个声明中这样做:

DELETE FROM myTable 
WHERE some_indicator = 'no'
AND last_updated_date < TIMESTAMP(CURRENT_DATE - 1 MONTH, TIME('00:00:00'))

DELETE FROM myTable
WHERE some_indicator = 'yes'
AND last_updated_date < TIMESTAMP(CURRENT_DATE - 1 YEAR, TIME('00:00:00'))
 类似资料:
  • 这操作用于删除指定模式中的所有表,参考以下操作: 可选择对应的模式,如下所示:

  • 我正在寻找一个简单的批处理脚本,它将允许我删除旧文件并记录它是否删除了旧文件。搜索完网站后,我发现“forfiles”非常有用: 来自:批处理文件以删除超过N天的文件 正如我所说,我关心的是记录已删除的内容。我尝试了很多东西,但仍然不起作用。这是我的实际代码: 日志文件已创建,但为空,旧文件不会被删除。(它应该删除我2016年的8个文件)当我使用原始代码时,它会删除文件。我可能读过关于逃离 目标是

  • 我是Postgresql的新手,不知道如何管理分区表 我有基于日期的分区表。在插入数据之前,触发器检查日期并将其放入相应的子表中 例如 2014年11月15日-插入名为11-15-2014_log的表格 2014年11月16日-插入名为11-16-2014_log的表格 现在我想创建一个函数来删除旧的子表,例如,超过90天的表。我应该根据表名查找并删除子表(因为它包含创建日期),还是应该在主表中查

  • 下面的log4j2配置无法删除我的旧文件。 我的日志文件是按照基于时间和基于大小的策略正确生成的,但我不明白为什么不删除这些文件。一切似乎都是正确的,我的日志中没有错误。 我没有前导或尾随空格。 我已经浪费了很多时间来调试这个。官方的log4j2文档很糟糕,因为它没有给出基于java属性的配置示例。 有没有办法解决这个问题? 谢啦

  • 问题内容: 我有一个这样的 LoginTime 表: 我只想保留5条最新记录(按“ datetime”列),并删除所有以前的记录,其中 是否可以通过一个mysql查询来实现? 问题答案: 我相信这会奏效…

  • 问题内容: 在我们的系统中,我们每小时从外部数据库导入一次。由于导入脚本中的错误,现在有一些重复的记录。 如果任何记录具有和,则视为重复。 我可以运行什么代码来查找和删除这些重复项? 我在玩这个: 它似乎返回了一些重复项,但是我不确定如何从那里删除? 有任何想法吗? 问题答案: 您可以尝试以下方法: 还是纯sql: