powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Где происходит HASH JOIN таблиц по линкам?
3 сообщений из 3, страница 1 из 1
Где происходит HASH JOIN таблиц по линкам?
    #32168753
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 2 сайта, на одном из них пара таблиц:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table test (test_id number( 9 ))
/
insert into test (test_id)
  select rownum from all_objects where rownum <=  100 ;
/
create table test2 as
  select * from test where mod(test_id,  2 ) =  0 
/

На обоих серверах выполняю один и тот же запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
select  /*+ use_hash (t, t2) */ 
       t.*
from cards.test@oramast t
   , cards.test2@oramast t2
where t.test_id = t2.test_id
/


ORAMAST- это имя мастер-сайта. План на обоих сайтах одинаков, статистика отличается только "consistent gets". У меня вопрос: гре происходит слияние таблиц и, соответственно, какие данные передаются с одного сайта на другой: все записи обоих таблиц или только результат их соединения?
...
Рейтинг: 0 / 0
Где происходит HASH JOIN таблиц по линкам?
    #32168945
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Optimizer decides what part of execution plan to be done locally and what part to be done remotely. Check explain plan. It will have "remote" lines. You can also use DRIVING_SITE hint.

SY.
...
Рейтинг: 0 / 0
Где происходит HASH JOIN таблиц по линкам?
    #32169227
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно, я не упомянул: план на локальном сервере отличается первой строкой: SELECT STATEMENT (REMOTE). В Performance Tuning Guide and Reference, раздел "How the CBO Executes Distributed Statements" есть упоминание:

If a SQL statement accesses tables that are located on different databases, then Oracle decomposes the statement into individual fragments, each of which accesses tables on single database. Oracle then sends each fragment to the database that it accesses. The remote Oracle instance for each of these databases executes its fragment and returns the results to the local database, where the local Oracle instance can perform any additional processing that the statement requires.

Вот и охота убедиться, что две таблицы по одному и тому же линку Оракл расценил как один "фрагмент" и выполнил его на мастер-сайте, отдав локальному только результат. Первое, что пришло в голову - посмотреть, сколько байт было передано с мастер-сайта на локальный.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Где происходит HASH JOIN таблиц по линкам?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]