Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
24.01.2005, 15:52
|
|||
---|---|---|---|
|
|||
Переполнение блокировок |
|||
#18+
Есть приложение, которое время от времени вносит записи в БД в рамке одной транзакции. Транзакции по времени довольно длинные (приблизительно 60 секунд). На протяжении этой транзакции производиться вставка порядка 10 тысяч записей, а то и более, в разнообразные таблицы (практически во все таблицы БД). Во время выполнения транзакции растет количество блокировок, в основном на записи в таблицах, но появляются блокировки и на целые таблицы. При достижении определенного момента появляется предупреждении о достижении максимального количество блокировок. Также резко падает производительность БД. В связи с чем у меня несколько вопросов: 1. Какие есть варианты для снижения количества блокировок. 2. Как повысить быстродействия БД, если в основном работает именно описанное приложение. ЗЫ. Выполнять вставку вне транзакции, или бить на несколько нескольких нет возможности, т.к. это атомарная операция. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.01.2005, 17:04
|
|||
---|---|---|---|
Переполнение блокировок |
|||
#18+
Привет! Уточнняющие вопросы. 1. Сколько одновременно ( в одно и тоже время ) выполняется транзакций ( о которых Вы говорите )? 2. Могли бы Вы описать характер Вашего приложения в части типов имеющих место транзакций (read-only, read-write) и их соотношения? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.01.2005, 17:32
|
|||
---|---|---|---|
Переполнение блокировок |
|||
#18+
отстается только одно - UPDATE DB CFG FOR <your db> USING LOCKLIST <размер побольше> ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.01.2005, 17:49
|
|||
---|---|---|---|
Переполнение блокировок |
|||
#18+
там где-то еще есть параметр на каком уровне делать блокировку. вроде на уровне row, page, table, tablespace или any еще вроде бы его можно поставить в any. это то что у вас. нужно поставить этот параметр в значение побольше чем строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.01.2005, 17:59
|
|||
---|---|---|---|
Переполнение блокировок |
|||
#18+
на 390 это параметр у тейблспейса. а где на windows нужно поискать. наверно тоже у тейблспейса. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.01.2005, 09:45
|
|||
---|---|---|---|
|
|||
Переполнение блокировок |
|||
#18+
Уточнения: 1. БД работает под Windows. 2. Одновременно выполняться до 10 транзакций, может и больше. 3. Транзакции в основном пишут данных (99% запросов типа INSERT). Но есть несколько десятков запросов на выборку данных (попадание высокое, с точностью до одной записи). 4. Количество таблиц участвующих в транзакции приблизительно 60 - 100. 5. Версия DB2 v8.1.7.445. Но я так и не нашел параметр у тейблспейса на установку уровня блокировки. Но нашел этот параметр в свойствах таблицы. Но там он может принимать значение блокировки только на уровне строк или всей таблице. На уровне строк у меня и так сейчас все работает, а на уровне таблицы не подходит, так как заблокирует работу других транзакций. ЗЫ. Я начал работать с DB2 всего одну неделю назад, ранее с ней не сталкивался, поэтому могу задавать глупые вопросы, приношу заранее за это свои извинения. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.01.2005, 19:00
|
|||
---|---|---|---|
Переполнение блокировок |
|||
#18+
Alex_GB...уровне таблицы не подходит, так как заблокирует работу других транзакций. Я не уверен на все 100%, что это поможет ( тоже пока новичок в DB2 ), но так как узкое место в Вашей системе - это одновременный доступ к одним и тем же ресурсам (т.е. пропускная способность в обработки "длинных" транзакций), то позвольте мне порекомендовать Вам следующее: 1. Попробовать установить блокировку на уровне таблиц (например, через следующую команду: ALTER TABLE <table> LOCKSIZE TABLE). Я думаю, в данном случае "лучше сто раз по разу, чем один раз сто раз" . 2. Рассмотреть возможность ( если бизнесс-логика Вашего приложения позволяет ) разделения больших таблиц на разделы (например, по территориальному, временному или какому-либо другому признаку), и обеспечить прозрачный доступ к ним через представление UNION ALL для "читателей" и "писателей". При четком разбиении это может уменьшить конкуренцию за ресурсы (таблицы) со стороны транзакций. P.S. Кроме того, как писал уважаемый GARDENMAN, необходимо так же обратить внимание на LOCKLIST с целью оптимальной его настройки. Но надо принять во внимание, что "Память не резиновая" . С уважением kdima71. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/moderation_log.php?user_name=natalybak]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 442ms |
total: | 605ms |
0 / 0 |