powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разное время выполнения одного и того же запроса
18 сообщений из 18, страница 1 из 1
Разное время выполнения одного и того же запроса
    #39313719
Oracle text
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с CLOB полем. На этом поле висит индекс
Код: plsql
1.
INDEXTYPE IS "CTXSYS"."CONTEXT"  PARAMETERS ('SYNC (ON COMMIT)')  PARALLEL 4


для выборки используется запрос с параметром
Код: plsql
1.
2.
3.
4.
SELECT DISTINCT di.*
FROM indexed_content di
WHERE contains(di.title, '%' || :text || '%') > 0
ORDER BY title DESC


В таблице около 100 000 документов. Запрос отрабатывает меньше чем за секунду. Но иногда он вдруг зависает на 12 - 20 секунд. Просто ввожу в качестве параметра '123' - 0.03 с, следом ввожу 'hello' - 0.024 с, далее 'mark' - 18.6 с ! Следом тот же запрос может опять выполниться за 0.2 с. План запроса отличный, поиск идет по индексу. К сожалению трассировку сделать не могу, т.к. проблема на проде, и снять оттуда трейс дело долгое и бюрократичное. Какие могут быть идеи? Может из-за размера индекса он весь не попадает в кэш и зависает при чтении блоков с диска? Что можно попробовать сделать?
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39313738
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle textтрассировку сделать не могу, т.к. проблема на проде, и снять оттуда трейс дело долгое и бюрократичноеСтатистику по ожиданиям можно получить без включения трассировки.
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39313749
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle textК сожалению трассировку сделать не могу, т.к. проблема на проде, и снять оттуда трейс дело долгое и бюрократичное.Подобное расследуется с помощью ash и/или dbms_sqltune.report_sql_monitor.
От версии, конечно, зависит.
Мантра, что надо делать трассировку 10046 актуальна до 9-ки включительно и частично для 10-ки.
На более современных версиях для реальных проблем разработчика она нужна чуть реже чем никогда.
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39313978
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle textПлан запроса отличный, поиск идет по индексу.

А почему ты думаешь что поиск по индексу это всегда хорошо? FTS иногда бывает лучше.
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39314818
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно попытаться использовать рекомендации по оптимизации таких индексов - http://www.oracle.com/technetwork/testcontent/index-maintenance-089308.html
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39315029
Oracle text
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду пробовать. Действительно, как и предполагал, время уходит на дисковый ввод/вывод при чтении индекса.
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39315908
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторPARAMETERS ('SYNC (ON COMMIT)')
Подскажите, пожалуйста, остальные параметры берутся по умолчанию?
Как посмотреть эти параметры?
Спасибо.
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39315974
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
140907,

посмотри пакет ctx_report
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39316109
140907
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daunito,

Спасибо.
select ctx_report.CREATE_INDEX_SCRIPT('схема.имя_индекса') from dual;

http://www.sql.ru/forum/482697/indextype-is-ctxsys-ctxcat -- топик по теме.
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318255
Oracle text
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то ли не до конца разобрался как пользоваться dbms_monitor, то ли он не шибко много данных выдает. В итоге снял трейс. Единственный запрос, на который ушло практически все время
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT/*+DYNAMIC_SAMPLING(0) INDEX(T "DR$TITLE_TEXTIDX$X")*/ DISTINCT 
  TOKEN_TEXT  FROM "QA"."DR$TITLE_TEXTIDX$I" T WHERE TOKEN_TEXT LIKE 
  :lkexpr ESCAPE '\' AND (TOKEN_TYPE = 0 OR TOKEN_TYPE = 4 OR (TOKEN_TYPE 
  BETWEEN 16 AND 74)  OR (mod(TOKEN_TYPE, 10000) between 1001 and 1333))

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.19      42.32       3237       3237          0          25
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.19      42.32       3237       3237          0          25

Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 70     (recursive depth: 1)
Number of plan statistics captured: 1

Rows (1st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
        25         25         25  SORT UNIQUE NOSORT (cr=3237 pr=3237 pw=0 time=6447294 us cost=4 size=15181 card=323)
        25         25         25   INDEX RANGE SCAN DR$TITLE_TEXTIDX$X (cr=3237 pr=3237 pw=0 time=40171389 us cost=3 size=15181 card=323)(object id 20105)


На самом деле запрос выполнялся чуть больше 20 секунд. Откуда 42.32 не понятно. Все остальные 32 рекурсивных запроса в сумме дали около секунды. Получается, что для чтения с диска 3237 блоков потребовалось 42 секунды? Это около 600 кб/с. Проблема с диском?
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318260
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Oracle text,
Сырую трассу приложи
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318261
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А вообще нифига в contains % добавляете, уберите их оттуда
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318515
Oracle text
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

откуда про % узнал? Из-за лайка?
вот сырой трейс
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
=====================
PARSING IN CURSOR #47226043359600 len=294 dep=1 uid=70 oct=3 lid=70 tim=1474897270953604 hv=3993624360 ad='e489ad78' sqlid='2c5qbkvr0mrt8'
SELECT/*+DYNAMIC_SAMPLING(0) INDEX(T "DR$TITLE_TEXTIDX$X")*/ DISTINCT TOKEN_TEXT  FROM "QA"."DR$TITLE_TEXTIDX$I" T WHERE TOKEN_TEXT LIKE :lkexpr ESCAPE '\' AND (TOKEN_TYPE = 0 OR TOKEN_TYPE = 4 OR (TOKEN_TYPE BETWEEN 16 AND 74)  OR (mod(TOKEN_TYPE, 10000) between 1001 and 1333))
END OF STMT
PARSE #47226043359600:c=0,e=235,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,plh=0,tim=1474897270953603
EXEC #47226043359600:c=1000,e=874,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,plh=1600871725,tim=1474897270954521

*** 2016-09-26 08:41:53.279
FETCH #47226043359600:c=196970,e=42324683,p=3237,cr=3237,cu=0,mis=0,r=25,dep=1,og=1,plh=1600871725,tim=1474897313279251
STAT #47226043359600 id=1 cnt=25 pid=0 pos=1 obj=0 op='SORT UNIQUE NOSORT (cr=3237 pr=3237 pw=0 time=6447294 us cost=4 size=15181 card=323)'
STAT #47226043359600 id=2 cnt=25 pid=1 pos=1 obj=20105 op='INDEX RANGE SCAN DR$TITLE_TEXTIDX$X (cr=3237 pr=3237 pw=0 time=40171389 us cost=3 size=15181 card=323)'
CLOSE #47226043359600:c=0,e=6,dep=1,type=0,tim=1474897313279820
=====================
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318537
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle textоткуда про % узнал?
это очевидно для всех из вашего первого сообщения
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318552
Oracle text
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну % нужны для того, чтобы можно было искать по части слова
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318614
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle textвот сырой трейс
Секунды в событиях ожидания дисковых чтений.
Чтобы их увидеть в трассе - надо снимать 10046 level 8, а не что попало.
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318802
Oracle text
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
event - db file sequential read
wait class - User I/O
session state - waiting
blocking session status - no holder
...
Рейтинг: 0 / 0
Разное время выполнения одного и того же запроса
    #39318820
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle textevent - db file sequential read
Вероятно, но не обязательно.
Может быть и scattered, в т.ч. на IRS - не помню уже в какой версии появилась эта оптимизация.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разное время выполнения одного и того же запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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