powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Очень долгий Compiling SQL Stmt
25 сообщений из 29, страница 1 из 2
Очень долгий Compiling SQL Stmt
    #33776126
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.

Столкнулся с проблемой. Update запрос на котором
срабатывает триггер вида:

CREATE TRIGGER CART1_PF
AFTER UPDATE OF CF ON CART1
REFERENCING OLD AS or NEW AS nr
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC

внутри пара select/update/delete


Так вот компиляция этого апдейта занимает секунд 20. Возможно ли создание прекопиленого тригерра? Или каким иным способом избежать такой долгой компиляции запроса?
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33776129
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Также замечу, что непосредственно исполнение запроса исполняет потом меньше секунды.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33776147
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А форум сначала почитать слабо?
Код: plaintext
1.
2.
--
Антон
Per rectum ad astrum
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33776179
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
set current query optimization= от 0 до 9

дают колебания в скорости компиляции в пределах 3 секунд и значительного прироста скорости не дают :(
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33776586
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Y.Так вот компиляция этого апдейта занимает секунд 20. Возможно ли создание прекопиленого тригерра? Или каким иным способом избежать такой долгой компиляции запроса?
Я правильно понял, что время компиляции вы определяете, выдавая последовательные команды
Код: plaintext
list appications for db ... show detail
и обнаруживаете свое приложение со статусом compiling на протядении ~ 20с?
Или еще как?
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33777673
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да именно так.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778134
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте завенуть команды изменения в процедуру (со статическим вызовом команд) или табличную функцию.
Оформите их как modifies sql data.
Должно прокатить, т.к. при создании процедуры (функции) статические команды должны скомпилироваться и упасть в пакет.
Сообщите о результатах, пожалуйста...
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778191
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да уже пошел по этому пути. Стало все работать моментом. Правда, пока не знаю как реализовать рекурсию в процедурах - возможно ли это?
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778200
nakulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рекурсию можно делать SQL оператором. DB2 Cookbook!!!
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778248
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А конкретно?

Вызов процедуры самой из себя обламывается еще на стации ее создания:
Код: plaintext
1.
SQL0440N  No authorized routine named "CART2_CF1" of type "PROCEDURE                                                   " having compatible arguments was found.

Нужен какой-то predefine как это делается в C++.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778280
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778336
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там про рекурсивный Call ничего нет - или укажите страницу раз я так слеп. УРЛ ссылок накидать и послать на гугл каждый может. Я просил конкретно.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778384
ппм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Николай хотел сказать, что не надо рекурсивно процедуру, если можно сделать в процедуре рекурсивный SQL запрос.
И вызвать процедуру один раз.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778392
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create procedure recursion(inout i int)
begin
  declare stmt varchar( 128 );
  if (i< 5 ) then
    set stmt = 'call recursion(?)';
    prepare s1 from stmt;
    set i=i+ 1 ;
    execute s1 into i using i;
  end if;
end@

call recursion( 1 )@
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778396
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Mark!
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778421
ппм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда я понял Николая неверно.
О как.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778484
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В финале отказался от триггеров вообще - все перенесено на процедуры. То что работало минутами - сейчас исполняетчся меньше секунды. Я счастлив! :) Спасибо Mark еще раз.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778525
ппм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
интересно, а в чем таки была проблема - что, каждый раз пере выполнением запроса он компилился? В cashe не попадал? Почему так критично время компиляции?
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33778575
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При создании триггера не создается пакет, т.е. ничего не компилируется, а используется в runtime для окончательного построения команд.
Поэтому, если в триггере вставили сложную команду, которая долго компилится, то оно так и будет каждый раз при активации триггера компилиться, а потом выполняться...
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33779012
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Mark - точно, факт.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33779397
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinПопробуйте завенуть команды изменения в процедуру (со статическим вызовом команд) или табличную функцию.
Оформите их как modifies sql data.
Должно прокатить, т.к. при создании процедуры (функции) статические команды должны скомпилироваться и упасть в пакет.
Сообщите о результатах, пожалуйста...

Хм. Разве табличные функции не компилируются вместе с вызвавшим их SQL-выражением, как и триггеры?
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33779405
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Y.В финале отказался от триггеров вообще - все перенесено на процедуры.
Так ведь можно было просто вызвать SP из триггера.

(Интересно, что можно было наворотить в запросе, чтобы даже на нулевом уровне оптимизации оно долго компилировалось?...).
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33779417
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
я тут на днях читал документ, описание Информационной Системы (проектируемой)
Так в нем в первом же абзаце, в определениях, что-то типа
"Информационная система - база данных, в которой хранятся..."
Вот так вот.
С таким подходом можно и не таких дров наломать.
Все глюки заложены еще на этапе проектирования...
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33779613
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor MetelitsaХм. Разве табличные функции не компилируются вместе с вызвавшим их SQL-выражением, как и триггеры?
Да, верно.
Насчет табличных функций я ошибся.
...
Рейтинг: 0 / 0
Очень долгий Compiling SQL Stmt
    #33781547
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinПри создании триггера не создается пакет, т.е. ничего не компилируется, а используется в runtime для окончательного построения команд.
Поэтому, если в триггере вставили сложную команду, которая долго компилится, то оно так и будет каждый раз при активации триггера компилиться, а потом выполняться...
Не согласен. Откомпили любую процедуру, и увидишь как триггер вставился в план процедуры...
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Очень долгий Compiling SQL Stmt
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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