|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
Код: plaintext
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
В логах сервера стала часто появляться ошибка "Error 1204, Severity 17" с вытекающими последствиями на приложении в виде сообщения "ASE has run out of LOCKS". Правильно ли я понимаю что эскалация блокировок тут работает следующим образом. 1) При блокировке более 200 строк в одной таблице и в одной сессии происходит эскалация до блокировки страниц. 2) После блокировки более 200 страниц в одной таблице и в одной сессии происходит эскалация до блокирования таблицы. 3) Ошибка "ASE has run out of LOCKS" является следствием превышения количества блокировок всех типов числа 1000000 на момент ошибки. Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 10:33 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
SQLMantis, для таблиц с построчной блокировкой 1. если у вас локов меньше row lock promotion LWM - построчная блокировка 2. если у вас локов больше page lock promotion HWM - эскалирует до блокировки таблицы 3. если у вас локов больше row lock promotion LWM , но меньше page lock promotion HWM, тогда считается row lock promotion PCT(на сколько процентов у вас залочена таблица), если больше чем этот процент, тогда эскалирует до блокировки таблицы Теже правила для таблиц с постраничной блокировкой, только параметры page lock promotion ... итд. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 11:24 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
SQLMantis 3) Ошибка "ASE has run out of LOCKS" является следствием превышения количества блокировок всех типов числа 1000000 на момент ошибки. Да вы превысили значение number of locks. Ну и не забывайте что управление блокировками осуществляется как на уровне сервера, так и на уровне таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 11:31 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
ЯSQLMantis, для таблиц с построчной блокировкой 1. если у вас локов меньше row lock promotion LWM - построчная блокировка 2. если у вас локов больше page lock promotion HWM - эскалирует до блокировки таблицы 3. если у вас локов больше row lock promotion LWM , но меньше page lock promotion HWM, тогда считается row lock promotion PCT(на сколько процентов у вас залочена таблица), если больше чем этот процент, тогда эскалирует до блокировки таблицы Теже правила для таблиц с постраничной блокировкой, только параметры page lock promotion ... итд. Опечатался!!! Нужно так: Ядля таблиц с построчной блокировкой 1. если у вас локов меньше row lock promotion LWM - построчная блокировка 2. если у вас локов больше row lock promotion HWM - эскалирует до блокировки таблицы 3. если у вас локов больше row lock promotion LWM , но меньше row lock promotion HWM, тогда считается row lock promotion PCT(на сколько процентов у вас залочена таблица), если больше чем этот процент, тогда эскалирует до блокировки таблицы Теже правила для таблиц с постраничной блокировкой, только параметры page lock promotion ... итд. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 15:25 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
cherrex_DenДа вы превысили значение number of locks. Ну и не забывайте что управление блокировками осуществляется как на уровне сервера, так и на уровне таблице. Это все понятно. Не понятно одно. С учетом роста блокировок, по идее, они должны эскалироваться вплоть до табличной блокировки. Если еще учесть тот факт что практически все таблицы созданы с блокировкой ALLPAGES, я бы расчитывал получить в самом худшем случае базу вставшую "колом" из за блокировки всех таблиц. Но при этом, насколько я понимаю, количество блокировок должно быть равно количеству таблиц. У меня нет миллиона таблиц в базе. Если же у меня абсолютно все таблицы будут иметь заблокированными 200 страниц (грань после которой будет заблокирована вся таблица) то получается я должен иметь в базе 5000 таблиц. У меня и этого количества нет. Единственное что приходит в голову - есть некий таймаут между превышением значения page lock promotion HWM и эскалацией до таблицы. В этот таймаут я умудряюсь превысить количество блокировок указанное в number of locks. Есть еще один непонятный момент. Что происходит с двумя разными сессиями, которые читают одну таблицу? Предположим что обоим нужно заблокировать более 200 страниц. Одна достигает этого порога раньше и должна произойти эскалация до блокировки таблицы. Но что делать с блокировками второй сессии? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 16:08 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
SQLMantis, Это сложный механизм: интентовые блокировки, блокировки ожидания, лачесы, курсорные.... Все что вы хотите знать очень хорошо описано в документации. Особено все понятно в русской доке, на sybase.ru ее можно скачать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 16:23 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
On 06/16/2011 08:23 PM, cherrex_Den wrote: > Все что вы хотите знать очень хорошо описано в документации. Особено все понятно > в русской доке, на sybase.ru ее можно скачать. Ещё есть в нашем FAQ. Эскалация на уровне сервера у вас сконфигурена ужасно, при превышении 200 локов на таблицу просходит эскалация. Возможно, реально используется конфигурация эскалации на конкретных таблицах, а глобальная настройка не используется. В общем, локов вам не хватает по какой-то другой причине. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2011, 06:42 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
MasterZivOn 06/16/2011 08:23 PM, cherrex_Den wrote: > Все что вы хотите знать очень хорошо описано в документации. Особено все понятно > в русской доке, на sybase.ru ее можно скачать. Ещё есть в нашем FAQ. Эскалация на уровне сервера у вас сконфигурена ужасно, при превышении 200 локов на таблицу просходит эскалация. Возможно, реально используется конфигурация эскалации на конкретных таблицах, а глобальная настройка не используется. В общем, локов вам не хватает по какой-то другой причине. Эскалация у нас вообще не настроена. Это дефолтовые значения. Настроек эскалации на таблицах тоже нет. В общем пока вкуриваю еще раз документацию по блокировкам. Если есть у кого умные мысли или предположения буду рад выслушать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2011, 11:20 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
SQLMantis, 1. If another task holds locks that conflict with the type of table lock needed, lock escalation does not occur. 2. Lock promotion occur on a per-scan session basis. Each scan of a table is a scan session. Multiple scan sessions can occur on a table for a given transaction, particularly in the case of a parallel query with multiple worker processes scanning the same table. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2011, 11:28 |
|
out of locks (помогите разложить по полкам)
|
|||
---|---|---|---|
#18+
И ещё. Эскалация всегда выполняется сразу до уровня таблицы. Are always from page locks to table locks or from row locks to table locks: - Row locks are never promoted to page locks - Occur on a per-scan session basis ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2011, 11:32 |
|
|
start [/forum/search_topic.php?author=L&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 746ms |
total: | 905ms |
0 / 0 |