我有一个要求,即需要使用pentaho ETL作业从表中删除大量记录。我知道可以使用转换中的删除步骤轻松实现,但我害怕使用它,因为删除步骤可以锁定表的整个删除操作时间。由于记录很大并且删除记录可能需要很长时间,因此其他查询(可以尝试访问同一个表)将在该时间段内被阻止。我不确定我的怀疑是否正确。如果它是正确的,有没有办法写一个删除块中记录的作业?
答案 0 :(得分:1)
它依赖于数据库,而不依赖于水壶。所以你最好还是:
a)截断表,而不是删除。截断通常很快,但会删除所有记录。
b)使用具有第一个转换的作业来删除记录,使用第二个转换来处理数据。
由于通常在同时输入表时从表中删除,我猜你正在进行选择性删除(使用WHERE子句)。所以选项(a)不是解决方案,而选项(b)可以很好地控制你正在使用的桌子的哪些部分,以避免你自己走路。