powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / способы борьбы с блокировками ASE-12_5
11 сообщений из 11, страница 1 из 1
способы борьбы с блокировками ASE-12_5
    #35045836
shmmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня.

Вот такая проблема:
ASE-12_5_4

Есть две связанные таблицы - динамические справочники, отношение многие ко многим. По ним ведется интенсивная конкурентная работа (запись/чтение), зачастую транзакции оказываются достаточно длинными. В результате частые блокировки со всеми вытекающими...

Прекрасно понимаю, что ситуация почти хрестоматийная, но способы борьбы с блокировками, которые приходят в голову --

- отказ от кластерных первичных ключей;
- отказ от внешних ключей;
- установка блокировок на уровне строки;
- логическое фрагментирование (например, по дате);
- кэширование на уровне именованных кэшей --

выглядят как полумеры. Может, после/перед праздниками голова не варит? ::

Кто-то может посоветевать что-то более радикальное? Вплоть до изменения модели?

Спасибо.
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35048259
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ваша бизнес логика допускает грязное чтение?
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35048294
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ещё подумал - насколько должны быть синхронизированны чтение и изменение справочников?

Может быть имеет смысл отделить изменения от чтения, т.е. собирать изменения за определённые промежутки времени в отдельную таблицу и потом разом их в одной транзакции накатывать.

Сделать интервал между накатами, скажем в 5 минут.

Можно было бы даже на моменты наката при помощи логики подвесить пишущие транзакции, например добавить while @read_flag = 0 begin select @read_flag = read flag from sync_table end перед Вашими большими читающими транзакциями.
Ну и соответственно накатывающая транзакция будет перед началом работы ставить @read_flag в 0.

На уровне пользователя вносящего изменения получится что-то "Ваши изменения буду добавлены через 5 минут". Мне часто доводилось видеть подобные сообщения, я думаю что и вам.

На уровне читающего пользователя будут небольшие тормоза раз в 5 минут, может быть он их даже и не заметит.
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35048453
shmmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KruА ваша бизнес логика допускает грязное чтение?
Да, допускает, уже. Там УЖЕ сейчас при чтении накладывается условие по таймстамп. ::)) ::((
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35048463
shmmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KruЯ ещё подумал - насколько должны быть синхронизированны чтение и изменение справочников?

Может быть имеет смысл отделить изменения от чтения, т.е. собирать изменения за определённые промежутки времени в отдельную таблицу и потом разом их в одной транзакции накатывать.

Сделать интервал между накатами, скажем в 5 минут.

Можно было бы даже на моменты наката при помощи логики подвесить пишущие транзакции, например добавить while @read_flag = 0 begin select @read_flag = read flag from sync_table end перед Вашими большими читающими транзакциями.
Ну и соответственно накатывающая транзакция будет перед началом работы ставить @read_flag в 0.

На уровне пользователя вносящего изменения получится что-то "Ваши изменения буду добавлены через 5 минут". Мне часто доводилось видеть подобные сообщения, я думаю что и вам.

На уровне читающего пользователя будут небольшие тормоза раз в 5 минут, может быть он их даже и не заметит.

Видимо, что-то в этом роде и придется сделать. Только, боюсь, придется выдержать серьезную схватку с пользователями, они-то уже привыкли к другому. М-да, оборотная сторона быстро растущего бизнеса. Нет бы заранее репу почесать.

P.S. Большое спасибо, что откликнулись...
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35048615
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmmax KruА ваша бизнес логика допускает грязное чтение?
Да, допускает, уже. Там УЖЕ сейчас при чтении накладывается условие по таймстамп. ::)) ::((

Я так понял, что чтение выполняется по таймеру, так что при следующем прочтении результаты могут быть совсем другими.

Если так, то попробуйте в транзации уровень изоляции грязное чтение поставить. Блокировок вообще не будет и производительность соответственно от них страдать тоже не будет.
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35048625
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmmax KruЯ ещё подумал - насколько должны быть синхронизированны чтение и изменение справочников?

Может быть имеет смысл отделить изменения от чтения, т.е. собирать изменения за определённые промежутки времени в отдельную таблицу и потом разом их в одной транзакции накатывать.

Сделать интервал между накатами, скажем в 5 минут.

Можно было бы даже на моменты наката при помощи логики подвесить пишущие транзакции, например добавить while @read_flag = 0 begin select @read_flag = read flag from sync_table end перед Вашими большими читающими транзакциями.
Ну и соответственно накатывающая транзакция будет перед началом работы ставить @read_flag в 0.

На уровне пользователя вносящего изменения получится что-то "Ваши изменения буду добавлены через 5 минут". Мне часто доводилось видеть подобные сообщения, я думаю что и вам.

На уровне читающего пользователя будут небольшие тормоза раз в 5 минут, может быть он их даже и не заметит.

Видимо, что-то в этом роде и придется сделать. Только, боюсь, придется выдержать серьезную схватку с пользователями, они-то уже привыкли к другому. М-да, оборотная сторона быстро растущего бизнеса. Нет бы заранее репу почесать.

P.S. Большое спасибо, что откликнулись...

По поводу схватки с пользователями - если у Вас процедуры из-за блокировок виснут, то пользователи скорее всего привыкли видеть шевелящийся курсор на экране. Я думаю, что интервал можно вообще 1 минуту поставить. Может быть даже и нескольких секунд хватит. Здесь нужно будет определять на ощуить - меньше интервал - меньше изменений - быстрее синхронизация.
Но может быть Вам просто удастся грязным чтением отделаться и не нужно будет ничего усложнять.

Удачи.

PS: Напишите чем дело закончится. Интересно
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35049867
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmmax пишет:
> - установка блокировок на уровне строки;

Вот это вам поможет. И это не полумеры, а кординальное решение.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35050049
shmmax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура!

Проблему решили путем изменения схемы блокировки + логический разрыв транзакции.
Т.е., данные для связанной таблицы сначала помещаются в #tab, а затем отдельным процессом батчами заливаются собственно в справочник. Сейчас работает даже без семафоров.

P.S. Спасибо Kru и MasterZiv за участие.
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35050356
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
shmmax пишет:
> - установка блокировок на уровне строки;

Вот это вам поможет. И это не полумеры, а кординальное решение.
Posted via ActualForum NNTP Server 1.4
только надо помнить, что при этом таблица будет расти быстрее (формат страницы меняется) и нагрузка на сервер СУБД будет больше, чем при APL схеме (накладные расходы на обслуживание DOL схемы)
...
Рейтинг: 0 / 0
способы борьбы с блокировками ASE-12_5
    #35050381
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmmax пишет:
> Проблему решили путем изменения схемы блокировки + /_логический_/ разрыв
> транзакции.
> P.S. Спасибо Kru и MasterZiv за участие.


О! "Одно мое слово спасло Францию !"
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / способы борьбы с блокировками ASE-12_5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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