Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / от новичка на DB2 / 8 сообщений из 8, страница 1 из 1
22.11.2007, 22:24
    #34959812
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
Всем доброе время суток.
Я разработчик на Sybase ASE. Меня подключили к проекту на DB2. Для начала мне дали процедуру и попросили её прооптимизировать :-0

У меня есть несколько вопросов.
Вопрос 1. Как в DB2 без графики получить метаданные. Интересуют поля таблиц, индексы, тексты процедур, зависимости между объектами?
В терминах Sybase ASE или MSSQL меня интересует DB2 аналог sysobjects, sp_help, sp_helptext, sp_depends и.т.п.

Вопрос 2. Когда нужно создавать Explain tables для анализа access plan и когда можно обойтись без них?


Вопрос 3. Если нужно проанализировать access plan процедуры, какие бы вы посоветовали неграфические утилиты?

Пожалуйста поделитесь боевым опытом.

Заранее огромное спасибо
...
Рейтинг: 0 / 0
23.11.2007, 10:28
    #34960345
тлгдшлм
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
Смотри схему SYSCAT, там все понятно.
Оптимизировать надо запросы а не процедуры можешь посмотеть на SQL PL Profiler что-бы понять что у тебя самое тормозаное в процедуре.
...
Рейтинг: 0 / 0
23.11.2007, 12:32
    #34960859
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
1. SYSCAT SCHEMA
2.
Надо содавать, если вы хотите помотреть план запроса.
Для каждого пользователя это делается 1 раз.
3.
Нет понятия access plan процедуры.
Есть access plan'ы отдельных команд.
Под sql процедурой создается package с планами запросов статического sql.
Зависимость процедура->пакет - в SYSCAT.ROUTINEDEP .
Искать пакет по routineschema, specificname процедуры.
Анализируется утилитой db2expln .
Планы запросов динамического sql в процедуре будут падать в explain таблицы, если перед вызовами процедуры 1 раз сделать
set current explain mode yes
Доставать эти планы из explain таблиц надо утилитой db2exfmt .
...
Рейтинг: 0 / 0
23.11.2007, 21:52
    #34962543
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
Огромное спасибо!

Мне удалось запустить db2xpln как для запросов так и для анализа процедур (через пакаджи) и вывести планы в текстовые файлы.

В приложении с которым я работаю часть практикуется передача выборки данных из процедуры в процедуру через временные таблицы; например процедура 1 создаёт временную таблицу и вызывает процедуру 2
которая эту таблицу заполняет. Далее вызывается процедура 3 которая выполняет запрос с участием этой временной таблицы.

В связи с этим вознили вопросы:

1. Считается ли подобная практика нормальной. Встречалась ли она кому-нибудь из вас?
2. Как проанализировать процедуру 3? db2expln -package Pxxxx вместо плана будет содержать ошибку SQLSTATE 42704, что совершенно логично т.к. временная таблица создаётся в начале цепочки вызовов процедур.
Создание пустой таблицы в процедуре 3 наверное большого смысла иметь не будет, т.к. план должен зависеть от количества записей в ней.

Заранее очень благодарен за ответы.
...
Рейтинг: 0 / 0
23.11.2007, 23:21
    #34962606
Hunterik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
Как уже писал Вам nkulikov, для анализа узких мест ваших процедур вы можете воспользоваться SQL PL Profiler-ом...
Вот ссылка .
Данная программка позволит время выполнения отдельных мест ваших процедур и сделать определенные выводы.
Вот ещё интересная ссылочка .
С неё можно попасть сюда ...
И вообще - прогуляйтесь по DeveloperWorks... Интересные вещи пишут.
...
Рейтинг: 0 / 0
24.11.2007, 01:08
    #34962667
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
HunterikКак уже писал Вам nkulikov, для анализа узких мест ваших процедур вы можете воспользоваться SQL PL Profiler-ом...
Вот ссылка .
Данная программка позволит время выполнения отдельных мест ваших процедур и сделать определенные выводы.
Вот ещё интересная ссылочка .
С неё можно попасть сюда ...
И вообще - прогуляйтесь по DeveloperWorks... Интересные вещи пишут.

У нас очень строго с установкой софта. Про SQL PL Profiler ещё утром прочитал и озадачился пробиванием разрешения на то чтобы его поставить.

За ссылки большое спасибо. Обязательно посмотрю.

Кто-нибудь может сказать является практика обмена временными таблицами между процедурами нормальной?
...
Рейтинг: 0 / 0
24.11.2007, 11:13
    #34962805
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
KruУ нас очень строго с установкой софта. Про SQL PL Profiler ещё утром прочитал и озадачился пробиванием разрешения на то чтобы его поставить.

За ссылки большое спасибо. Обязательно посмотрю.

Кто-нибудь может сказать является практика обмена временными таблицами между процедурами нормальной?Для разработки и отладки процедур есть Developer Workbench . Поставьте лучше его и фикс к нему.
Также есть IBM Data Studio .
Такая практика обмена временными таблицами является вполне нормальной.
В данный момент получить план статического запроса с участием временной таблицы в процедуре возможно только, если пересоздать процедуру.
При этом перед командой создания надо выполнить
Код: plaintext
call set_routine_opts('EXPLAIN ALL');
Т.е. изменить окружение компиляции, чтобы скомпилировать процедуру в особенном режиме.
При каждом выполнении процедуры, собранной в таком режиме, планы всех динамических и статических с инкрементальным связыванием (статический запрос, использующий временную таблицу, попадает в это определение) запросов попадут в explain таблицы.
...
Рейтинг: 0 / 0
26.11.2007, 16:39
    #34965846
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
от новичка на DB2
Mark Barinstein KruУ нас очень строго с установкой софта. Про SQL PL Profiler ещё утром прочитал и озадачился пробиванием разрешения на то чтобы его поставить.

За ссылки большое спасибо. Обязательно посмотрю.

Кто-нибудь может сказать является практика обмена временными таблицами между процедурами нормальной?Для разработки и отладки процедур есть Developer Workbench . Поставьте лучше его и фикс к нему.
Также есть IBM Data Studio .
Такая практика обмена временными таблицами является вполне нормальной.
В данный момент получить план статического запроса с участием временной таблицы в процедуре возможно только, если пересоздать процедуру.
При этом перед командой создания надо выполнить
Код: plaintext
call set_routine_opts('EXPLAIN ALL');
Т.е. изменить окружение компиляции, чтобы скомпилировать процедуру в особенном режиме.
При каждом выполнении процедуры, собранной в таком режиме, планы всех динамических и статических с инкрементальным связыванием (статический запрос, использующий временную таблицу, попадает в это определение) запросов попадут в explain таблицы.

Огромное спасибо.
С установкой софта трудно. Нет возможности ждать пока разрешат. Так что придётся обходиться утилитами командной строки и DВArtisan.
Код: plaintext
call set_routine_opts('EXPLAIN ALL');
обязательно попробую.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / от новичка на DB2 / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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