Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
2 ASCRUS Понятно. 2 gardenman Но тогда на MS SQL не надо бочку катить, коли сведений нет. Он далеко уже от того Sybase ушел, на котором был сделан -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:43 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
tygraТогда назовите отличия от Оракла - практически один в один получается. Только называется по-разному. Отличия в следующем. Во-первых, nested table - это тип данных, регистрируемый на общих основаниях; это не "вложенный анонимный класс". Во-вторых, объекты типа nested table передаются как параметры. То есть не создается ситуация "таблица доступна в процедуре A, если она вызвана из процедуры B (где эта таблица создана), недоступна при вызове из процедуры C (где эта таблица не создана) и непонятно как доступна при вызове из процедуры D (где создается совершенно другая таблица, но с тем же именем, после чего вызывается A)". Ну и наконец, таки именно что возможность работать и так и этак - весьма удобная и вряд ли возможная для временных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:04 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
SergSuperНу как же Вы можете об этом судить когда только что про это узнали? Я увидел проблему в решении, о котором мне рассказали, и спросил, как она решается. Это решение я могу (со своей колокольни, естественно), оценить, в том числе как "не назову хорошим". В то же время я не вижу возможности получить лучший результат в той же модели. SergSuperМожно чуть попобробней что такое nested table и как с ними можно работать? Хотелось бы примерчик какой Именно как тривиальный пример - например, здесь: /topic/146650&pg=2#1194010. Ну а описание и примеры - например, здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:13 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
ASCRUSИнтересно было бы послушать, как это организованно у Оракла и DB2. У Oracle дело обстоит следующим образом. Коллекции (в частности, nested tables) - это объекты в памяти сервера, транзакционно-независимые. Как они свопятся - не разбирался, просто потому что никогда не требовалось загонять в них серьезные объемы данных. Global Temporary Tables реализованы так же, как и обычные таблицы, но с парой исключений: Если для обычной таблицы можно указать tablespace, в котором она размещается, то временные таблицы размещаются во временном tablespace, назначенном соответствующему пользователю. При работе с временными таблицами не генерируется ненужных временных данных, а потому операции с GTT заметно эффективнее использования постоянной таблицы в тех же целях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 13:58 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
softwarer ASCRUSИнтересно было бы послушать, как это организованно у Оракла и DB2. При работе с временными таблицами не генерируется ненужных временных данных, а потому операции с GTT заметно эффективнее использования постоянной таблицы в тех же целях. Саша, не возражаешь, если я немного уточню/добавлю: генерируется меньше данных redo (начиная с 9.2.0.5). Подробности здесь, например... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:09 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Vadim_MaximovСаша, не возражаешь, если я немного уточню/добавлю: генерируется меньше данных redo (начиная с 9.2.0.5). Нисколько не возражаю - я просто стараюсь отвечать, используя минимум незнакомых слов :) Что касается версии - я склонен верить Кайту, что в восьмерке то же самое. А поскольку с девяткой начал работать с 9.2.0.4 - на этот баг, видимо, не напарывался :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:16 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
В СУБД 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. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:19 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
DB2 временная таблица лежит в буфферном пуле. Если в нем нет места свопится в temporary tablespace. Temporary tablespace это или набор файлов внутри которых размазывается эта временная таблица или директория тогда каждая таблица это отдельный файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 16:31 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
dimitr Один нюанс - MSSQL (и полагаю, что Sybase ASE также) разделяет данные GTT между сессиями. Никто больше этого не делает. Не разделяют они данные, ни тот, ни другой. В них видимость временных таблиц - сессия, поэтому данные разные сессии никак не могут разделать. Но у MSSQL есть еще таблицы с ## впереди - таблица видна всем сессиям, как и данные в ней (тоже всем сессиям). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 18:09 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
в Sybase ASE можно создать табличку tempdb..<TABLENAME> которая также как и ##TABLE будет доступна всем, но почистится после перезагрузки базы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 18:13 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Если оптимизатор в КОНКРЕТНОМ случае не справляется, это задача для тюнинга :) Существуют еще и АБСОЛЮТНО НЕОПТИМИЗИРУЕМЫЕ (сервером) ЗАПРОСЫ :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 18:14 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Не оптимизируемых (на уровне приложения) запросов НЕ СУЩЕСТВУЕТ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 18:36 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
MasterZiv dimitr Один нюанс - MSSQL (и полагаю, что Sybase ASE также) разделяет данные GTT между сессиями. Никто больше этого не делает. Не разделяют они данные, ни тот, ни другой. В них видимость временных таблиц - сессия, поэтому данные разные сессии никак не могут разделать. Но у MSSQL есть еще таблицы с ## впереди - таблица видна всем сессиям, как и данные в ней (тоже всем сессиям). Епрст. А я про что? Насколько я трезв, в MSSQL как раз оные ##-таблицы и есть ближайший аналог стандартных GTT. А #-таблицы - аналог LTT. Неужто я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 21:37 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
вобщем за исключением некоторых нюансов - всё едино, только название и синтаксис разный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 11:23 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 11:44 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
авторВ MSSQL и Sybase ASE #-таблицы нужны шоб обойти ублюдочность ихнего SQL - диалекта А можно сразу комментарии. По ублюдочности. А то на предыдущий вопрос не ответили, может хоть тут. Может чего у вас с TSQL не так? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:13 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
SergSuperвобщем за исключением некоторых нюансов - всё едино, только название и синтаксис разный Один из этих нюансов я упоминал в первом посте этого топика. Данные #-таблиц разделяются между сеансами. Но практическую пользу от этого я вижу смутно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:01 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
tygra авторВ MSSQL и Sybase ASE #-таблицы нужны шоб обойти ублюдочность ихнего SQL - диалекта А можно сразу комментарии. По ублюдочности. А то на предыдущий вопрос не ответили, может хоть тут. Может чего у вас с TSQL не так? Мне тоже интересно. Почти все высказавшиеся называли базовые причины использования временных таблиц, которые применимы ко всем серверам, пожалуй. Но тем не менее MSSQL-щики юзают их на порядок-другой чаще остальных. Это хорошо видно по мигрантам, задающим вопросы в топиках про Oracle/InterBase/etc. Так в чем же причина, собственно? В производительности ядра MSSQL? В недостаточности языковых воможностей для сложных запросов? В менталитете разработчиков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:07 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
dimitrМне тоже интересно. Почти все высказавшиеся называли базовые причины использования временных таблиц, которые применимы ко всем серверам, пожалуй. Но тем не менее MSSQL-щики юзают их на порядок-другой чаще остальных. Это хорошо видно по мигрантам, задающим вопросы в топиках про Oracle/InterBase/etc. Так в чем же причина, собственно? В производительности ядра MSSQL? В недостаточности языковых воможностей для сложных запросов? В менталитете разработчиков? Лично мое мнение - что в недостатке возможностей для сложных запросов. Производительность ядра у MSSQL очень даже на уровне и он имеет довольно мощный и современный оптимизатор даже на текущий момент, несмотря на то, что был сделан в 2000 году. Ну и еще плюс не стоит забывать про архитектуру блокировочника и исторически сложившуюся архитектуру в частности самого MSSQL. Здесь тоже времянки иногда помогают выйти из положения. Ну а менталитет разработчиков - хорошие пользуются времянками, когда это получается заведомо выгоднее и эффективнее, плохие - потому как просто не знают, не думают как можно по другому (это тоже самое, как и использование курсоров). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:14 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
когда в 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 ?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:31 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
ах да...)) GTT - от микрософт - это не GTT ...)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:32 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
В Юконе как раз можно будет так писать, как в конце той страницы. Получается, что уже можно сравнивать - бета есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:42 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
gardenman, позиция "против" - она, вобщем-то, выражаясь вашим языком, ублюдочная под MS SQL работает довольно большой процент серверов, но вы не пытаетесь понять почему, вы просто пытаетесь доказать что M$ хуже во всём. Зачем Вам это? Инфантилизм какой-то а 5-й пункт - просто убивает наповал. Действительно зачем нужен такой сервер если gardenman не понимает что такое timestamp? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:49 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Там очень много чего в конце страницы. Тем более чего там относится к временным таблицам я так и не понял..... автор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 -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 14:50 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=32844613&tid=1553899]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 270ms |
| total: | 462ms |

| 0 / 0 |
