Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Взаимодействие баз , связанных по линку  [new]
qqй
Member

Откуда:
Сообщений: 201
Доброго времени суток ,

Есть линк с 10.2.0.1 на базу 9.2
Запрос с 10 по линку на 9.2 с несложным соединением по внешнему ключу

Наиболее непонятен моменты
1) взаиодействие SGA экземпляров ,
(1.1 как происходит парсинг кода ?
передаётся ли разобранный код в подлинкованную базу или проходит там повторный разбор
1.1 где хранятся прочитанные блоки из файлов данных ?
1.3 как используются при повторном обращении ? )
2) может ли разность версий внести отрицательные последствия
3) использование индексов , живущих на разных базах (возможности тюннинга)

сенкс фо эдванс )
14 сен 07, 17:22    [4671124]     Ответить | Цитировать Сообщить модератору
 Re: Взаимодействие баз , связанных по линку  [new]
kapelan
Member

Откуда: хутор БольшойБугор
Сообщений: 722
ну типа клиент сервер отношения. где проблемма то?
клиент посылает запрос - сервер делает работу и возврашает ответ.
14 сен 07, 19:12    [4671806]     Ответить | Цитировать Сообщить модератору
 Re: Взаимодействие баз , связанных по линку  [new]
OlleUp
Member

Откуда: Хабаровск
Сообщений: 134
1. Опитимизатор сервера работает таким образом:
а) если запрос полностью получает данные из линка, запрос полностью отправляется клиенту.
клиент производит разбор, составление плана и выполнение запроса и возвращает данные.
При этом я вообще не нашел упоминания о запросе в sql_plan сервера.
б) если запрос частично получает данные из линка, то оптимизатор сервера вырезает подзапрос, обращающийся к линку и отсылает его клиенту.
При этом никаго разбора отсылаемого запроса на сервер не происходит.
Этот шаг называется REMOTE. См. ниже - документация.
Таким образом, нет никакого "повторного" разбора.

2. Прочитанные блоки храняться в буферном кэше клиента.
Прочитанные с линка блоки (fetch) оседают в памяти курсора, в PGA на сервере.
Оперирует ими тот серверный процесс, который обрабатывает запрос - либо высылает
клиенту, либо они участвуют в до-выполнении локального запроса, либо и то и то.

3. При повторном обращении происходит отсылка ТЕКСТА sql запроса на клиент, и обработка клиентом
sql запроса. Т.е. в оптимальном случае беруться клиентом из своего кэша.
Сервер заново получает данные от клиента.

4. Вряд ли. Ну если только клиентская версия не сможет разобрать присланный запрос.


5. Затрудняюсь ответить. Вообще, запрос выполняется клиентом, таким образом, работает
клиентский оптимизатор и т.п. Но в документации написано
http://download.oracle.com/docs/cd/B10501_01/server.920/a96533/opt_ops.htm#1004878
"How the CBO Executes Distributed Statements"
, что оптимизатор сервера может рассматривать индексы на клиенте, так же как локальные
индексы. Также рассматривается статистика. Оптимизатор сервера учитывает удаленность
объектов и выдает им более высокую оценку. В общем, по документации ...
Подтверждения этому я не нашел - может плохо искал.
То что для в плане выполнения шаг REMOTE (использовался индекс на клиенте) имел более
высокую оценку чем FTS на сервере - это видел.
То что оптимизатор сервера как-то получал описание индексов с клиента - этого не видел.
15 сен 07, 11:13    [4673079]     Ответить | Цитировать Сообщить модератору
 Re: Взаимодействие баз , связанных по линку  [new]
qqй
Member

Откуда:
Сообщений: 201
2 OlleUp , kapelan - спасибо
17 сен 07, 08:24    [4675243]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить