powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / большие SQL DB2
17 сообщений из 17, страница 1 из 1
большие SQL DB2
    #35758115
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый All

DB2 V8 стоит на Z/OS
у нас удаленный доступ на запись (НЕ администрирование)
те ни процедуры ни вью на таблицы создавать нельзя
и даже посмотреть execution plan нельзя (пока по крайней мере)

Надо написать несколько довольно сложных SQL для выборки данных из скажем 5-20 таблиц
- для выборки осн. данных - к-е потом еще будут пост-процесситься но при этом по минимуму дергать сервер а в идеале вообще НЕ дергать

?1 я так понял что выбрать данные во временную таблицу а потом джойнить ее с другими нельзя как в SQL-Server ?
это было бы идеально и для отладки и вообще

?2 WITH конечно поможет в нек-х случаях - но увы не всегда
смотрю DB2 UDB V8.2 SQL Cookbook Graeme Birchall
ничего больше не нашел

может кто что скажет по этому поводу
...
Рейтинг: 0 / 0
большие SQL DB2
    #35758121
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
?1 я так понял что выбрать данные во временную таблицу а потом джойнить ее с другими нельзя как в SQL-Server ?
это было бы идеально и для отладки и вообще


Это почему это? ....
...
Рейтинг: 0 / 0
большие SQL DB2
    #35759710
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman,
ну вот есть sql на 6 страниц
да он рабочий
что он читабельный ?
а отлаживать его как ?
ну допустим я написал а другому чел-ку
вот я и спрашиваю про варианты вообщем
и в моем конкретном случае

зы вообщем похоже придется с With
...
Рейтинг: 0 / 0
большие SQL DB2
    #35759732
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гулин Федор,

А DECLARE GLOBAL TEMPORARY TABLE не работает у вас?
...
Рейтинг: 0 / 0
большие SQL DB2
    #35761677
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Mark Barinstein,
СПС за ссылку (в кукбукетоже нашел после подсказки )

DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMPTAB1
AS ( Select * from M126 ) WITH NO DATA ;

insert into SESSION.TEMPTAB1 (select * from M126);
17 rows selected
Select * from SESSION.TEMPTAB1 -- SESSION.TEMP_EMP
0 rows selected
поискал в гогле - поставил autocommit off
стало 17 rows selected

1? Есть ли какое то отличие от таблиц создаваемых с помощью опции with ?

2?означает ли это из приложения на яве работающего через jdbc
на Websphere эту конструкцию можно использовать
если одновременно надо выполнять много запросов от различных юзеров
с учетом того что много юзеров работают под одним DB userom
...
Рейтинг: 0 / 0
большие SQL DB2
    #35761720
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DGTT (declare global temporary table) это совсем другое чем WITH.
На DGTT вы можете и индекс навешать.
Если запрос очень сложные но выборка (кол-во записей) не очень большое - предпочитаю WITH.
потому как на малом количестве записей индексы не особо влияют на перфоменс.

И наоборот, если много строк - то чтобы джойтить таблицы - тут по индексам надо. тогда - DGTT

И еще - если юзаете много динамического SQL, то лучше 1 сложный запрос с WITH чем куча динамически созданных временных таблиц с небольшим количеством данных.

DGTT не доступна из другой сессии (т.е. из другого коннекшена) поэтому DGTT в WebSphere имейте это в виду.
...
Рейтинг: 0 / 0
большие SQL DB2
    #35761870
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гулин ФедорDECLARE GLOBAL TEMPORARY TABLE SESSION.TEMPTAB1
AS ( Select * from M126 ) WITH NO DATA ;

insert into SESSION.TEMPTAB1 (select * from M126);
17 rows selected
Select * from SESSION.TEMPTAB1 -- SESSION.TEMP_EMP
0 rows selected
поискал в гогле - поставил autocommit off
стало 17 rows selectedПо ссылке ведь можно было прочитать про опцию ON COMMIT PRESERVE ROWS...
Гулин Федор
1? Есть ли какое то отличие от таблиц создаваемых с помощью опции with ?С помощью with (общее табличное выражение) вы создаете временную таблицу, на которую вы можете ссылаться только в селекте, в котором это выражение определено .
DGTT же может быть использована в сессии несколько раз.
...
Рейтинг: 0 / 0
большие SQL DB2
    #35761906
Гулин Федорозначает ли это из приложения на яве работающего через jdbc
на Websphere эту конструкцию можно использовать
если одновременно надо выполнять много запросов от различных юзеров
с учетом того что много юзеров работают под одним DB userom
Предупреждение касательно DB2 for z/OS и пула соединений WAS:
Если будете создавать временные таблицы, желательно их удалять принудительно, как только они становятся не нужны, или объявлять их с опцией ON COMMIT DROP TABLE.
По коммиту DB2 Thread должен переходить в неактивное состояние, а это возможно в случае, если нет блокировок (открытый курсор WITH HOLD, временная таблица, LOB-локатор с WITH HOLD ). Это позволит избежать "отстрела" зависших (IDLE) нитей со стороны DB2, да и позволит более оптимально использовать нити в DB2 for z/OS и в пуле сервера приложений.
...
Рейтинг: 0 / 0
большие SQL DB2
    #35761978
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое СПС за ответы

-- И еще - если юзаете много динамического SQL, то лучше 1 сложный запрос с WITH чем куча динамически созданных временных таблиц с небольшим количеством данных

речь идет именно о динамическом sql
именно сложностью отладки и обусловлен топик
- слоожно проверять подзапросы из With
( по крайней мере я не знаю как в (Quest Central))

