powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / О временных таблицах замолвите слово...
25 сообщений из 177, страница 4 из 8
О временных таблицах замолвите слово...
    #32843398
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ASCRUS
Понятно.

2 gardenman
Но тогда на MS SQL не надо бочку катить, коли сведений нет. Он далеко уже от того Sybase ушел, на котором был сделан

-- Tygra's --
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32843662
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraТогда назовите отличия от Оракла - практически один в один получается. Только называется по-разному.
Отличия в следующем. Во-первых, nested table - это тип данных, регистрируемый на общих основаниях; это не "вложенный анонимный класс". Во-вторых, объекты типа nested table передаются как параметры. То есть не создается ситуация "таблица доступна в процедуре A, если она вызвана из процедуры B (где эта таблица создана), недоступна при вызове из процедуры C (где эта таблица не создана) и непонятно как доступна при вызове из процедуры D (где создается совершенно другая таблица, но с тем же именем, после чего вызывается A)". Ну и наконец, таки именно что возможность работать и так и этак - весьма удобная и вряд ли возможная для временных таблиц.
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32843692
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperНу как же Вы можете об этом судить когда только что про это узнали?
Я увидел проблему в решении, о котором мне рассказали, и спросил, как она решается. Это решение я могу (со своей колокольни, естественно), оценить, в том числе как "не назову хорошим". В то же время я не вижу возможности получить лучший результат в той же модели.

SergSuperМожно чуть попобробней что такое nested table и как с ними можно работать? Хотелось бы примерчик какой

Именно как тривиальный пример - например, здесь: /topic/146650&pg=2#1194010. Ну а описание и примеры - например, здесь .
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32843813
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSИнтересно было бы послушать, как это организованно у Оракла и DB2.
У Oracle дело обстоит следующим образом. Коллекции (в частности, nested tables) - это объекты в памяти сервера, транзакционно-независимые. Как они свопятся - не разбирался, просто потому что никогда не требовалось загонять в них серьезные объемы данных. Global Temporary Tables реализованы так же, как и обычные таблицы, но с парой исключений:

Если для обычной таблицы можно указать tablespace, в котором она размещается, то временные таблицы размещаются во временном tablespace, назначенном соответствующему пользователю.


При работе с временными таблицами не генерируется ненужных временных данных, а потому операции с GTT заметно эффективнее использования постоянной таблицы в тех же целях.
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32843842
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer ASCRUSИнтересно было бы послушать, как это организованно у Оракла и DB2.
При работе с временными таблицами не генерируется ненужных временных данных, а потому операции с GTT заметно эффективнее использования постоянной таблицы в тех же целях.

Саша, не возражаешь, если я немного уточню/добавлю: генерируется меньше данных redo (начиная с 9.2.0.5).
Подробности здесь, например...
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32843865
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim_MaximovСаша, не возражаешь, если я немного уточню/добавлю: генерируется меньше данных redo (начиная с 9.2.0.5).
Нисколько не возражаю - я просто стараюсь отвечать, используя минимум незнакомых слов :) Что касается версии - я склонен верить Кайту, что в восьмерке то же самое. А поскольку с девяткой начал работать с 9.2.0.4 - на этот баг, видимо, не напарывался :)
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32844043
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В СУБД Teradata поддерживаются и локальные и глобальные временные таблицы.
Локальные таблицы являются локальными внутри сессии, информация о них не прописывается в Data Dictionary. Место для них выделяется из временного пространства (SPOOL SPACE) пользователя, то есть из того, пространства, которое используется для хранения промежуточных итогов запросов.
Синтаксис CREATE VOLATILE TABLE ...
Соответственно, есть опция ON COMMIT PRESERVE/DELETE ROWS. Эти операции с такими таблицами можно логировать, а можно и нет. Они не выживают после рестарта системы.
Ограничения - отсутствие постоянных журналов, механизмов ссылочной целостности, констрейнтов, сжатия столбцов, заголовков столбцов и именованных индексов.

Определение глобальных временных таблиц хранится в Data Dictionary, они материализуются при первой операции с ними (как правило, это INSERT SELECT). Они также локальны к сессии. Место под них выделяется на основе установок TEMPORARY SPACE пользователя, создающего (материализующего) эти таблицы.
Синтаксис CREATE GLOBAL TEMPORARY TABLE ...
Также имеются опции ON COMMIT PRESERVE/DELETE ROWS и журналирования.

