Запрашивается ли оракул кэша при использовании ссылки на базу данных

dba.stackexchange https://dba.stackexchange.com/questions/9358

  •  16-10-2019
  •  | 
  •  

Вопрос

Некоторые поставщики сказали нам, что мы не должны использовать связь с базой данных между нашей базой данных и их, поскольку запросы, выполненные по ссылке базы данных, не будут кэшированы и не оптимизированы.

Я не могу найти никакой информации, подтверждающей/предъявляет это.

Наивно я бы не понял, почему Oracle не сможет выполнять кэширование запросов при использовании ссылки DB.

Это было полезно?

Решение

Есть некоторые ограничения С ссылками на базы данных. Вы не можете выполнить DDL удаленно, например.

Запросы пробегают от удаленных таблиц не обрабатывается точно так же как обычные таблицы:

Локальный сервер базы данных Oracle разбивает распределенный запрос на соответствующее количество удаленных запросов, которые затем отправляет на удаленные узлы для выполнения. Удаленные узлы выполняют запросы и отправляют результаты обратно в локальный узел. Затем локальный узел выполняет любую необходимую пост-обработку и возвращает результаты пользователю или приложению.

В большинстве случаев процесс разрыва является адекватным, и вы просто получите ожидаемые накладные расходы на ссылку базы данных (задержка сети между базами данных, два анализа запросов/обработка вместо одного и т. Д.). Удаленные подразделы будут рассматриваться как обычные запросы с помощью удаленной базы данных, а данные попадут в удаленный кэш, как при обычных запросах.

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

А документация Подробная информация о нескольких способах настроить распределенные запросы.

Другие советы

Распределенный запрос не может быть оптимизирован так же, как локальные таблицы, однако, распределенные запросы оптимизированы и, следовательно, кэши, следовательно, поэтому Продавец неверен.

Вы можете увидеть это, запустив что -то вроде следующего. Вы увидите повышение подсчета выполнения с каждым пробежком.

SELECT /* 23409268-09389 */ * FROM schema_name.table_name@db_link WHERE rownum<=1;
SELECT Executions, sql_text FROM v$sql WHERE sql_text LIKE 'select /* 23409268-09389%';

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top