powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Распределенные запросы. Как их оптимизировать?
25 сообщений из 26, страница 1 из 2
Распределенные запросы. Как их оптимизировать?
    #32046035
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
Возникла такая проблема.
К моей БД как linked database присоединена банковская БД объемом информации в одной таблице около 50-70 млн. записей.

Мне из этого множества надо выделить подмножество, которое определено в моей БД.
При выполнении запроса на объединение комп провисает напрочь, так как скорее всего БД пытается сначала вытащить всю инфу с linked database а потом уже объединять ее с моей относительно мелкой таблицей.

Если бы она прокешировала мою таблицу на удаленном серваке и уже там сделал все нужные объединения я предполагаю что все было бы намного быстрее.

Может есть какие то уловки или стандартные механизмы, о которых я пока просто не знаю? Подскажите плз где рыть то нужно?
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046049
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это один из недостатков распределенной БД. Оптимизатор не знает статистику удаленных таблиц. Покажи свой запрос и его план
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046070
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT 
 a.internal_key 
 , a.run_date
 , a.cb_acct_no 
 , a.cb_gl_code 
 , a.branch 
 , a.ccy 
 , a.client_no 
 , a.gl_code 
 , a.acct_exec 
 , a.department 
 ,w_ccy_out_bal
 ,w_lcy_out_bal 
 , b.ACCT_DESC

 FROM 
 GL_ACCT_HIST@XBASE.WORLD a,GL_ACCT_BRIEF@XBASE.WORLD b, ACC_SET_ITEM c
 WHERE a.RUN_DATE='20/08/2002' AND a.internal_key=b.internal_key AND c.BALACC=a.CB_GL_CODE

...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046096
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А план какой у запроса (explain plan) ?
Можно попробовать сделать view в удаленной базе на соединение таблиц a и b . Запросе уже работать с этим view и таблицей. Попробуй и покажи план запроса. Если не поможет, будем думать
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046097
ora600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте
SELECT /*+ DRIVING_SITE(a b)*/
...

если ACC_SET_ITEM небольшая
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046103
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос генериться по ситуации и запускается клиентом Дельфи.

Честно говоря до понятий "план запроса" я еще не дошел так как Оракул юзаю около недели. Можеть поясните если не трудно где рыть этот план?
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046104
ora600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или
/*+ DRIVING_SITE(a) DRIVING_SITE(b)*/

Сам я не пробовал, но в документации ( Tuning , Using optimizer hints) видел. Версия оракла какая ? Расскажите потом, помогло ли, плз.
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046108
ora600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неделю на оракле, и сразу работать с 50 млн записей ?
Круто :-)

С ораклом чем общаетесь ? Если PLSQLDeveloper, то выделите селект и нажмите F5 - это для плана запроса, а насчет хинта выглядеть должно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT  /*+ DRIVING_SITE(a) DRIVING_SITE(b)*/  
 a.internal_key 
 , a.run_date
 , a.cb_acct_no 
 , a.cb_gl_code 
 , a.branch 
 , a.ccy 
 , a.client_no 
 , a.gl_code 
 , a.acct_exec 
 , a.department 
 ,w_ccy_out_bal
 ,w_lcy_out_bal 
 , b.ACCT_DESC

 FROM 
 GL_ACCT_HIST@XBASE.WORLD a,GL_ACCT_BRIEF@XBASE.WORLD b, ACC_SET_ITEM c
 WHERE a.RUN_DATE='20/08/2002' AND a.internal_key=b.internal_key AND c.BALACC=a.CB_GL_CODE
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046111
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Команда explain plan в SQL*Plus или практически любой графический тул для работы с SQL - PLSQL Developer, SQL Navigator, TOAD, etc
Хинты хотел приберечь, но Ora-600 уже засветил карты :-))
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046117
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял что трабл более комплексный.
Более упрощенный запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT   /*+ DRIVING_SITE(a) */        
         a.internal_key
        , a.run_date
        , a.cb_acct_no
        , a.cb_gl_code
        , a.branch
        , a.ccy
        , a.client_no
        , a.gl_code
        , a.acct_exec

        , a.department
        ,a.w_ccy_out_bal
        ,a.w_lcy_out_bal 
        

 FROM 
   UVK.ACC_SET_ITEM b, GL_ACCT_HIST@XBASE.WORLD a
   WHERE a.RUN_DATE='20/08/2002' AND b.BALACC=a.CB_GL_CODE

выдает следующее:

ORA-02064: Распределенные опреации не поддерживаются
ORA-02063: Предшествующий Line из XBASE.world

вышеуказанный killed и ora60 примем дает те же ошибки


У меня стоит 9i

на удаленном серваке - по моему 7 с чем то под UNIX
У меня под W2k
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046120
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
Неделю на оракле, и сразу работать с  50  млн записей ? 
Круто :-) 


