удаление большого количества строк из таблицы - PullRequest
3 голосов
/ 05 апреля 2010

У нас есть требование удалять строки в порядке миллионов из нескольких таблиц как пакетное задание (обратите внимание, что мы не удаляем все строки, мы удаляем их на основе отметки времени, сохраненной в индексированном столбце). Очевидно, что нормальный DELETE занимает вечность (из-за регистрации, проверки ссылочных ограничений и т. Д.). Я знаю, что в мире LUW у нас есть ALTER TABLE NOT LOGGED INITIALLY, но я не могу найти эквивалентный оператор SQL для DB2 v8 z / OS. У кого-нибудь есть идеи, как сделать это действительно быстро? Кроме того, есть идеи, как избежать ссылочных проверок при удалении строк? Пожалуйста, дайте мне знать.

Ответы [ 3 ]

1 голос
/ 15 апреля 2010

Раньше я решал такую ​​проблему, экспортируя данные и перезагружая их с помощью команды замены стиля.Например:

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;

Я не уверен, будет ли это быстрее или нет для вас (возможно,это зависит от того, удаляете ли вы больше, чем храните).

0 голосов
/ 15 апреля 2010

Мы изменили табличное пространство, чтобы блокировка происходила на уровне табличного пространства, а не на уровне страницы. Как только мы изменили это, DB2 требовала только одну блокировку для УДАЛЕНИЯ, и у нас не было никаких проблем с блокировкой. Что касается ведения журнала, мы просто попросили клиента знать количество требуемого ведения журнала (так как, похоже, не было решения, позволяющего обойти проблему ведения журнала). Что касается ограничений, мы просто удалили и воссоздали их после удаления.

Спасибо всем за помощь.

0 голосов
/ 05 апреля 2010
  1. У внешних ключей уже есть индексы?

  2. Как вы установили действие удаления? CASCADE, NULL, NO ACTION

  3. Используйте SET INTEGRITY, чтобы временно отключить ограничения для пакетного процесса. 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

...