powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Установка _правильного_ размера таблицы блокировок в новом портале
4 сообщений из 4, страница 1 из 1
Установка _правильного_ размера таблицы блокировок в новом портале
    #36793401
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется установленная Cache for Windows (x86-64) 2010.1 (Build 413)

Имеется таблица в которой нужно обновить значение некого поля
Код: plaintext
1.
update SomeTable set SomeField= 42  where ID> 0 
Условие ненастоящие - под настоящие условие попадает 68168 Rows Affected

В результате выполнения получаю ошибку -110 и сообщение в cconsole.log
Код: plaintext
1.
 2  LOCK TABLE FULL!!!  (Repeat messages will be suppressed for  20  minutes).

А это даже не смешно ...

Поиски в новом портале места установки размера таблицы блокировки, приводят в [Домашняя страница] > [Конфигурация] > [Дополнительные Настройки Памяти] - параметр locksiz равный по умолчанию 1179648 - при нажатии на справку получаю.
автор
locksiz
Size (in bytes) of memory allocated for locks. The system rounds up the value to the next multiple of 64 kilobytes. The default is 1179648 bytes. (On the HP platform, the default is four times the usual default – 1179648*4 (4718592 bytes).) The range is 65536 bytes up to the gmheap size. If you need more room for the lock table, increase the GenericMemoryHeap size as well.
If you edit this setting, you must restart Caché to apply the change.


Вопрос - какое значение locksiz - Вы обычно используете ?
Ибо при всё "уважении" к новому порталу ... в стареньком редакторе конфигурации подсказки были куда понятнее и ощутимее - ибо он сразу давал подсказки по максимальному значению и показывал насколько далеко от него текущее.

Как его правильно рассчитать ? Сначала мне нужно увеличить gmheap потом locksiz - вопрос на сколько ?

Пока я для себя не выяснил этот вопрос, делаю вот так
Код: plaintext
1.
update %nolock SomeTable set SomeField= 42  where ID> 0 
но это явный костыль
...
Рейтинг: 0 / 0
Установка _правильного_ размера таблицы блокировок в новом портале
    #36794463
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, тоже натыкался на такую проблему.
Для себя решил, что неправильно делать апдейт для всей таблицы и при этом лочить каждую запись - таблица может быть из сотен миллионов строк, а блокировка сама по себе не очень быстрый процесс. И что делать если не получается заблокировать стомиллионную-1 запись? все равно сбрасываем все назад. Поэтому:
1) апдейтим %nolock, уповая на то что нигде ничего не заденет
2) блокируем работу системы целиком, если п.1. не подходит и делаем %nolock.
3) пишем программу и апдетим по кускам.

:-(
...
Рейтинг: 0 / 0
Установка _правильного_ размера таблицы блокировок в новом портале
    #36794476
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для примера, операция
d $system.SQL.Purge(0)
тоже делает блокировку. И что мы видим - если запустить во время работы системы, то сотня пользователей, работающая с системой фактически оказывается заблокированной, но процессы их продолжают работать, они жмут на кнопки в своей системе и т.д., в результате таблица блокировок пухнет очень быстро, на время система замирает, и, честно говоря, мне всегда страшно в такие моменты, не заклинит ли ее намертво.

То же с компиляцией классов: иногда экстренно нужно скомпилировать незначительный класс в живой системе, при этом может зацепить другие, те еще другие и т.д. в результате что-то оно там не может заблокировать и система становится колом, приходится делать сброс пользовательских процессов.
Кстати, только мне кажется, что в каше не хватает возможности увидеть, какие классы будут скомпилированы, и нет ли этому препятствий?
...
Рейтинг: 0 / 0
Установка _правильного_ размера таблицы блокировок в новом портале
    #36794793
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык в том то и дело что я вроде в каком то из релиз нотесов - читал что мол таблица блокировок теперь динамическая.

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

В общем поставил так :

Основная куча памяти 65536Кб = 64Мб (по умолчанию 3.2Мб)

gmheap=65536

Размер таблицы блокировок 32Мб (половина кучи) - 33554432 байт (по умолчанию 1.125Мб)

locksiz=33554432

Насколько это оптимально/верно - хз. Пока работает ...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Установка _правильного_ размера таблицы блокировок в новом портале
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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