Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.12.2008, 08:47
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
Когда из таблицы удаляются записи, освобожденное место может быть использовано снова или надо запускать реорганизацию таблицы чтобы место в tablespace освободилось? Почему при удалении большого кол-ва записей через некоторое время при работе с таблицей последующие удаления проходят гораздо медленее чем вначале (удаление в обоих случаях идет по условию без индекса, перед удалением таблица переводится в нежурналируемый режим с помощью alter table ... activate not logged initially) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.12.2008, 10:31
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
db2admman, 1. Да, освободившееся место может быть использовано снова для данных из той же таблицы. Чтобы место было доступно для других таблиц - нужен реорг. 2. После больших изменений ( напр, как сказано - "при удалении большого кол-ва записей" ) следует запускать утилиту runstat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.12.2008, 11:20
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
db2admman, ну и поаккуратней с Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.12.2008, 11:26
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
Можно поконкретнее насчет rollback и not logged initially ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.12.2008, 12:14
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
db2admmanМожно поконкретнее насчет rollback и not logged initially ? А нету-ти его! И всё тут. Вы же сами отключили ведение журнала. Поэтому, в случае возникновения ошибки, вам прямая дорога к восстановлению бекапа или заранее слитого дампа таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.12.2008, 13:26
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
Почему тогда через некоторое кол-во удаления большого числа записей (неск процентов от общего числа записей в таблице) последующие удаления на протяжении неск часов идут очень медленно? Обновление статистики не помогает. Например было удалено порядка миллиона записей за несколько минут, обновлена статистика, затем через некоторое время удаление из этой таблицы всего сотни записей длится минуты и так в течение нескольких часов. Потом опять удаление неск сотен тысяч записей проходит очень быстро. Удаляю по условию без индекса первые попавшиеся N записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.12.2008, 15:23
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
db2admman, каким образом идёт работа с таблицей, клиентское приложение (cli, embedded sql,jdbc?) или командная строка? Удаление по полю без индексов опять же не очень быстрая штука на больших таблицах. Можно, конечно db2advis попробовать, хотя наличие индексов не всегда ускоряет приложение. Я сам не сталкивался с периодической задачей удаления больших массивов данных, обычно бывают разовые задачи такого характера, почистить данные, например, накопленные при отладке, чтобы прогнать снова. Я еще сейчас с rebind собираюсь разобраться, после runstats могут измениться условия для оптимизации. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.12.2008, 09:31
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
Таблица заполняется данными периодически, но не часто (может раз в час), клиентское приложение вроде jdbc. Сейчас возникла задача удалить часть записей (больше половины). Удаляю первые попавшиеся по условию N записей, а поскольку таких записей в таблице процентов 80, то и удаление идет очень быстро (но иногда начинаются тормоза, как я писал выше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.12.2008, 14:33
|
|||
|---|---|---|---|
Удаление записей из таблицы |
|||
|
#18+
Vladimir Kiselevdb2admman, ну и поаккуратней с Код: plaintext Аккуратно. Из моего опыта (db2 v7 персналочный), если к таблице с включенной "опцией not logged initially" некорректно обратиться, то ей каюк. Скажем, delete from t1 where day='2008-11-31'. В ноябре же всего 30 дней, то есть делит не выполнится-ругнется на дату. А при следующем к ней обращении она оказывается недоступна. А потом только restore....Короче, если решите делать, никаких коннектов к базе. И сначал все команды на отладке лучше попробовать. ...КОгда надо было много чистить инфы, то размер лог файлов до 150 мг поправить можно, чтобы транзакции больше помещялись. Посистил инфу, потом бекап офлайновый, а потом и ллоги можно почистить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.12.2008, 14:34
|
|||
|---|---|---|---|
Удаление записей из таблицы |
|||
|
#18+
Потом реорг, ранстат, ребинд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.12.2008, 16:36
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
Возможно проблема в блокировках. Сделал 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" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.12.2008, 22:09
|
|||
|---|---|---|---|
Удаление записей из таблицы |
|||
|
#18+
Попробуйте перед тем как делать удаление сначала заблокировать таблицу (см LOCK TABLE) А также рассмотрите возможность делать все это по частям. Попробуйте поставить DB2_SKIPDELETED, а также удалять из нескольких сессий и по частям :) Я лично так не пробовал, но должно вроде получиться) Хотя, на самом деле чтобы почистить табличу полностью: ALTER TABLE {tabname} NOT LOGGED INITIALLY WITH EMPTY TABLE, что аналогично truncate в других базах данных. Естественно что такая команда требует исключительного доступа к табличке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.12.2008, 09:03
|
|||
|---|---|---|---|
Удаление записей из таблицы |
|||
|
#18+
Вообще можно если записей в таблице надо удалять > 80 % от всех то можно записи не подлежащие удалению скопировать в новую таблицу, затем исходную удалить а новую переименовать. Конечно это придется делать с отключением приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.12.2008, 07:07
|
|||
|---|---|---|---|
|
|||
Удаление записей из таблицы |
|||
|
#18+
Если разок удалить - reorg проще. Если регулярно удалять большие объёмы - имеет смысл задуматься о секционировании таблицы каким-нибудь способом. Для нынешней Express-C можно воспользоваться старым добрым VIEW с UNION ALL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=43&mobile=1&tid=1603492]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 299ms |

| 0 / 0 |
