"Убираем блокировки в 1С" статья

Тема в разделе "Полезные ссылки", создана пользователем comol, 8 сен 2011.

  1. TopicStarter Overlay
    comol
    Offline

    comol Опытный в 1С

    Регистрация:
    8 сен 2011
    Сообщения:
    153
    Симпатии:
    0
    Баллы:
    26
    _http://comol.livejournal.com/558.html - делаем из SQL 2005/8 версионник.

    _http://comol.livejournal.com/1013.html - переход на управляемые блокировки за полчаса
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Прежде чем предлагать надо подумать, как сделать так чтобы не двигать чужие "заморочки", много таких
  3. BVB_berserk
    Offline

    BVB_berserk Опытный в 1С

    Регистрация:
    30 янв 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26
    Об использовании SNAPSHOT ISOLATION задумывался давно, но до полноценного теста в связке с 1С так и не добрался. Ибо первая же ситуация которая пришла в голову - списание в минус:
    Первая транзакция читает остатки и, если остатка достаточно, блокирует для списания.
    Вторая транзакция читает остатки (из версионника) и, так как их снова достаточно, пытается наложить искл. блокировку для списания. Когда первая транзакция выполнится, вторая тоже спишет остатки.

    Конечно, эту проблему можно решить, не читая остатка, а выполняя сразу списание (исключительная блокировка) и затем проверяя на отрицательный остаток. Только тут у нас всё равно писатели блокируют писателей - версионник не поможет.
    В общем, моё мнение - правильная работа с SNAPSHOT может привести к нехилому изменению кода, в том числе обработок проведения.

    Ах, ну и последнее - "убираем блокировки в 1С" - слишком громкий заголовок, вы ж не статью в Комсомолку-толстушку пишете. К тому же вы их и не уберете, просто уменьшите их количество.
  4. TopicStarter Overlay
    comol
    Offline

    comol Опытный в 1С

    Регистрация:
    8 сен 2011
    Сообщения:
    153
    Симпатии:
    0
    Баллы:
    26
    Нет, списания в минус не будет ни в коем случае - вы же не прочитали 2-ю статью - про управляемые блокировки. Блокировка остатков на уровне SQL не нужна - она производится на уровне сервера 1с. В этом основная фича. Следовало конечно назвать "убиваем избыточные блокировки"
    Под "Заморочками" я как раз и понимал контроль остатков, за который, естественно, должен отвечать прикладной программист, а никак не SQL сервер.
  5. BVB_berserk
    Offline

    BVB_berserk Опытный в 1С

    Регистрация:
    30 янв 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26
    Я знаю и про управляемые блокировки, и про новую методику проведения документов. В вашем варианте вы предлагаете переписывать ПП на управляемые блокировки, что, согласитесь, немалый труд, чтобы корректно заработал версионник. А в новой методике проведения - сначала пишем (накладывая сразу исключительную блокировку) ,а потом уж проверяем что вышло (и это кстати тоже можно на управляемых блокировках писать), тут версионник даже не нужен.
    Собственно, я к чему речь веду - что "за полчасика" работы программа не станет "летать", выбирая любой из вариантов, всё равно надо проделать довольно большой объем работы.
  6. TopicStarter Overlay
    comol
    Offline

    comol Опытный в 1С

    Регистрация:
    8 сен 2011
    Сообщения:
    153
    Симпатии:
    0
    Баллы:
    26
    1) Вы вторую статью прочитали? на управляемые блокировки не надо "переписывать", а нужно их просто включить и поставить блокировки ТОЛЬКО там, где реально есть контроль остатков, который вам нужен, и должен работать правильно при паралленльной работе. Таких мест даже если у вас более 300 пользователей работает не много в конфигурации... очень не много.
    2) Версионник нужен всегда когда у вас уровень изоляции Read Commited - даже когда нет никаких блокировок... просто потому что позволяет читать то что ещё пишется.
    3) Я же не просто так пишу, я провёл нагрузочное тестирование.

Поделиться этой страницей