Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 是不是;删除“;在pentaho釜锁表中执行步骤,直到完成从表中删除记录为止?_Database_Pentaho_Etl_Kettle_Pentaho Spoon - Fatal编程技术网

Database 是不是;删除“;在pentaho釜锁表中执行步骤,直到完成从表中删除记录为止?

Database 是不是;删除“;在pentaho釜锁表中执行步骤,直到完成从表中删除记录为止?,database,pentaho,etl,kettle,pentaho-spoon,Database,Pentaho,Etl,Kettle,Pentaho Spoon,我需要使用pentaho ETL作业从表中删除大量记录。我知道在转换中使用delete步骤很容易实现,但我担心使用delete步骤会在整个delete操作期间锁定表。由于记录很大,删除记录可能需要很长时间,因此其他查询(可以尝试访问同一个表)将在该时间段内被阻止。我不确定我的怀疑是否正确。如果它是正确的,有没有办法编写一个删除块中记录的作业 它依赖于数据库,而不是釜。因此,您最好: a) 截断表,而不是删除。截断通常很快,但会删除所有记录 b) 使用具有第一次转换的作业来删除记录,并使用第二次转

我需要使用pentaho ETL作业从表中删除大量记录。我知道在转换中使用delete步骤很容易实现,但我担心使用delete步骤会在整个delete操作期间锁定表。由于记录很大,删除记录可能需要很长时间,因此其他查询(可以尝试访问同一个表)将在该时间段内被阻止。我不确定我的怀疑是否正确。如果它是正确的,有没有办法编写一个删除块中记录的作业

它依赖于数据库,而不是釜。因此,您最好:

a) 截断表,而不是删除。截断通常很快,但会删除所有记录

b) 使用具有第一次转换的作业来删除记录,并使用第二次转换来处理数据


由于在同时输入表时从表中删除是不常见的,我猜您是在进行选择性删除(使用WHERE子句)。因此,选项(a)不是一个解决方案,而选项(b)为您提供了一个很好的控制,可以控制您正在处理的表的哪些部分,以避免您穿着自己的鞋子走路。

是的,它是选择性查询。就备选方案b而言,它不能为问题提供正确的解决办法。实际上,两个进程同时使用同一个表,其中一个进程是用于删除记录的kettle作业,另一个进程用于读取表以进行其他处理。