|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Привет! Возникла такая проблема. К моей БД как linked database присоединена банковская БД объемом информации в одной таблице около 50-70 млн. записей. Мне из этого множества надо выделить подмножество, которое определено в моей БД. При выполнении запроса на объединение комп провисает напрочь, так как скорее всего БД пытается сначала вытащить всю инфу с linked database а потом уже объединять ее с моей относительно мелкой таблицей. Если бы она прокешировала мою таблицу на удаленном серваке и уже там сделал все нужные объединения я предполагаю что все было бы намного быстрее. Может есть какие то уловки или стандартные механизмы, о которых я пока просто не знаю? Подскажите плз где рыть то нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 10:12 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Это один из недостатков распределенной БД. Оптимизатор не знает статистику удаленных таблиц. Покажи свой запрос и его план ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 10:43 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 11:04 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
А план какой у запроса (explain plan) ? Можно попробовать сделать view в удаленной базе на соединение таблиц a и b . Запросе уже работать с этим view и таблицей. Попробуй и покажи план запроса. Если не поможет, будем думать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 11:39 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
попробуйте SELECT /*+ DRIVING_SITE(a b)*/ ... если ACC_SET_ITEM небольшая ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 11:39 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Запрос генериться по ситуации и запускается клиентом Дельфи. Честно говоря до понятий "план запроса" я еще не дошел так как Оракул юзаю около недели. Можеть поясните если не трудно где рыть этот план? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 11:46 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
или /*+ DRIVING_SITE(a) DRIVING_SITE(b)*/ Сам я не пробовал, но в документации ( Tuning , Using optimizer hints) видел. Версия оракла какая ? Расскажите потом, помогло ли, плз. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 11:47 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Неделю на оракле, и сразу работать с 50 млн записей ? Круто :-) С ораклом чем общаетесь ? Если PLSQLDeveloper, то выделите селект и нажмите F5 - это для плана запроса, а насчет хинта выглядеть должно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 11:53 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Команда explain plan в SQL*Plus или практически любой графический тул для работы с SQL - PLSQL Developer, SQL Navigator, TOAD, etc Хинты хотел приберечь, но Ora-600 уже засветил карты :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 11:57 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Я так понял что трабл более комплексный. Более упрощенный запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
выдает следующее: ORA-02064: Распределенные опреации не поддерживаются ORA-02063: Предшествующий Line из XBASE.world вышеуказанный killed и ora60 примем дает те же ошибки У меня стоит 9i на удаленном серваке - по моему 7 с чем то под UNIX У меня под W2k ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 12:07 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
а на счет ухмылок ... если бы программеры во время делали бы то что нужно и понимали бы че от них хотят аналитические подразделения банка ..... я бы сам ни за что не взялся бы за такое юзание ...... Но ... к сожалению (или к счастью) приходится ... и дело очень занимательное ........ раньше на MS SQL все делал ..... в свободное от работы время ...... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 12:15 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
покажи результат на обоих серверах Код: plaintext 1. 2. 3.
если не хватит прав, попроси админа ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 12:23 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
ни у меня не на удаленном серваке не видит она эту таблицу/представление. К себе я подключаюсь не как DBA а как простой смертный. С удаленным серваком и так все ясно .... права только на селект к отдельным таблицам. Вопрос: 1. А что за права мне должны дать. и соответсвенно я сам должен у себя выставить. 2. Где можно об этом (права "distributed") прочитать 3. Где можно взять вышеуказанные компоненты, проги, примочки которые указывают план и тп. В стандартной поставке ORACLE 9i они есть вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 14:21 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Если как DBa захожу то у меня запрос выдает distributed_transactions 46 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 14:33 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
1. Права на селект из v_$parameter нужно просто чтобы проверить возможность работы в распределенной базе. 2.Почитать можно в документации. Я уж и не помню точно в какой книжке. Видимо в "Distributed..." 3. SQL*Plus - стандартное средство в поставке Этот параметр должен быть больше нуля на обоих серверах . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 15:12 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
С SQL Plus WorkSheet работаю ... крайне неудобная штука И команда explain plan в чистом виде не запускается ..... Может я чего то недоввожу ....... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 15:16 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Попробуйте запустить свой дельфевый клиент , а в SQLPlus-е выполнить Код: plaintext 1. 2.
и посмотреть, не пользуется ли эта программа другим эккаунтом ( с другими правами ), а не Вашим. < а на счет ухмылок ... Вы не так меня поняли . Я не ухмылялся а сочувствовал. На таких объёмах цена ошибки даже в селектах очень высока ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 15:18 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Работай через обычный (не-джавовый) SQL+ Посмотри документацию по использованию explain plan. В $ORACLE_HOME/rdbms/admin скрипт utlxplan.sql для создания таблички, которая будет хранить планы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 15:20 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Для ora6000 : То что клиент дельфи использует именно тот эккаунт я уверен на 150% так как я сам этот клиент написал :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 17:38 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
А вот и план: SQL Statement -- SQL001 [SQL History]: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 18:59 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
После создания PLAN_TABLE (utlxplan.sql) в sql+ worksheet делаешь: set autotrace on explain select count(*) from dual; И будет тебе plan; А еще можно написать set autotarce on тогда и статистика будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 19:10 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Добавьте хинт /*+ DRIVING_SITE(с) */ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2002, 12:14 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
Виноват хинт конечно же на удаленную таблицу /*+ DRIVING_SITE(a) */ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2002, 12:16 |
|
Распределенные запросы. Как их оптимизировать?
|
|||
---|---|---|---|
#18+
ORA-02064: Distributed operation not supported Интересно а как натроить оракул чтобы distributed operation are suppored было ........ Надо и у меня и на удаленном серваке выставить параметр distributed transaction >0 ? или надо дополнительные изменения в настроке делать? на удаленном серваке стоит 7.2.3.0. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2002, 12:36 |
|
|
start [/forum/topic.php?fid=52&msg=32046200&tid=1993163]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 316ms |
total: | 481ms |
0 / 0 |