а на счет ухмылок ... если бы программеры во время делали бы то что нужно и понимали бы че от них хотят аналитические подразделения банка ..... я бы сам ни за что не взялся бы за такое юзание ...... Но ... к сожалению (или к счастью) приходится ... и дело очень занимательное ........ раньше на MS SQL все делал ..... в свободное от работы время ......
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046124
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи результат на обоих серверах

Код: plaintext
1.
2.
3.
select name, value
from v$parameter
where name like 'distrib%';


если не хватит прав, попроси админа
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046192
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ни у меня не на удаленном серваке не видит она эту таблицу/представление.

К себе я подключаюсь не как DBA а как простой смертный.
С удаленным серваком и так все ясно .... права только на селект к отдельным таблицам.

Вопрос:

1. А что за права мне должны дать. и соответсвенно я сам должен у себя выставить.
2. Где можно об этом (права "distributed") прочитать
3. Где можно взять вышеуказанные компоненты, проги, примочки которые указывают план и тп. В стандартной поставке ORACLE 9i они есть вообще?
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046200
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если как DBa захожу то у меня запрос выдает distributed_transactions 46
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046217
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Права на селект из v_$parameter нужно просто чтобы проверить возможность работы в распределенной базе.
2.Почитать можно в документации. Я уж и не помню точно в какой книжке. Видимо в "Distributed..."
3. SQL*Plus - стандартное средство в поставке

Этот параметр должен быть больше нуля на обоих серверах .
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046221
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С SQL Plus WorkSheet работаю ... крайне неудобная штука

И команда explain plan в чистом виде не запускается .....
Может я чего то недоввожу .......
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046223
ora600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте запустить свой дельфевый клиент ,
а в SQLPlus-е выполнить
Код: plaintext
1.
2.
select machine, osuser, program 
  from v$session 
  where upper(osuser) = '<Ваше имя в сети в верхнем рег-ре>'

и посмотреть, не пользуется ли эта программа другим эккаунтом ( с другими правами ), а не Вашим.

< а на счет ухмылок ...
Вы не так меня поняли . Я не ухмылялся а сочувствовал.
На таких объёмах цена ошибки даже в селектах очень высока
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046227
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работай через обычный (не-джавовый) SQL+
Посмотри документацию по использованию explain plan. В $ORACLE_HOME/rdbms/admin скрипт utlxplan.sql для создания таблички, которая будет хранить планы.
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046299
Beginnner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для ora6000 :

То что клиент дельфи использует именно тот эккаунт я уверен на 150% так как я сам этот клиент написал :-)
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046334
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот и план:

SQL Statement -- SQL001 [SQL History]:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
   
SELECT a.internal_key internal_key, a.run_date, a.cb_acct_no cb_acct_no, a.
       cb_gl_code cb_gl_code, a.branch branch, a.ccy ccy, a.client_no client_no, 
       a.gl_code gl_code, a.acct_exec acct_exec, a.department department, 
       w_ccy_out_bal, w_lcy_out_bal
    FROM uvk.acc_set_item c, gl_acct_hist@XBASE.WORLD
    WHERE c.balacc = a.cb_gl_code
      AND a.run_date = '20/08/2002'



Get Explain Plan By:

Rule

Execution Steps:

6 SELECT STATEMENT
5 MERGE JOIN
2 SORT (JOIN)
1 REMOTE
4 SORT (JOIN)
3 TABLE ACCESS (FULL), ACC_SET_ITEM (UVK)

Step Description
1 This operation retrieves rows from a remote database identified by the database link .
2 This operation returns its child row source sorted in preparation for a merge-join operation.
3 This operation retrieves all rows of table ACC_SET_ITEM using a full table scan.
4 This operation returns its child row source sorted in preparation for a merge-join operation.
5 This operation merges its first child (pre-sorted) row source with its second child (pre-sorted) row source.
6 This step in the plan designates this statement as a SELECT statement.
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046339
Lazy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После создания PLAN_TABLE (utlxplan.sql)
в sql+ worksheet делаешь:
set autotrace on explain
select count(*) from dual;
И будет тебе plan;
А еще можно написать
set autotarce on
тогда и статистика будет.
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046477
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте хинт /*+ DRIVING_SITE(с) */
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046478
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виноват хинт конечно же на удаленную таблицу
/*+ DRIVING_SITE(a) */
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046481
Beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORA-02064: Distributed operation not supported

Интересно а как натроить оракул чтобы distributed operation are suppored было ........

Надо и у меня и на удаленном серваке выставить параметр distributed transaction >0 ?
или надо дополнительные изменения в настроке делать?

на удаленном серваке стоит 7.2.3.0.
...
Рейтинг: 0 / 0
Распределенные запросы. Как их оптимизировать?
    #32046485
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, нужно выставить. Еще я не очень уверен, но Standart Edition может не поддерживать distributed. Плюс 7.2.3 - очень древняя версия в наши дни.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Распределенные запросы. Как их оптимизировать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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