Oracle SQL интервью Вопрос о материализованном представлении? - PullRequest
0 голосов
/ 16 декабря 2018

Я сталкивался с этим вопросом в материализованном представлении.

  1. Что произойдет, если пользователь запускает отчет, построенный поверх материализованного представления, в то время, когда происходит обновление материализованного представления (метод обновления завершен по требованию)

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

Если моя транзакционная таблица обновляется в настоящее время и если я выпустил оператор выбора, который выполняется в течение примерно 20 минут, тогда мой оператор выбора получит старые данные или будет получать вновь обновленные данные?

мои ответы на этот вопрос: Oracle делает снимок данных.Когда я нажимаю на оператор SELECT, он извлекает данные из этого снимка.Так что он восстановит мои старые данные.

Не могли бы вы поделиться своими знаниями по этому вопросу.

1 Ответ

0 голосов
/ 16 декабря 2018
  1. Данные будут видны или нет в зависимости от того, как было выполнено обновление.если atomic_refresh = true, тогда обновление будет в основном DELETE + INSERT (т. е. без TRUNCATE), и, таким образом, с помощью функции согласованности чтения Oracles вы получите данные на момент запуска запроса select.Если atomic_refresh = false, то он следует логике TRUNCATE + INSERT / + APPEND /, поэтому до тех пор, пока обновление не будет завершено, вы не сможете прочитать таблицу, поэтому она выдаст ошибку.

Взгляните на следующую ссылку

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1857127200346321681

Вы правы, Oracle получает данные на момент запуска выбора.Таким образом, даже если новые строки были добавлены и зафиксированы, вы получите записи такими, какими они были на момент начала запроса.Это верно и для обычных таблиц.если вы выполняете запрос на выборку (*), выполнение которого занимает около 10 минут, а таблица содержит 1000 строк, и в менатиме, если кто-то должен был добавить 100 строк и зафиксировать в таблице в течение этих 10 минут, запрос вернет вывод1000 строк. (Это в случае с Oracle)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...