Удаление большого количества строк из таблицы

StackOverflow https://stackoverflow.com/questions/2579375

  •  24-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение 3

Мы изменили табличное пространство, чтобы замок произошел на уровне табличного пространства, а не на уровне страницы. Как только мы изменили, что DB2 требуется только один замок, чтобы сделать удаление, и у нас не было никаких проблем с блокировкой. Что касается регистрации, мы просто попросили клиента осознавать сумму требуемой регистрации (так как не было никакого решения для охвата проблемы регистрации). Что касается ограничений, мы просто упали и воссоздали их после удаления.

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

Другие советы

В прошлом я решил эту проблему, экспортируя данные и повторную загрузку его с помощью команды «Заменить стиль». Например:

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