Удаление большого количества строк из таблицы
Вопрос
У нас есть требование удаления строк в порядке миллионов из нескольких таблиц в качестве пакетной задачи (обратите внимание, что мы не удаляем все строки, мы удаляемся на основе времени, хранящегося в индексированном столбце). Очевидно, что нормальное удаление принимает навсегда (из-за регистрации, проверки ссылочных ограничений и т. Д.). Я знаю в мире 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;
Я не уверен, будет ли это быстрее или не для вас (возможно, это зависит от того, удачаете ли вы больше, чем вы держите).
У всех иностранных клавиш уже есть индексы?
Как у вас есть набор действий удаления?
CASCADE, NULL, NO ACTION
Используйте установить целостность, чтобы временно отключить ограничения на процесс партии.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.