Каков наилучший уровень изоляции транзакции для строки вставки? - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужно понять, какая из транзакций лучше всего изолирована, и я могу использовать это для двух вещей:

  1. Сохранить строку в таблице A
  2. Сохранить строку в таблице B

Я знаю, что если я использую как изоляцию транзакции SERIALIZABLE, она работает нормально, но мне нужно знать, возможно ли использовать READ_COMMITED или REPEATEBLE_READ. Я сохраняю только две строки в двух разных таблицах, поэтому я не выполняю операцию READ, поэтому я считаю, что READ_COMMIT является лучшим решением? Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 07 сентября 2018

Требуется ли, чтобы новые строки A и B сохранялись вместе и были видны только вместе?Если вы ничего не читаете и у вас все в порядке с A и B, которые не обязательно отображаются вместе, вам здесь даже не нужна транзакция.

Это хорошее связанное чтение: https://www.sqlpassion.at/archive/2014/01/21/myths-and-misconceptions-about-transaction-isolation-levels/.

Кроме того, следующее противоречит тому, что я сказал ранее (здесь уже удалено / обновлено):

https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/transaction-isolation-levels?view=sql-server-2017

Чтение незафиксировано: Транзакции не изолированы друг от друга.Если СУБД поддерживает другие уровни изоляции транзакций, она игнорирует любой механизм, который она использует для реализации этих уровней.Чтобы они не оказывали негативного влияния на другие транзакции, транзакции, выполняемые на уровне Read Uncommitted, обычно доступны только для чтения .

Он также довольно хорошо описывает другие состояния.Похоже, что здесь лучше всего будет зафиксировано чтение.

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

Это позволит безопасному удалению и вставке, упомянутой в комментарии.

...