Я работаю над веб-сайтом с типичным шаблоном использования сети CRUD: похожим на блоги или форумы, где пользователи создают / обновляют контент, а другие пользователи читают контент.
Похоже, можно установить уровень изоляции базы данных на "Читать незафиксированные"(грязные чтения) в таком случае. Насколько я понимаю, общий недостаток «Read Uncommitted» состоит в том, что читатель может прочитать незафиксированные данные, которые позже будут откатаны.
Будет ли когда-нибудь откат в шаблоне использования блога / форума CRUD? И даже если есть, есть ли серьезные проблемы с чтением незафиксированных данных?
Прямо сейчас я не использую репликацию, но если в будущем я захочу использовать репликацию (на основе строк, а не на основе операторов), помешает ли мне это сделать из-за уровня изоляции «Чтение незафиксированных»?
Что вы думаете? Кто-нибудь пробовал использовать "Read Uncommitted" в своей СУБД?
Вы можете безопасно использовать репликацию на основе строк, но не на основе операторов.
Проблема с READ UNCOMMITTED не в том, что может произойти откат - по крайней мере, это не главная проблема. Основная проблема заключается в том, что вы можете получить частичные данные. Например, используя блог, предположим, что у вас есть сводная таблица, содержащая, помимо прочего, количество существующих сообщений. У вас также была таблица со строкой для каждого сообщения. Очевидно, я здесь что-то придумываю - это не та структура, которую вам, вероятно, когда-либо следовало бы иметь.
В любом случае, в одном потоке вы запускаете транзакцию, обновляете количество сообщений в сводной таблице с 4 до 5, вставляете новую строку сообщения и фиксируете транзакцию. Прекрасно работает.
В другом потоке вы читаете количество сообщений и выводите блог на один экран. Этот запрос (очень быстрый) возник между операторами UPDATE и INSERT. Количество сообщений отображается как «5», и у вас, если вам повезет, 4 сообщения в блоге. Если вам не повезло с кодированием, и вы фактически использовали итоговое число, а не просто отображали его, у вас есть условие переполнения массива ...
В большинстве случаев READ COMMITTED - это то, что вы хотите обеспечить надлежащую согласованность.