Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Как побыстрее удалить большую часть записей из таблицы ?   Найти похожие ветки 

 
ANB ©   (2005-05-17 10:50) [0]

В таблице было 17 миллионов записей. Дамп из-за этого 3.5Г. Поднимается долго. И места на винте маловато. А нужен он только для тестов. Решил оставить не больше миллиона записей. Попробавал удалить одним delete - через час кончился роллбэк сегмент. Поставил на удаление в цикле по 1000 записей с коммитом. Вот так :

declare
i number;
-- 17139893
begin
i := 0;
while (i <= 17000000) loop
 delete from PC_EX_JOURNAL tbl where rownum <= 1000;
 Commit;
 i := i + 1000;
end loop;
end;

Вчера с 15.00 до 10.30 удалилось только 6 миллионов. Пока скрипт работает - мой комп жутко тормозит. Мне уже надоело сидеть в форуме Потрепаться, работать надо. Как бы это ускорить ?


 
ANB ©   (2005-05-17 10:51) [1]

Поставил отметку Oracle - почему то не села.


 
ANB ©   (2005-05-17 10:51) [2]

Поставил отметку Oracle - почему то не села.


 
Sergey13 ©   (2005-05-17 10:55) [3]

Может стОит попробовать переписать нужные записи во временную таблу, затранкейтить исходную и перелить из временной (или переименовать ее если констрейнтов немного)?


 
Reindeer Moss Eater ©   (2005-05-17 10:56) [4]

В твоем случае правильнее делать так:
Создавать промежуточную таблицу с помощью create table as select .....
Затем транкейт основной таблице.
А затем вставка в нее того, что в промежуточной.


 
Reindeer Moss Eater ©   (2005-05-17 11:02) [5]

Если удаление делать прямо из основной таблицы разбивая это на небольшие транзакции, то сегмент отката конечно выдержит. Но журнал все равно распухнет на весь размер удаляемых данных, так как delete - протоколируемая операция.
Просто транкейт основной тоже не подойдет - он удаляет все записи.
Поэтому только через доп. таблицу.


 
ANB ©   (2005-05-17 11:07) [6]

Круто. 15 секунд и все готово. Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
1-1117721563
Erik1
2005-06-02 18:12
2005.06.29
Как записать указатель на процедуру в масв?


1-1117698583
oaken
2005-06-02 11:49
2005.06.29
Доступ к "чужим" окнам и контролам


14-1117821313
NightStranger
2005-06-03 21:55
2005.06.29
Два уровня языков программирования?


1-1118045317
Motion
2005-06-06 12:08
2005.06.29
Запуск из приложения файла справки


8-1110026097
Tirex
2005-03-05 15:34
2005.06.29
мерцание графики при включенном стиле XP