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

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

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

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

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

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

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

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

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

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


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