Допускает ли Oracle параметр незафиксированного чтения?

В db2 запрос с предложением 'with ur' позволяет 9X_oracle считать запрос незафиксированным чтением, как 9X_oracle и предложение 'with nolock' в mysql. В оракуле 9X_oracle тоже есть такая опция ... Если не зачем 9X_oracle ??

16
0
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Допускает ли Oracle параметр незафиксированного чтения?

Том дает отличный ответ на этот вопрос: On Transaction Isolation Levels

Он 9X_oracle говорит:

ПРОЧИТАННОЕ НЕОБХОДИМО уровень 9X_oracle изоляции допускает грязное чтение. Oracle 9X_oracle Database не использует грязные читает, и 9X_oracle даже не позволяет им. Основная цель ПРОЧИТАННОГО 9X_oracle НЕПРЕРЫВНОГО уровень изоляции должен обеспечить основанное 9X_oracle на стандартах определение, которое позволяет для 9X_oracle неблокирующего чтения.

...

Теперь база данных, допускающая 9X_oracle грязную читать ... он не только возвращает неправильный 9X_oracle ответ, но он также возвращает ... [ответ] ... которого 9X_oracle никогда не было в таблице. В многопользовательской 9X_oracle базе данных грязное чтение может быть 9X_oracle опасной функцией. Лично я никогда не видел полезность 9X_oracle этого ...

Дело в том, что грязное чтение не 9X_oracle особенность; скорее, это обязанность. В 9X_oracle Oracle Database это просто не нужен. Вы 9X_oracle получаете все преимущества грязного чтения 9X_oracle - нет блокирование - без каких-либо неправильных результаты.

21
2

  • Здесь я бы поспорил, что это может понадобиться. Прямо сейчас я запускаю и отлаживаю сложный блок P ...

Ответ #2

Ответ на вопрос: Допускает ли Oracle параметр незафиксированного чтения?

Ответ Тома Кайта - правильный оракул WRT, не 9X_oracle существует такой вещи, как грязное чтение 9X_oracle из-за его архитектуры Multi-Version Concurrency 9X_oracle Control (MVCC).

С точки зрения функциональности 9X_oracle приложения я полностью согласен с Томом; нет 9X_oracle веской причины или грязных чтений.

Зачем вообще использовать его вне Oracle? Там, где 9X_oracle нет MVCC (например, MySQL, Ingres), это 9X_oracle уловка, позволяющая обойти проблемы с блокировкой, которые 9X_oracle могут снизить производительность или заставить 9X_oracle систему блокировки "работать вне замков 9X_oracle ", если не настроен должным образом. Точно 9X_oracle так же, как вам нужно настроить откат / отменить 9X_oracle в Oracle, вам необходимо управлять системой 9X_oracle блокировки в базах данных, отличных от MVCC.

Так почему это может быть полезно с Oracle - для 9X_oracle повышения производительности функций только 9X_oracle для чтения, где "неправильные данные" маловероятны 9X_oracle и очень несущественны. В MySQL / DB2 / Ingres 9X_oracle / Informix (не уверен в SQL Server / Sybase) его 9X_oracle можно использовать для обхода средства управления 9X_oracle блокировками для повышения производительности.

Вот 9X_oracle пример ситуации, когда чтение не требует согласованности:

  • Список всех продуктов

Вот 9X_oracle пример ситуации, когда чтение требуется согласованность:

  • Список товаров на складе

Oracle 9X_oracle просто не понимает грязных чтений и не может 9X_oracle быть "добавлен как функция" без потери производительности 9X_oracle (т.е. потребуется слишком много уловок для 9X_oracle получения грязных данных в истинной архитектуре 9X_oracle Oracle MVCC) .

5
2

  • ага, но зачем заставлять людей читать ваши сообщения с ви ...

Ответ #3

Ответ на вопрос: Допускает ли Oracle параметр незафиксированного чтения?

Обоснование с UR: когда дело доходит до запроса SELECT ONLY 9X_oracle (отчет), нет смысла ждать фиксации. Если 9X_oracle вы сообщаете о таблице, которая обновляется, не 9X_oracle имеет значения, получите ли вы это обновление 9X_oracle или нет. Грязное чтение так же верно, как 9X_oracle и данные после фиксации. Подумайте, не попал 9X_oracle ли запрос в эту заблокированную запись за 9X_oracle секунду до этого.

Если вы запустите запрос 9X_oracle к изменяющейся таблице, вы не получите какой-либо 9X_oracle установленный момент времени. Данные, к 9X_oracle которым был получен доступ в начале запроса, относятся 9X_oracle к более раннему моменту времени, чем данные, к 9X_oracle которым был получен доступ в конце запроса. В 9X_oracle таблице может быть множество обновлений, которые 9X_oracle могут или не могут быть включены в результаты 9X_oracle запроса.

Использование WITH UR и других эквивалентов 9X_oracle СУБД обеспечивает повышение производительности, поскольку 9X_oracle запросы не ждут фиксации и не приводит к 9X_oracle потере целостности данных.

(ps. Просто настройте 9X_oracle мою учетную запись, чтобы я не мог комментировать 9X_oracle другие ответы.)

3
0