Настройки первоначального snapshot

Примечание

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

Эти настройки включают два параметра:

  1. snapshot.locking.mode

    Определяет стратегию блокировок при выполнении снимка данных для предотвращения конфликтов.

    • none – транзакция не блокирует данные, позволяя другим транзакциям читать и изменять их параллельно.

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

      ✓ Улучшает производительность.

      x Риск конфликтов и несогласованности данных.

    • exclusive – транзакция блокирует данные, предотвращая доступ других транзакций до завершения считывания метаданных.

      ✓ Гарантирует максимальную согласованность.

      x Может вызывать блокировки и снижать производительность.

  2. snapshot.isolation.mode

    Определяет, как одна транзакция воспринимает изменения, внесённые другими транзакциями, и как долго блокируются таблицы, входящие в состав коннектора.

    • read_uncommitted

      Наименее строгий уровень изоляции, игнорирующий блокировки, размещенные другими транзакциями. Транзакция может считывать измененные значения данных, которые еще не были зафиксированы другими транзакциями.

      ✓ Минимальные блокировки, высокая производительность.

      x Возможно «грязное чтение», потеря или повреждение некоторых данных.

    • read_committed

      Транзакция не может считывать значения данных, которые были изменены, но еще не зафиксированы другими транзакциями.

      Другие транзакции могут изменять, вставлять или удалять данные между выполнениями отдельных инструкций в текущей транзакции.

      ✓ Предотвращает «грязное чтение».

      x Возможно «неповторяющееся чтение», дублирование данных.

    • repeatable_read

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

      ✓ Защищает от «грязного» и «неповторяющегося» чтения.

      x Возможно «фантомное чтение», дублирование данных.

    • snapshot

      Данные, считываемые в рамках транзакции, никогда не будут отражать изменения, внесенные другими одновременными транзакциями.

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

      Обеспечивается согласованность без блокировок (рекомендуется для больших баз).

      ✓ Полная изоляция без блокировок.

      x Требует дополнительных ресурсов для хранения версий.

    • exclusive

      Строгая блокировка данных на время транзакции.

      ✓ Максимальная согласованность.

      x Серьёзно снижает параллельную работу.

    Важно:

    • Режимы snapshot, read_committed и read_uncommitted не блокируют обновления данных другими транзакциями во время первоначального снимка.

    • Режимы exclusive и repeatable_read предотвращают параллельные обновления.

Когда необходимо настраивать?

  • Согласованность данных – если требуется гарантировать, что начальный снимок будет точным и непротиворечивым.

    Лучше использовать: snapshot.isolation.mode = snapshot или exclusive.

  • Производительность – выбор режима влияет на нагрузку на базу и время выполнения снимка.

  • Минимизация блокировок – в продакшн-средах важно избегать длительных блокировок таблиц.

Важно

По умолчанию используются значения:

  • snapshot.isolation.mode = snapshot

  • snapshot.locking.mode = none

Следует учитывать ограничения:

  1. Для источника-реплики изменение настройки не доступно. Будут использоваться значения по умолчанию.

  2. Для snapshot_locking_mode = exclusive, допустимые значения snapshot_isolation_mode: repeatable_read или exclusive.

locking_mode

isolation_mode

none

exclusive

read_uncommitted

x

read_committed

x

repeatable_read

snapshot

x

exclusive

  1. Раскройте «Настройки первоначального snapshot».

    Настройки первоначального snapshot

    Отобразятся две настройки:

    1. snapshot.isolation.mode.

      Доступные значения:

      • read_uncommitted

      • read_committed

      • repeatable_read

      • snapshot (значение по умолчанию)

      • exclusive

    2. snapshot.locking.mode.

      Доступные значения:

      • none (значение по умолчанию)

      • exclusive

  2. Измените значения настроек при необходимости.

  3. Нажмите кнопку Сохранить.

    Сохранение настройки первоначального snapshot