Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
rebel25 Большой шоколадный орден
Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Вт Июл 14, 2015 10:09 Заголовок сообщения: Блокировка при вставке и изменении |
|
|
В момент формирования прямых начислений по данным табельного учета, другой пользователь может запустить изменение прямых начислений одной из самописных программ,
например массовое снятие розовизны в прямых. При этом списки работников двух пользователей не пересекаются.
Иногда это приводит к блокировке на уровне страниц.
Скажите как бороться с блокировками из-за одновременной вставке и изменении в одну таблицу? |
|
Вернуться к началу |
|
|
Volod Большой шоколадный орден
Зарегистрирован: 11.02.2015 Сообщения: 252
|
Добавлено: Вт Июл 14, 2015 10:56 Заголовок сообщения: |
|
|
Никак.
Одновременно инсерт произвести и апдейт не удастся.
Можно делать селект с нолоком, если при этом происходит инсерт
При апдейте по моему даже селект не отработает.
Вероятно стоит рассмотреть варианты уменьшающие время блокировок, ну оптимизировать скрипт в запросах, проанализиолвать струкруту таблиц
и вероятно создать индексы и или коластерные индексы.
Административно запретить работать с самописной программой на момент расчета прямых. |
|
Вернуться к началу |
|
|
GIN
Зарегистрирован: 04.03.2010 Сообщения: 114
|
Добавлено: Вт Июл 14, 2015 14:17 Заголовок сообщения: |
|
|
rebel25 писал(а): | В момент формирования прямых начислений |
с
rebel25 писал(а): | одной из самописных программ |
rebel25 писал(а): | Скажите как бороться с блокировками из-за одновременной вставке и изменении в одну таблицу? |
Регламентное время работы. _________________ Что бы увидеть свет в конце туннеля, нужно все время копать... |
|
Вернуться к началу |
|
|
RVV Большой шоколадный орден
Зарегистрирован: 14.01.2010 Сообщения: 449
|
Добавлено: Вт Июл 14, 2015 16:36 Заголовок сообщения: |
|
|
Можно при запуске какого-то процесса в Кадровике сделать отметку о блокировке, а при его окончании - снять блок.
Самописная же программа должна эту отметку проверить перед выполнением какого-то действия.
Можно для этого использовать свою табл.
А можно посмотреть работу Кадровика
Execute adm_prc_LockObj
Execute adm_prc_UnLockObj |
|
Вернуться к началу |
|
|
|