Как отслеживать планы выполнения запросов к БД веб-приложений? - PullRequest
1 голос
/ 22 июля 2010

Есть ли способ в TOAD или каком-либо другом инструменте для мониторинга запросов, выполняемых вашим веб-приложением?

Я хотел бы изучить планы объяснения / выполнения запросов веб-приложения.

Я отлаживаю, почему запросы веб-приложений медленнее, чем при запуске из sqlplus.

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

Как правило, вы можете отслеживать и анализировать с трех точек.Во-первых, SQL, в основном через представление v $ sql.Во-вторых, через сессию (начиная с v $ session).Наконец, через время (измерение, обычно на уровне системы или сеанса, в течение определенного периода времени).

Если выполняется конкретный оператор SQL, такой как SELECT * FROM table WHERE type =: val, тогдабаза данных быстро ее хеширует и проверяет, есть ли в кеше соответствующий оператор.Оператор должен соответствовать не только тексту, но и определенным параметрам среды (таким как пользователь синтаксического анализа, цель оптимизатора, типы переменных связывания, параметры NLS ...).

Если нет соответствующего оператора,затем база данных отправит его оптимизатору для составления плана запроса.Если есть совпадение, то будет использоваться план, уже определенный для этого оператора.

Поэтому я бы предложил, чтобы ваш первый шаг - взять SQL, который был выполнен как веб-приложением, так и из sqlplus иПосмотрите, использует ли он тот же план.Вы должны быть в состоянии найти в v $ sql заявление о заинтересованности и посмотреть, сколько в нем встречается случаев.в планах, чтобы увидеть, если они различаются (DBMS_XPLAN.DISPLAY_CURSOR).Если у вас есть только одно вхождение, тогда SQL используется совместно, и вам нужно использовать другой подход для изоляции выполнения веб-приложения от выполнения sqlplus.

Один из способов сделать это - отслеживать выполнениеSQL через сеанс веб-приложения и сеанс sqlplus (DBMS_MONITOR).Затем tkprof или аналогичные в файлах трассировки и найдите различия.

не может помочь вам сделать это через TOAD, но вы не ошибетесь в понимании базовых инструментов и методов.

1 голос
/ 20 июля 2011

Да. В Oracle TOAD есть способ отслеживать обращения веб-приложений к запросам к БД.

START -> All Programs -> Quest Software -> TOAD for Oracle -> Tools -> SQL Monitor

С помощью этого инструмента вы выбираете процесс ([TOAD, Web_dev (I dont remember the name of debug)] в данном случае «выполняется», «отладка» тоже). Этот инструмент показывает, какая хранимая процедура или функция вызывает приложение.

...