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

Откуда: оттуда
Сообщений: 117
Здравствуйте.
Мне требуется помощь с уменьшением времени выполнения запроса.
В Базе Данных имеется 2 таблицы - tracking и area;
tracking содержит GPS данные. (idresource (number), x (number), y(number), crdate (date) )
area содержит полигоны (areaname(varchar2), polygonpoints(spatial) )

Каждые 5 минут требуется выяснять в каком полигоне находится ресурс.
Для этого я выполняю следующий sql запрос:

SELECT T.IDRESOURCE, A.AREANAME
FROM TRACKING T, AREA A
WHERE SDO_RELATE(A.POLYGONPOINTS,
                                MDSYS.SDO_GEOMETRY(2001,NULL,
                                                                    MDSYS.SDO_POINT_TYPE(T.X,T.Y,NULL),
                                                                                                              NULL, NULL), 'mask=ANYINTERACT'
) = 'TRUE'
В среднем из tracking выбирается 1200 записей, а из AREA 60 полигонов стандартно.
После некоторого наблюдения я выяснил, что запрос использует только 1 cpu / 2 cores.
Время выполнения запроса ~3 минуты.
Как сделать чтобы запрос работал со всеми процессорами на сервере.

Заранее спасибо.
19 мар 11, 13:37    [10396082]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54393
а сколько всего строк в таблицах?
19 мар 11, 15:11    [10396344]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
WWWeb
Member

Откуда: оттуда
Сообщений: 117
Tracking ~25 млн строк
Area 60 строк
19 мар 11, 15:23    [10396368]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
WWWeb
Member

Откуда: оттуда
Сообщений: 117
В запросе ещё есть условие ограничиваешее кол-во выбранных строк из Tracking. Всреднем, как я выше писал, из трекинга выбирается 1200 записей.
Всего в tracking ~25 млн строк.
Area 60 строк
19 мар 11, 15:27    [10396376]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
ArtPaul
Member

Откуда:
Сообщений: 40
Статистику по таблицам давно собирал?
19 мар 11, 16:48    [10396526]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4917
Блог
WWWeb
Здравствуйте.
Мне требуется помощь с уменьшением времени выполнения запроса.
В Базе Данных имеется 2 таблицы - tracking и area;
tracking содержит GPS данные. (idresource (number), x (number), y(number), crdate (date) )
area содержит полигоны (areaname(varchar2), polygonpoints(spatial) )

Каждые 5 минут требуется выяснять в каком полигоне находится ресурс.
Для этого я выполняю следующий sql запрос:

SELECT T.IDRESOURCE, A.AREANAME
FROM TRACKING T, AREA A
WHERE SDO_RELATE(A.POLYGONPOINTS,
                                MDSYS.SDO_GEOMETRY(2001,NULL,
                                                                    MDSYS.SDO_POINT_TYPE(T.X,T.Y,NULL),
                                                                                                              NULL, NULL), 'mask=ANYINTERACT'
) = 'TRUE'
В среднем из tracking выбирается 1200 записей, а из AREA 60 полигонов стандартно.
После некоторого наблюдения я выяснил, что запрос использует только 1 cpu / 2 cores.
Время выполнения запроса ~3 минуты.
Как сделать чтобы запрос работал со всеми процессорами на сервере.

Заранее спасибо.

Есть 3 рекомендации
1) Глянуть в сторону SDO_JOIN - ну очень полезная вещь.
2) Стоит заглянуть вот сюда. Почитать про primary и secondary filter.
3) Сделайте
ALTER TABLE TRACKING PARALLEL 16; 
ALTER TABLE AREA PARALLEL 16;
19 мар 11, 19:25    [10396938]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4917
Блог
Alexander Ryndin,

PARALLEL 16 - это временно. Потом лучше вернуть будет в PARALLEL DEFAULT и полагаться на оптимизатор.
19 мар 11, 19:26    [10396943]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
WWWeb
Member

Откуда: оттуда
Сообщений: 117
ArtPaul
Статистику по таблицам давно собирал?

Собирается каждые 3 часа
19 мар 11, 20:00    [10397010]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
WWWeb
Member

Откуда: оттуда
Сообщений: 117
Alexander Ryndin
Alexander Ryndin,

PARALLEL 16 - это временно. Потом лучше вернуть будет в PARALLEL DEFAULT и полагаться на оптимизатор.


Я пробовал PARALLEL(TRACKING, 32). Никакого эффекта, хотя я плохо разбираюсь в параллелизме.
Но как я понял из документации, то паралельно он производит чтение в буфер, а не выполняет функцию SDO_RELATE.
Поправьте меня если я не прав.
19 мар 11, 20:03    [10397025]     Ответить | Цитировать Сообщить модератору
 Re: Тюнинг запроса.  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4917
Блог
WWWeb
Alexander Ryndin
Alexander Ryndin,

PARALLEL 16 - это временно. Потом лучше вернуть будет в PARALLEL DEFAULT и полагаться на оптимизатор.


Я пробовал PARALLEL(TRACKING, 32). Никакого эффекта, хотя я плохо разбираюсь в параллелизме.
Но как я понял из документации, то паралельно он производит чтение в буфер, а не выполняет функцию SDO_RELATE.
Поправьте меня если я не прав.
план запроса покажите
19 мар 11, 21:03    [10397160]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить