Допускает ли Oracle параметр незафиксированного чтения?
В db2 запрос с предложением 'with ur' позволяет 9X_oracle считать запрос незафиксированным чтением, как 9X_oracle и предложение 'with nolock' в mysql. В оракуле 9X_oracle тоже есть такая опция ... Если не зачем 9X_oracle ??
Ответ #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 - нет блокирование - без каких-либо неправильных результаты.
- Здесь я бы поспорил, что это может понадобиться. Прямо сейчас я запускаю и отлаживаю сложный блок 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) .
- ага, но зачем заставлять людей читать ваши сообщения с ви ...
Ответ #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 другие ответы.)
-
10
-
25
-
22
-
4
-
8
-
4
-
8
-
7
-
5
-
17
-
2
-
7
-
9
-
8
-
3
-
3
-
11
-
8
-
6
-
13
-
14
-
7
-
10
-
5
-
7
-
6
-
3
-
5
-
2
-
5
-
5
-
8
-
8
-
5
-
7
-
6
-
7
-
22
-
14
-
2
-
6
-
7
-
6
-
5
-
7
-
16
-
7
-
5
-
11
-
10