Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Удаление записей из таблицы / 14 сообщений из 14, страница 1 из 1
19.12.2008, 08:47
    #35723754
db2admman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Когда из таблицы удаляются записи, освобожденное место может быть использовано снова или надо запускать реорганизацию таблицы чтобы место в tablespace освободилось?
Почему при удалении большого кол-ва записей через некоторое время при работе с таблицей последующие удаления проходят гораздо медленее чем вначале (удаление в обоих случаях идет по условию без индекса, перед удалением таблица переводится в нежурналируемый режим с помощью alter table ... activate not logged initially)
...
Рейтинг: 0 / 0
19.12.2008, 10:31
    #35723935
dronNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
db2admman,
1. Да, освободившееся место может быть использовано снова для данных из той же таблицы. Чтобы место было доступно для других таблиц - нужен реорг.
2. После больших изменений ( напр, как сказано - "при удалении большого кол-ва записей" ) следует запускать утилиту runstat
...
Рейтинг: 0 / 0
19.12.2008, 11:20
    #35724136
Vladimir Kiselev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
db2admman,

ну и поаккуратней с
Код: plaintext
not logged initially
здесь уже об этом писали, в случае ROLLBACK (ошибки), придётся восстанавливать всё из бакапа.
...
Рейтинг: 0 / 0
19.12.2008, 11:26
    #35724157
db2admman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Можно поконкретнее насчет rollback и not logged initially ?
...
Рейтинг: 0 / 0
19.12.2008, 12:14
    #35724353
gals
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
db2admmanМожно поконкретнее насчет rollback и not logged initially ?
А нету-ти его! И всё тут. Вы же сами отключили ведение журнала.
Поэтому, в случае возникновения ошибки, вам прямая дорога к восстановлению бекапа или заранее слитого дампа таблицы.
...
Рейтинг: 0 / 0
19.12.2008, 13:26
    #35724579
db2admman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Почему тогда через некоторое кол-во удаления большого числа записей (неск процентов от общего числа записей в таблице) последующие удаления на протяжении неск часов идут очень медленно? Обновление статистики не помогает. Например было удалено порядка миллиона записей за несколько минут, обновлена статистика, затем через некоторое время удаление из этой таблицы всего сотни записей длится минуты и так в течение нескольких часов. Потом опять удаление неск сотен тысяч записей проходит очень быстро. Удаляю по условию без индекса первые попавшиеся N записей.
...
Рейтинг: 0 / 0
19.12.2008, 15:23
    #35724913
Vladimir Kiselev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
db2admman,

каким образом идёт работа с таблицей, клиентское приложение (cli, embedded sql,jdbc?) или командная строка? Удаление по полю без индексов опять же не очень быстрая штука на больших таблицах. Можно, конечно db2advis попробовать, хотя наличие индексов не всегда ускоряет приложение. Я сам не сталкивался с периодической задачей удаления больших массивов данных, обычно бывают разовые задачи такого характера, почистить данные, например, накопленные при отладке, чтобы прогнать снова. Я еще сейчас с rebind собираюсь разобраться, после runstats могут измениться условия для оптимизации.
Удачи!
...
Рейтинг: 0 / 0
22.12.2008, 09:31
    #35727063
db2admman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Таблица заполняется данными периодически, но не часто (может раз в час), клиентское приложение вроде jdbc. Сейчас возникла задача удалить часть записей (больше половины). Удаляю первые попавшиеся по условию N записей, а поскольку таких записей в таблице процентов 80, то и удаление идет очень быстро (но иногда начинаются тормоза, как я писал выше).
...
Рейтинг: 0 / 0
22.12.2008, 14:33
    #35727937
Gida
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Vladimir Kiselevdb2admman,

ну и поаккуратней с
Код: plaintext
not logged initially
здесь уже об этом писали, в случае ROLLBACK (ошибки), придётся восстанавливать всё из бакапа.

Аккуратно. Из моего опыта (db2 v7 персналочный), если к таблице с включенной "опцией not logged initially" некорректно обратиться, то ей каюк. Скажем, delete from t1 where day='2008-11-31'. В ноябре же всего 30 дней, то есть делит не выполнится-ругнется на дату. А при следующем к ней обращении она оказывается недоступна. А потом только restore....Короче, если решите делать, никаких коннектов к базе. И сначал все команды на отладке лучше попробовать.
...КОгда надо было много чистить инфы, то размер лог файлов до 150 мг поправить можно, чтобы транзакции больше помещялись. Посистил инфу, потом бекап офлайновый, а потом и ллоги можно почистить :)
...
Рейтинг: 0 / 0
22.12.2008, 14:34
    #35727941
Gida
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Потом реорг, ранстат, ребинд.
...
Рейтинг: 0 / 0
22.12.2008, 16:36
    #35728292
db2admman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Возможно проблема в блокировках. Сделал LOCK TIMEOUT 60 для сессии и теперь если данные не удаляются то сессия просто выдает ошибку и откатывается (not logged не делаю поскольку и так быстро удаление идет). Это при уровне изоляции для сессии удаления dirty read, что странно. При этом в логе появляется ошибка:

ADM5503E The escalation of "1021" locks on table ... to lock intent "X" has failed. The SQLCODE is "-911"
...
Рейтинг: 0 / 0
22.12.2008, 22:09
    #35728943
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Попробуйте перед тем как делать удаление сначала заблокировать таблицу (см LOCK TABLE)
А также рассмотрите возможность делать все это по частям.
Попробуйте поставить DB2_SKIPDELETED, а также удалять из нескольких сессий и по частям :)
Я лично так не пробовал, но должно вроде получиться)
Хотя, на самом деле чтобы почистить табличу полностью: ALTER TABLE {tabname} NOT LOGGED INITIALLY WITH EMPTY TABLE, что аналогично truncate в других базах данных. Естественно что такая команда требует исключительного доступа к табличке.
...
Рейтинг: 0 / 0
23.12.2008, 09:03
    #35729235
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Вообще можно если записей в таблице надо удалять > 80 % от всех то можно записи не подлежащие удалению скопировать в новую таблицу, затем исходную удалить а новую переименовать. Конечно это придется делать с отключением приложений.
...
Рейтинг: 0 / 0
24.12.2008, 07:07
    #35731360
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей из таблицы
Если разок удалить - reorg проще.
Если регулярно удалять большие объёмы - имеет смысл задуматься о секционировании таблицы каким-нибудь способом. Для нынешней Express-C можно воспользоваться старым добрым VIEW с UNION ALL.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Удаление записей из таблицы / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]