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

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

каким образом идёт работа с таблицей, клиентское приложение (cli, embedded sql,jdbc?) или командная строка? Удаление по полю без индексов опять же не очень быстрая штука на больших таблицах. Можно, конечно db2advis попробовать, хотя наличие индексов не всегда ускоряет приложение. Я сам не сталкивался с периодической задачей удаления больших массивов данных, обычно бывают разовые задачи такого характера, почистить данные, например, накопленные при отладке, чтобы прогнать снова. Я еще сейчас с rebind собираюсь разобраться, после runstats могут измениться условия для оптимизации.
Удачи!
...
Рейтинг: 0 / 0
Удаление записей из таблицы
    #35727063
db2admman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица заполняется данными периодически, но не часто (может раз в час), клиентское приложение вроде jdbc. Сейчас возникла задача удалить часть записей (больше половины). Удаляю первые попавшиеся по условию N записей, а поскольку таких записей в таблице процентов 80, то и удаление идет очень быстро (но иногда начинаются тормоза, как я писал выше).
...
Рейтинг: 0 / 0
Удаление записей из таблицы
    #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
Удаление записей из таблицы
    #35727941
Gida
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потом реорг, ранстат, ребинд.
...
Рейтинг: 0 / 0
Удаление записей из таблицы
    #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
Удаление записей из таблицы
    #35728943
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте перед тем как делать удаление сначала заблокировать таблицу (см LOCK TABLE)
А также рассмотрите возможность делать все это по частям.
Попробуйте поставить DB2_SKIPDELETED, а также удалять из нескольких сессий и по частям :)
Я лично так не пробовал, но должно вроде получиться)
Хотя, на самом деле чтобы почистить табличу полностью: ALTER TABLE {tabname} NOT LOGGED INITIALLY WITH EMPTY TABLE, что аналогично truncate в других базах данных. Естественно что такая команда требует исключительного доступа к табличке.
...
Рейтинг: 0 / 0
Удаление записей из таблицы
    #35729235
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще можно если записей в таблице надо удалять > 80 % от всех то можно записи не подлежащие удалению скопировать в новую таблицу, затем исходную удалить а новую переименовать. Конечно это придется делать с отключением приложений.
...
Рейтинг: 0 / 0
Удаление записей из таблицы
    #35731360
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если разок удалить - reorg проще.
Если регулярно удалять большие объёмы - имеет смысл задуматься о секционировании таблицы каким-нибудь способом. Для нынешней Express-C можно воспользоваться старым добрым VIEW с UNION ALL.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Удаление записей из таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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