Фактически, локальные от глобальных отличаются тем, что информация о последних хранится в каталоге, и то, что они могут пережить рестарт системы.

Для чего нужны? Всё просто. Возьмём, например, такой инструмент, как Microstrategy. Это такая тулза, которая путём мышкования позволяет генерировать довльно сложный многопроходный SQL. При этом есть возможность использовать Derived Table или временные таблицы. Практика показывает, что некоторые отчёты выполняются быстрее, если используются Derived Table, а некоторые - если используются Temporary Table.

Ну, и наконец, их счастье было бы неполным, если бы я здесь не привёл тот самый SQL.
Итак:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
create volatile table ZZMD00, no fallback, no before journal, no after journal(
	WeekID	SMALLINT, 
	LocID	INTEGER, 
	WJXBFS1	FLOAT, 
	WJXBFS2	FLOAT)
primary index (WeekID, LocID) on commit preserve rows

;insert into ZZMD00 
select	a15.WeekID  WeekID,
	a11.LocID  LocID,
	CAST (sum(a11.ItemRev) AS FLOAT)  WJXBFS1,
	CAST (sum(a11.ItemRev) AS FLOAT)  WJXBFS2
from	SALES_HISTORY	a11
	join	ITEM	a12
	  on 	(a11.ItemID = a12.ItemID)
	join	SUBCLASS_V	a13
	  on 	(a12.SubClassID = a13.SubClassID)
	join	CLASS_V	a14
	  on 	(a13.ClassID = a14.ClassID)
	join	THE_DAY_V	a15
	  on 	(a11.DayDT = a15.DayDT)
	join	LOCATION	a16
	  on 	(a11.LocID = a16.LocID)
	join	DISTRICT_V	a17
	  on 	(a16.DistID = a17.DistID)
where	(a17.RegID =  133 
 and a14.DeptID =  12 
 and a15.WeekID in ( 26 ,  78 ))
group by	a15.WeekID,
	a11.LocID

create volatile table ZZMD01, no fallback, no before journal, no after journal(
	WeekID	SMALLINT, 
	LocID	INTEGER, 
	WJXBFS1	FLOAT)
primary index (WeekID, LocID) on commit preserve rows

;insert into ZZMD01 
select	a16.WeekID  WeekID,
	a11.LocID  LocID,
	sum(a11.ItemRev)  WJXBFS1
from	SALES_HISTORY	a11
	join	RELATE_LAST_V	a12
	  on 	(a11.DayDT = a12.LastYearDT)
	join	ITEM	a13
	  on 	(a11.ItemID = a13.ItemID)
	join	SUBCLASS_V	a14
	  on 	(a13.SubClassID = a14.SubClassID)
	join	CLASS_V	a15
	  on 	(a14.ClassID = a15.ClassID)
	join	THE_DAY_V	a16
	  on 	(a11.DayDT = a16.DayDT and 
	a12.DayDT = a16.DayDT)
	join	LOCATION	a17
	  on 	(a11.LocID = a17.LocID)
	join	DISTRICT_V	a18
	  on 	(a17.DistID = a18.DistID)
where	(a18.RegID =  133 
 and a15.DeptID =  12 
 and a16.WeekID in ( 26 ,  78 ))
group by	a16.WeekID,
	a11.LocID

select	distinct coalesce(pa1.WeekID, pa2.WeekID)  WeekID,
	a12.WeekDesc  WeekDesc,
	coalesce(pa1.LocID, pa2.LocID)  LocID,
	a11.LocDesc  LocDesc,
	pa1.WJXBFS1  WJXBFS1,
	ZEROIFNULL(((ZEROIFNULL(pa1.WJXBFS2) - ZEROIFNULL(pa2.WJXBFS1)) / NULLIFZERO(pa2.WJXBFS1)))  WJXBFS2
