|
Тормоза при удалении записей
|
|||
---|---|---|---|
#18+
Уважаемые! Подскажите, пожалуйста! Имеется следующая проблема: удаление записей из таблицы занимает немерянное количество времени. Таблица содержит порядка 20-ти полей и около 150 тысяч записей. Хочется ее почистить. Вся база данных занимает около 35 метров. Формирую следующий запрос (в WISQL): DELETE FROM TABLE1 WHERE FIELD1 < VALUE После этого можно курить. В течение 2-х часов наблюдаю часики, потом снимаю процесс. Загрузка сервера во время работы 99-100%. Процесс-вьювером посмотрел объемы дисковых операций. За 2 часа работы сервер прочитал с диска около 20 гигов данных. Записал около мега. Сервер 6.0 И еще. Такая же проблема возникала пару лет назад с пятым сервером. Также входил в ступор при удалении данных. Но тогда грешил на то, что БД большая (около 2 гигов, в таблице около 3,5 млн. записей). Где я неправ? что можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2002, 18:23 |
|
Тормоза при удалении записей
|
|||
---|---|---|---|
#18+
Не уверен, но попробуй Select c таким же where. Если выберет быстро, то проверяй тригеры на удаление и внешние ключи с каскадным удалением или изменением.Если такие существуют разбирайся с вычислениями в тригерах или в подчиненных таблицах. Если выбор тоже виснет, попробуй создать индекс по полю в условии where, после этого повтори select и delete. Не пойдет - пиши снова... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2002, 00:24 |
|
Тормоза при удалении записей
|
|||
---|---|---|---|
#18+
Думаю, что это связяно с транзакциями. Т.к. IB версионник, то он делает копии записей, вот оно и тормозит. А вот что с этим поделать - попробуй спросить на news://forums.demo.ru/epsylon.public.interbase - мне самому интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2002, 12:35 |
|
Тормоза при удалении записей
|
|||
---|---|---|---|
#18+
Gold прав имхо точно с транзакциями я как то мерял скорость удаления на большой таблице на сайбезе в зависимости от кол-ва удаляемых записей была такая же картина (триггеров небыло вообще) по 10 удалял по 1000 по 10000 и т.д. время начало рости жутко быстро нелинейно с какого то большого количества ну например со 100 000 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2002, 11:12 |
|
Тормоза при удалении записей
|
|||
---|---|---|---|
#18+
2 Алексей Ковязин Надо ли вышесказанное понимать так, что тормоза будут присутствовать, если существует хоть какой-либо индекс для таблицы, над которой производится операции удаления?... Если да - то как я понял это означает, что индексы имеет смысл использовать только в таблицах, над которыми не выполняются операции DELETE. Что вообще говоря существенно ограничивает функциональность сервера-то, не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2002, 14:47 |
|
Тормоза при удалении записей
|
|||
---|---|---|---|
#18+
Привет! Если внимательно прочитал статью, то сам и ответишь на свои вопросы. Индексы и триггеры сильно тормозят. Вопрос удаления очень больших количеств действительно больной для ИБ. Но у тебя всего 150 тысяч (и общий размер 35 мег) - это очень немного, как ни крути (если пень не 75 и ОЗУ больше 32). Не могу дать конкретных рекомендаций, так как не знаю точно задачи и условий. Общие рекомендации - отключить авто сборку мусора (sweep interval в 0), - страницу БД в 8192 установить - проверить наличие триггеров на удаление и излишних индексов - посмотреть план на delete в конце концов - может, он условие на удаление не цепляет и натуралом его перебирает? Это тоже долго Общий вывод - для ИБ/FB такая проблема нетипична, скорее грабли где-то у тебя. Взгляни на проблемы свежим взглядом - может что и накопаешь. Например, созадй читую базу с одной таблицей, залей сови записи туда - удали, замерь время. Затем оптять залей, положи индексы - снова удаление и замер. Последовательно наращивая условия вокруг этих таблиц найдешь решение. Ну а если найдешь причину - пиши сюда, интересно. С уважением, Алексей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2002, 12:03 |
|
|
start [/forum/topic.php?fid=40&msg=32082677&tid=1580981]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 170ms |
0 / 0 |