我们已经要求删除行为数以百万计来自多个表格,作为一批的工作(请注意,我们是不是删除所有行,我们删除的基础上有时间戳存储在一个索引列)。显然,一个正常删除永远(因为记录,引用约束检查等)。我知道在FOR的世界,我们必须改变表中未记录的最初但我似乎找不到的一个等效的SQL statement DB2v8z/操作系统。任何人有任何想法上如何做到这真的很快?此外,任何想法,关于如何避免引用检查当删除的行?请让我知道。

有帮助吗?

解决方案 3

我们修改了表,以便该锁将发生在表空间级而不是在页级别。一旦我们改变了DB2只要求一个锁做了DELETE和我们没有任何问题与锁定。至于日志,我们只是要求客户必须知道需要日志记录的金额(如似乎没有成为一个解决方案来解决日志问题)。至于限制,我们只下跌,删除后重新创建它们。

感谢所有您的帮助。

其他提示

在过去,我已经通过将其与替换样式的命令中的数据导出和重新加载解决了这样的问题。例如:

EXPORT to myfile.ixf OF ixf
SELECT * 
FROM my_table 
WHERE last_modified < CURRENT TIMESTAMP - 30 DAYS;

然后,你可以加载它放回,取代了旧的东西。

LOAD FROM myfile.ixf OF ixf
REPLACE INTO my_table
NONRECOVERABLE INDEXING MODE INCREMENTAL;

我不知道这是否会为你更快或没有(或许这取决于你是否要删除超过你保管)。

  1. 做外键已经有索引以及吗?

  2. 你怎么有你删除的行动? CASCADE, NULL, NO ACTION

  3. 使用的一套完整性暂时禁止限制在进行批处理。http://www.ibm.com/developerworks/data/library/techarticle/dm-0401melnyk/index.html

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top