from	ZZMD00	pa1
	full outer join	ZZMD01	pa2
	  on 	(pa1.LocID = pa2.LocID and 
	pa1.WeekID = pa2.WeekID)
	join	LOCATION	a11
	  on 	(coalesce(pa1.LocID, pa2.LocID) = a11.LocID)
	join	THE_WEEK_V	a12
	  on 	(coalesce(pa1.WeekID, pa2.WeekID) = a12.WeekID)


drop table ZZMD00

drop table ZZMD01


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32844206
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DB2 временная таблица лежит в буфферном пуле. Если в нем нет места свопится в temporary tablespace. Temporary tablespace это или
набор файлов внутри которых размазывается эта временная таблица или директория тогда каждая таблица это отдельный файл.
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32844461
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
Один нюанс - MSSQL (и полагаю, что Sybase ASE также) разделяет данные GTT между сессиями. Никто больше этого не делает.

Не разделяют они данные, ни тот, ни другой. В них видимость временных таблиц - сессия, поэтому данные разные сессии никак не могут разделать.
Но у MSSQL есть еще таблицы с ## впереди - таблица видна всем сессиям, как и данные в ней (тоже всем сессиям).
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32844473
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Sybase ASE можно создать табличку tempdb..<TABLENAME> которая также как и ##TABLE будет доступна всем, но почистится после перезагрузки базы...
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32844477
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если оптимизатор в КОНКРЕТНОМ случае не справляется, это задача для тюнинга :)

Существуют еще и АБСОЛЮТНО НЕОПТИМИЗИРУЕМЫЕ (сервером) ЗАПРОСЫ
:-(
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32844514
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не оптимизируемых (на уровне приложения) запросов НЕ СУЩЕСТВУЕТ
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32844613
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv dimitr
Один нюанс - MSSQL (и полагаю, что Sybase ASE также) разделяет данные GTT между сессиями. Никто больше этого не делает.

Не разделяют они данные, ни тот, ни другой. В них видимость временных таблиц - сессия, поэтому данные разные сессии никак не могут разделать.
Но у MSSQL есть еще таблицы с ## впереди - таблица видна всем сессиям, как и данные в ней (тоже всем сессиям).

Епрст. А я про что? Насколько я трезв, в MSSQL как раз оные ##-таблицы и есть ближайший аналог стандартных GTT. А #-таблицы - аналог LTT. Неужто я не прав?
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32845607
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вобщем за исключением некоторых нюансов - всё едино, только название и синтаксис разный
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32845675
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperвобщем за исключением некоторых нюансов - всё едино, только название и синтаксис разный
они тока кажутся похожими. Но на самом деле работать с ними приходится по разному. В MSSQL и Sybase ASE #-таблицы нужны шоб обойти ублюдочность ихнего SQL - диалекта. а GTT - это действительно временные данные на уровне сессии.

сессия 1:
create table ##TT (id int)
The command(s) completed successfully.

сессия 2:
Server: Msg 2714, Level 16, State 6, Line 1
There is already an object named '##TT' in the database.
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32845755
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ MSSQL и Sybase ASE #-таблицы нужны шоб обойти ублюдочность ихнего SQL - диалекта
А можно сразу комментарии. По ублюдочности. А то на предыдущий вопрос не ответили, может хоть тут. Может чего у вас с TSQL не так?

-- Tygra's --
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846049
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperвобщем за исключением некоторых нюансов - всё едино, только название и синтаксис разный

Один из этих нюансов я упоминал в первом посте этого топика. Данные #-таблиц разделяются между сеансами. Но практическую пользу от этого я вижу смутно.
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846071
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra авторВ MSSQL и Sybase ASE #-таблицы нужны шоб обойти ублюдочность ихнего SQL - диалекта
А можно сразу комментарии. По ублюдочности. А то на предыдущий вопрос не ответили, может хоть тут. Может чего у вас с TSQL не так?

Мне тоже интересно. Почти все высказавшиеся называли базовые причины использования временных таблиц, которые применимы ко всем серверам, пожалуй. Но тем не менее MSSQL-щики юзают их на порядок-другой чаще остальных. Это хорошо видно по мигрантам, задающим вопросы в топиках про Oracle/InterBase/etc. Так в чем же причина, собственно? В производительности ядра MSSQL? В недостаточности языковых воможностей для сложных запросов? В менталитете разработчиков?
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846087
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrМне тоже интересно. Почти все высказавшиеся называли базовые причины использования временных таблиц, которые применимы ко всем серверам, пожалуй. Но тем не менее MSSQL-щики юзают их на порядок-другой чаще остальных. Это хорошо видно по мигрантам, задающим вопросы в топиках про Oracle/InterBase/etc. Так в чем же причина, собственно? В производительности ядра MSSQL? В недостаточности языковых воможностей для сложных запросов? В менталитете разработчиков?
Лично мое мнение - что в недостатке возможностей для сложных запросов. Производительность ядра у MSSQL очень даже на уровне и он имеет довольно мощный и современный оптимизатор даже на текущий момент, несмотря на то, что был сделан в 2000 году. Ну и еще плюс не стоит забывать про архитектуру блокировочника и исторически сложившуюся архитектуру в частности самого MSSQL. Здесь тоже времянки иногда помогают выйти из положения. Ну а менталитет разработчиков - хорошие пользуются времянками, когда это получается заведомо выгоднее и эффективнее, плохие - потому как просто не знают, не думают как можно по другому (это тоже самое, как и использование курсоров).
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846138
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда в MSSQL ьщжно будет писать вот так как тут в конце страницы тогда можно будет стравнивать MSSQL c Oracle или DB2, а иначе - веь этот треп - просто проявление комплекса неполноценности...

Можно даже подвести под МSSQL некую логичскую черту:
1) CTE - нет
2) Рекурсивных запросов -нет
3) триггеров before/for each row нет
4) SQUENCE - нет
5) timestamp - вообще непонятно что
6) тип данных DATE - отсутствует как класс (и TIME тоже)
7) структурные типы - отсутствуют...
8) а где многоплатформенность?
9) а как на счет масштабируемости и кластеров?

