powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Переполнение блокировок
7 сообщений из 7, страница 1 из 1
Переполнение блокировок
    #32880451
Alex_GB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть приложение, которое время от времени вносит записи в БД в рамке одной транзакции. Транзакции по времени довольно длинные (приблизительно 60 секунд). На протяжении этой транзакции производиться вставка порядка 10 тысяч записей, а то и более, в разнообразные таблицы (практически во все таблицы БД). Во время выполнения транзакции растет количество блокировок, в основном на записи в таблицах, но появляются блокировки и на целые таблицы. При достижении определенного момента появляется предупреждении о достижении максимального количество блокировок. Также резко падает производительность БД. В связи с чем у меня несколько вопросов:
1. Какие есть варианты для снижения количества блокировок.
2. Как повысить быстродействия БД, если в основном работает именно описанное приложение.
ЗЫ. Выполнять вставку вне транзакции, или бить на несколько нескольких нет возможности, т.к. это атомарная операция.
...
Рейтинг: 0 / 0
Переполнение блокировок
    #32880683
kdima71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Уточнняющие вопросы.
1. Сколько одновременно ( в одно и тоже время ) выполняется транзакций ( о которых Вы говорите )?
2. Могли бы Вы описать характер Вашего приложения в части типов имеющих место транзакций (read-only, read-write) и их соотношения?
...
Рейтинг: 0 / 0
Переполнение блокировок
    #32880814
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отстается только одно - UPDATE DB CFG FOR <your db> USING LOCKLIST <размер побольше>
...
Рейтинг: 0 / 0
Переполнение блокировок
    #32880885
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там где-то еще есть параметр на каком уровне делать блокировку.
вроде на уровне row, page, table, tablespace или any
еще вроде бы его можно поставить в any. это то что у вас.

нужно поставить этот параметр в значение побольше чем строка.
...
Рейтинг: 0 / 0
Переполнение блокировок
    #32880921
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на 390 это параметр у тейблспейса. а где на windows нужно поискать. наверно тоже у тейблспейса.
...
Рейтинг: 0 / 0
Переполнение блокировок
    #32881529
Alex_GB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточнения:
1. БД работает под Windows.
2. Одновременно выполняться до 10 транзакций, может и больше.
3. Транзакции в основном пишут данных (99% запросов типа INSERT). Но есть несколько десятков запросов на выборку данных (попадание высокое, с точностью до одной записи).
4. Количество таблиц участвующих в транзакции приблизительно 60 - 100.
5. Версия DB2 v8.1.7.445.

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

ЗЫ. Я начал работать с DB2 всего одну неделю назад, ранее с ней не сталкивался, поэтому могу задавать глупые вопросы, приношу заранее за это свои извинения.
...
Рейтинг: 0 / 0
Переполнение блокировок
    #32883249
kdima71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_GB...уровне таблицы не подходит, так как заблокирует работу других транзакций.

Я не уверен на все 100%, что это поможет ( тоже пока новичок в DB2 ), но
так как узкое место в Вашей системе - это одновременный доступ к одним и тем же ресурсам (т.е. пропускная способность в обработки "длинных" транзакций), то позвольте мне порекомендовать Вам следующее:

1. Попробовать установить блокировку на уровне таблиц (например, через следующую команду: ALTER TABLE <table> LOCKSIZE TABLE). Я думаю, в данном случае "лучше сто раз по разу, чем один раз сто раз" .

2. Рассмотреть возможность ( если бизнесс-логика Вашего приложения позволяет ) разделения больших таблиц на разделы (например, по территориальному, временному или какому-либо другому признаку), и обеспечить прозрачный доступ к ним через представление UNION ALL для "читателей" и "писателей". При четком разбиении это может уменьшить конкуренцию за ресурсы (таблицы) со стороны транзакций.

P.S. Кроме того, как писал уважаемый GARDENMAN, необходимо так же обратить внимание на LOCKLIST с целью оптимальной его настройки. Но надо принять во внимание, что "Память не резиновая" .

С уважением kdima71.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Переполнение блокировок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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