Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / LEF / Распределение и тиражирование данных.doc
Скачиваний:
55
Добавлен:
16.04.2013
Размер:
165.89 Кб
Скачать

Сложные моментальные снимки

Когда в определяющем запросе моментального снимка содержится сложный запрос, включающий функцию отличия или агрегирования, группировку, соединение, сложные подзапросы или операцию SET, такой моментальный снимок называется сложным моментальным снимком(complex snapshot).Например, с помощью следующего оператораCREATESNAPSHOTсоздается сложный моментальный сни­мок, так как в нем соединяется информация двух удаленных основных таблиц:

CREATE SNAPSHOT sales.order_items AS

SELECT i.id lineid, p.description, i.quantity,

p.unitprice, i.total

FROM sales.items@central.compworld i,

sales.parts@central.compworld p

WHERE i.part_id = p.id;

Применять сложные моментальные снимки не рекомендуется, так как Oracleне способен их быстро регенерировать. В результатеOracleвынужден выполнять полную регенерацию моментальных снимков, а это может привести к переизбытку данных в сети и снижению общей производительности системы.

Хранение информации моментальных снимков

В действительности моментальный снимок таблицы — это несколько объектов схемы, представляющих единое целое. Когда создается новый моментальный снимок “только для чтения”, Oracleсоздает базовую таблицу для хранения содержащейся в нем информации, индекс для первичного ключа базовой таблицы и представление “только для чтения” базовой таблицы, — представление получает то же имя, что и моментальный снимок, и обеспечивает к нему доступ.

Регенерация моментальных снимков

Когда создается новый моментальный снимок, Oracleобрабатывает его определяющий запрос и заполняет моментальный снимок данными основной таблицы. Впоследствии данные моментального снимка не всегда отражают текущее состояние его основной таблицы — транзакции могут в любой момент обновить информацию этой таблицы. Для того чтобы поддерживать относительное соответствие данных моментального снимка и данных его основной таблицы, можно задать конфигурацию моментального снимка так, чтобы его данные периодически регенерировались (освежались). Во время регенерации моментального снимка(snapshot refresh)Oracleприводит в соответствие моментальный снимок и его основную таблицу.

Виды регенерации моментальных снимков

В Oracleсуществуют два способа регенерации моментальных снимков: полная и быстрая. Когда моментальный снимок конфигурируется для полной регенерации(complete refresh),сервер, обслуживающий этот моментальный снимок, просто выполняет его определяющий запрос. Полная регенерация может выполняться для моментального снимка любого типа. Для полной регенерации результирующее множество определяющего запроса замещает текущие данные в базовой таблице моментального снимка. При большом объеме основной таблицы полная регенерация может привести к переизбытку информации в сети и будет выполняться очень долго.

Быстрая регенерация моментального снимка обычно более эффективна, чем полная. Чтобы выполнить быструю регенерацию (fast refresh),сервер моментального снимка определяет, какие изменения произошли в основной таблице со времени последней регенерации моментального снимка, а затем записывает в моментальный снимок только эти изменения. При быстрой регенерации запрашивается подмножество данных основной таблицы. Однако такой тип регенерации разрешается только тогда, когда основная таблица имеет журнал моментальных снимков. Более подробно о таких журналах рассказывается в следующем разделе.

В Oracleрегенерация моментальных снимков происходит в рамках групп регенерации. По умолчаниюOracleвыполняет быструю регенерацию каждого моментального снимка группы. Если сервер мо­ментального снимка не может выполнить быструю регенерацию, то осуществляется полная регенерация моментального снимка.

Соседние файлы в папке LEF