а сравним PL/SQL с T-SQL?
а попробуйте написать на ESQL/C++ ХП, так как это можно делать в DB2?

И вы хотите сравнивать это все с Оracle или DB2 ?...
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846141
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ах да...)) GTT - от микрософт - это не GTT ...))
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846171
Alex.Czech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Юконе как раз можно будет так писать, как в конце той страницы. Получается, что уже можно сравнивать - бета есть :)
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846203
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman, позиция "против" - она, вобщем-то, выражаясь вашим языком, ублюдочная

под MS SQL работает довольно большой процент серверов, но вы не пытаетесь понять почему, вы просто пытаетесь доказать что M$ хуже во всём. Зачем Вам это? Инфантилизм какой-то

а 5-й пункт - просто убивает наповал. Действительно зачем нужен такой сервер если gardenman не понимает что такое timestamp?
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846208
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там очень много чего в конце страницы. Тем более чего там относится к временным таблицам я так и не понял.....

автор2) Рекурсивных запросов -нет
Уже показали, что и без них нет проблем
автор3) триггеров before/for each row нет
Без них неплохо.
автор4) SQUENCE - нет
А зачем?
автор5) timestamp - вообще непонятно что
Ну кому что и как :)
автор6) тип данных DATE - отсутствует как класс (и TIME тоже)
Ну есть datetime, ничего,хватает
автор7) структурные типы - отсутствуют...
А зачем?
автор8) а где многоплатформенность?
А не нужна
автор9) а как на счет масштабируемости и кластеров?
Вот это единственное, чего жаль что нет

автора сравним PL/SQL с T-SQL?
а попробуйте написать на ESQL/C++ ХП, так как это можно делать в DB2?
Ничего, работаем

авторИ вы хотите сравнивать это все с Оracle или DB2 ?...
Мы не хотим, мы уже. И работаем однако. И хорошо работаем. И не выдумываем различных причин. И все неплохо получается. И насильно никому не навязываем - аллергию на MS пока не лечат

-- Tygra's --
...
Рейтинг: 0 / 0
О временных таблицах замолвите слово...
    #32846216
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снимаю шляпу перед tygra...
более убедительно еще никто не показывал мне как я неправ...
Публично приношу извинения всем тем, кто любит MS SQL....
...
Рейтинг: 0 / 0
25 сообщений из 177, страница 4 из 8
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / О временных таблицах замолвите слово...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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