Переформулирую 2 часть ? :
Если в Quest Central (приложении) я зайду с нескольких машин под ОДНИМ ДБ юзером
и запущу DGTT с Одинаковым именем в 1 момент времени
не приведет ли это к конфликту ?
...
Рейтинг: 0 / 0
большие SQL DB2
    #35763128
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DGTT уникальны для сессии... Между сессиями оны не видны...
...
Рейтинг: 0 / 0
большие SQL DB2
    #35763675
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
речь идет именно о динамическом sql
именно сложностью отладки и обусловлен топик
- слоожно проверять подзапросы из With
( по крайней мере я не знаю как в (Quest Central))

А что тут такого?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
WITH
  t1 AS (
...
  ),
  t2 AS (
...
  ),
  t3 AS (
...
  ),
  ...
  tN AS (
  )
SELECT * 
FROM tM
Т.е. "нижний" запрос делаете максимально простым, и, чтобы посмотреть M-тый этап, достаточно чуть подкорректировать FROM внизу.
...
Рейтинг: 0 / 0
большие SQL DB2
    #35763792
Anka_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гулин Федор, а какая необходимость заходить с нескольких машин и запускать сложный запрос? Оцените результат Вашего запроса, если это несколько строк из миллиона, то это проще сделать каким то другим способом. И потом мб я туплю, но WebSphere вообщем то мб побоку если обращаться напрямую к DB2, естественно при разовой операции, т.е. можно разрузить БД от пользователей, остановив WSA, но в этом случае Ваш админ должен быть вкурсе. Если запрос будете применять регулярно, то тогда да нужно думать относительно того кака на него будет реагировать DB2 и смотреть как работает WSA с сессиями.
...
Рейтинг: 0 / 0
большие SQL DB2
    #35768000
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем СПС за ответы
особенно Victor Metelitsa - так и буду делать

еще раз администрирование - БД вообще НЕ у нас (БД удаленная)
про Websphere я знаю только то что на ней будет крутиться и версию - 6

-- DGTT уникальны для сессии... Между сессиями оны не видны...

если я на 1 ПК зашел под юзером A1 создал времен. таблицу T1
и еще на 10-100 ПК одноверменно это возможно ?
(это требуется по условиям задачи - приложение запускается под нескольким дб юзерами)

Я просто не понимаю термин сессия в данном контексте
где она хранится на локальном ПК ? на DB2 сервере ?

?2 приложение будет запускать sql на БОЛЬШИХ объемах данных
DGTT и SQL с WITH - есть ли какие то различия по производительности ?
...
Рейтинг: 0 / 0
большие SQL DB2
    #35769096
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин ФедорВсем СПС за ответы
если я на 1 ПК зашел под юзером A1 создал времен. таблицу T1
и еще на 10-100 ПК одноверменно это возможно ?
(это требуется по условиям задачи - приложение запускается под нескольким дб юзерами)


Гулин Федор
Я просто не понимаю термин сессия в данном контексте
где она хранится на локальном ПК ? на DB2 сервере ?

Термин коннекция - понятен? сессия, коннекция, соединение - синонимы.

Гулин Федор
?2 приложение будет запускать sql на БОЛЬШИХ объемах данных
DGTT и SQL с WITH - есть ли какие то различия по производительности ?
[/quot]
По DGTT вы можете построить индекс, а также собрать статистику.
Поэтому перфоменс будет лучше.

Но... когда много динамического SQL, а данных мало, то ...надо посмнить что компиляция всякого запроса - это время. И иногда лучше выполнить один динамический запрос с WITH чем десять простых динамических запросов.
...
Рейтинг: 0 / 0
большие SQL DB2
    #35770947
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря, при всех радостях WITH, когда я стал работать с запросами с парой десятков таблиц, некоторые из которых содержали миллионы строк, в конце концов мне пришлось переходить на ночные скрипты с заполнением промежуточными результатами даже не temporary, а обычных таблиц (чтобы не беспокоиться о доступе из других коннектов, индексах и статистике), ибо иначе я был не в силах добиться получения результата за обозримое время (т.е. не более полусуток в моём случае, с 8 вечера до 8 утра). Сейчас я пересматриваю код, чтобы пересчитывать только кусочек результирующего множества, а не всё, и, понятно, temporary tables тут тоже совсем не помошники, ибо надо хранить вспомогательные данные длительное время.

В зависимости от запросов и данных, имеют смысл разные подходы. Для сложного запроса - я начинаю с запроса с WITH, а потом уже начинаю чесать в затылке, если производительность совсем неудовлетворительна и оптимизировать не удаётся.
...
Рейтинг: 0 / 0
большие SQL DB2
    #35774788
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman ,Victor Metelitsa и ВСЕМ , СПС за ответы
время отклика запросов достаточно критично - надо нагеренить тест. данных
посмотреть
(миллионы записей будут похоже только в 1 новой таблице
+во 2 таблице - номенклатуре куда они будут джойниться)

?1 можно ли как то посмотреть план оптимизациии запросов
если нет возможности создавать таблицы (execution plan)
есть какие-нибудь утилиты обойти это дело ?

?2 /topic/632150&pg=-1
...
Рейтинг: 0 / 0
большие SQL DB2
    #35777397
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боюсь без таблиц объяснения посмотреть план динамических запросов не получится. Только статических. Статический SQL (это тот что встроен в ХП - можно с помощью db2expln) Это касается UDB. за zOS не отвечу.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / большие SQL DB2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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