powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
159 сообщений из 159, показаны все 7 страниц
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010483
Bombardier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо написать сравнительную характеристику СУБД.
Работал только с Oracle.
Подскажите основные преимущества и недостатки других СУБД, если не втягость. Как в плане потребительства ресурсов, так и в плане функциональности.
Спасибо.

И скажите, чем Oracle круче )))
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010499
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО Вам в форум "Сравнение СУБД"
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010519
Bombardier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю. Спасибо. Туда тоже написал.
Просто необходимо доказать преимущества Oracle. А тут как раз ребята разбираются.
Я несколько знаю. Но хотелось бы побольше и обосновано.
Конечно, необходимо полазить в инете, почитать, не без того. Но может здесь кто-то сталкивался на практике с другими СУБД и может что-то толковое сказать.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010526
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
иди на OTN и найди статью про сравнение Oracle и MSSQL
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010538
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010571
Bombardier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!!!
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010616
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BombardierЗнаю. Спасибо. Туда тоже написал.
Просто необходимо доказать преимущества Oracle.

Странно, что это нужно еще кому-то доказывать

Bombardier
Но хотелось бы побольше и обосновано.

Побольше и обоснованно - открываешь соотвествующие разделы документации, и сравниваешь, если уж так хочется достоверности.

А с другой стороны - можно и не сравнивать - просто распечатай все тома документации на принтере - и сравни, чья куча получится _побольше_.
Тем и обосновуй. Вполне, кстати _ВЕСомый_ аргумент ;)

В любом случае: "Большой, это хорошо. Даже если не выстрелит - всегда можно ударить по голове" (с)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34010627
Bombardier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Grexhide
Да. Есть доля правды!!! )))
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34017188
мимо ходил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Bombardier:
А задачи какие? Далеко не везде, где применяются СУБД, Oracle круче всех. Могу назвать сходу три применения: встраиваемые СУБД, СУБД реального времени, реляционные хранилища данных.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34017198
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимо ходилА задачи какие? Далеко не везде, где применяются СУБД, Oracle круче всех. Могу назвать сходу три применения: встраиваемые СУБД, СУБД реального времени, реляционные хранилища данных.
? ИМХО вполне конкурентоспособен.
встраиваемые СУБД - Oracle Berkeley DB, Oracle TimesTen, Oracle ESL, Oracle Lite
СУБД реального времени - Oracle TimesTen
реляционные хранилища данных - Ну а тут-то чем не угдил?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34017208
мимо ходил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousOracle Berkeley DB, Oracle TimesTen
А мы имеем в виду конкретный продукт или вообще весь пул продуктов Oracle Corp.? Если сравнивать IT корпорации вообще, то тут Microsoft и IBM много круче - у них операционки есть... :-)

andrey_anonymousреляционные хранилища данных - Ну а тут-то чем не угдил?
Ну тут и IBM посильнее будет, есть и Teradata, а ещё Sybase IQ...
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34017214
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимо ходил andrey_anonymousOracle Berkeley DB, Oracle TimesTen
А мы имеем в виду конкретный продукт или вообще весь пул продуктов Oracle Corp.? Если сравнивать IT корпорации вообще, то тут Microsoft и IBM много круче - у них операционки есть... :-)
Если сравнивать корпорации вообще, то IBM уже вроде как уделали, MS - следующая цель :)
мимо ходил andrey_anonymousреляционные хранилища данных - Ну а тут-то чем не угдил?
Ну тут и IBM посильнее будет, есть и Teradata, а ещё Sybase IQ...
Буду признателен на ссылки со сравнительным анализом. Ну или за указание аспектов, в которых представленные системы "круче"
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34017228
мимо ходил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousЕсли сравнивать корпорации вообще, то IBM уже вроде как уделали, MS - следующая цель :)
То есть от вопроса о конкретном продукте Вы ушли? :)
И потом, Oracle, в отличии от "голубых гигантов", зависит от поставщиков ОС и железа. In fact, можно сделать серверную достаточно крупной компании, где будет всё от IBM, кроме кондиционеров и end-user software ;-)

andrey_anonymousБуду признателен на ссылки со сравнительным анализом. Ну или за указание аспектов, в которых представленные системы "круче"
Ну прямо вот так сходу и из свежего приходят в голову только две:
Тынц, первый тест целиком, последний - первое место :)
Тынц, там собственно всё написано.

Аспекты крутости для DWH прямо тут обсуждать боюсь, больная тема, может понести :) Если пожелаете - в личной переписке...
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34017425
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимо ходил andrey_anonymousЕсли сравнивать корпорации вообще, то IBM уже вроде как уделали, MS - следующая цель :)
То есть от вопроса о конкретном продукте Вы ушли? :)Да не то чтобы ушел, я просто не понял откуда он взялся. Были предложены области применения СУБД, я написал что конкретно в этих областях предлагает oracle. Почему-то тут же последовала попытка вывести вопрос на уровень корпораций :) мимо ходил
И потом, Oracle, в отличии от "голубых гигантов", зависит от поставщиков ОС и железа. In fact, можно сделать серверную достаточно крупной компании, где будет всё от IBM, кроме кондиционеров и end-user software ;-)Я бы сказал скорее не зависит, ввиду всеядности :)
Видел как-то тот же DB2 на интеле - печальное, я Вам доложу, зрелище :)
Причем внедренцы мотивировали не иначе "ну а чтож вы хотели - не мейнфрейм" :)
Понятно, что это касалось одной конкретной инсталляции, поэтому не показатель, но все-таки оракель на идентичной железяке был лучше. мимо ходил andrey_anonymousБуду признателен на ссылки со сравнительным анализом. Ну или за указание аспектов, в которых представленные системы "круче"Ну прямо вот так сходу и из свежего приходят в голову только две:
Тынц, первый тест целиком, последний - первое место :) Не понял.
До 1Тб по понятным причинам лидирует MSSQL.
1 и 3 Тб - Oracle.
10Tb - нашлась одна инсталляция IBM, но все остальные позиции строго за оракелем...
И кто же круче в итоге? ;) мимо ходил
Тынц, там собственно всё написано. Пошел читать :) мимо ходил
Аспекты крутости для DWH прямо тут обсуждать боюсь, больная тема, может понести :) Если пожелаете - в личной переписке...
Одна проблема - мы оба ныкаем координаты :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34017532
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Видел как-то тот же DB2 на интеле - печальное, я Вам доложу, зрелище :)
Причем внедренцы мотивировали не иначе "ну а чтож вы хотели - не мейнфрейм" :)


У нас продукт поддерживает MSSQL и DB2 - DB2 сравнительно быстрее бегает на той же интеловской машине.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34018636
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TPC-H это игра в чехарду и смотреть нужно, не только то что в табличке на tpc-h (показатели производительности или цена производительность ) а немного вчитатывать в detail report

DB2 грузит данные в 2 раза быстрее на 64 писюках (чем не грид) чем oracle на 64 процессорном Itanium. При том что у DB2 плотность данных в выше (то бишь дисков меньше)

Так что на мой взгляд если обсуждать преимущества разных БД то смотреть на верхние сточки кто выше нецелесообразно...
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34020557
мимо ходил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousДа не то чтобы ушел, я просто не понял откуда он взялся. Были предложены области применения СУБД, я написал что конкретно в этих областях предлагает oracle
Вопрос был к автору темы, т.к. форум называется "Сравнение СУБД", вот я и спросил, какие задачи и какие СУБД сравниваем. Может человек хочет сравнить все СУБД из стана Oracle?
К слову, наверняка, автор когда писал что работал с Oracle имел в виду Berkeley DB и TimesTen, правда? :)

andrey_anonymousНе понял.
До 1Тб по понятным причинам лидирует MSSQL.
1 и 3 Тб - Oracle.
10Tb - нашлась одна инсталляция IBM, но все остальные позиции строго за оракелем...
И кто же круче в итоге? ;)
Кто круче решать Вам. Просто почему-то для 100Гб хранилища его даже в десятке нет (видать 100Гб с высоты крутости Oracle не видно), а на самом-самом первом месте стоит система которая на 46% дороже, а делает на 66% попугаев больше чем лучшая на Oracle. С чего бы это?

andrey_anonymousОдна проблема - мы оба ныкаем координаты :)
Так зачем дело стало? Выходите из тени, охотно Вам отвечу :)

2Nikolay Kulikov
К слову, есть ещё одна СУБД которая неплохо грузит в системы из кучи писюков :) Поэтому целиком с Вами согласен, смотреть на верхние строчки, да и вообще на строчки TPC-H, нецелесообразно...
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34035774
Oleg Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousБуду признателен на ссылки со сравнительным анализом. Ну или за указание аспектов, в которых представленные системы "круче"
Можешь почитать краткое описание архитектуры Teradata , надеюсь это поможет понять сильные и слабые стороны по сравнению с другими.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34036030
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg IvanovМожешь почитать краткое описание архитектуры Teradata , надеюсь это поможет понять сильные и слабые стороны по сравнению с другими. Интересная, но старая статья (или просто автор не знала/не хотела говорить про Оракл?) Многие предложения построены на сравнении с "другими БД", которые не умеют, оказывается, индекс в онлайне перестроить, или сделать там хеш-партицирование .

Кстати, а давно Терадата отзвала свои результаты из TPC-H ? Вроде раньше я её там видел.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34038832
Oleg Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton Demidov Oleg IvanovМожешь почитать краткое описание архитектуры Teradata , надеюсь это поможет понять сильные и слабые стороны по сравнению с другими. Интересная, но старая статья (или просто автор не знала/не хотела говорить про Оракл?) Многие предложения построены на сравнении с "другими БД", которые не умеют, оказывается, индекс в онлайне перестроить, или сделать там хеш-партицирование .

Кстати, а давно Терадата отзвала свои результаты из TPC-H ? Вроде раньше я её там видел.
ИМХО статья не ставит целью сравнить Teradata с чем-то.
Oracle действительно умеет эффективно перестраивать индексы в on-line. Керри так и написала "... Часто в системах управления базами данных ...", никто же не сказал про все ;-)

Сравнивать же механизмы партиционирования в системах с общим storage и разделенным вообще бессмысленно т.к. их назначение "малость" отличается.
Т.е. в случае общего стораджа задача партиционирования — эффективно распределить информацию между дисками и обеспечить возможность "пропуска" части партиций при выполнении запросов.
В случае, когда каждый узел использует независимый storage, на первое место выходит эффективность распределения данных между узлами.

За TPC я не слежу, поэтому не знаю участвовала ли Teradata в TPC-H. Нашел только старые результаты TPC-D с участием Teradata.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34038900
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В двадцать пятый раз сравниваем Оракл с Teradata. Может поиском воспользоваться? Если в двух словах, то у ораклового кластера архитектура с "общим диском" и сравнительно небольшим числом узлов. У Teradata - десятки узлов и массивно-параллельная (MPP) архитектура, у каждого узла - свой диск, процы и память, общаются они с друг другом через "быструю сеть Bynet". У каждой из этих двух архитектур есть свои достоинства и недостатки. Поэтому нужно брать данную конкретную задачу и смотреть как она "ложится" на ту или иную архитектуру СУБД.

Например Teradata умеет ну очень быстро делать full table scan - "все в параллель". Зато если построить join так что узлы начнут активно слать друг другу данные по Bynet'у то при достаточном этого траффика Teradata "заткнется". Оракл "заткнется" как только все узлы начнут активно лезть в одни и те же данные, блокировать их итп., диск-то общий. "Чудес на свете не бывает".

Я кстати работал и с Teradata и с Ораклом. С Ораклом работал больше, знаю его лучше поэтому и "нравится" он мне. Подозреваю что тем кто больше работал с Teradata она тоже "нравится" больше чем Оракл.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34040428
Зл0й Например Teradata умеет ну очень быстро делать full table scan - "все в параллель". Зато если построить join так что узлы начнут активно слать друг другу данные по Bynet'у то при достаточном этого траффика Teradata "заткнется". Оракл "заткнется" как только все узлы начнут активно лезть в одни и те же данные, блокировать их итп., диск-то общий. "Чудес на свете не бывает".
На самом деле наоборот. На сложных join-ах Oracle отваливается гораздо быстрее, а вот механизм блокировок у него более развит и здесь возможностей заткнутся у него гораздо меньше чем у Teradat-ы.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34040451
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПрохоровНа сложных join-ах Oracle отваливается гораздо быстрее
ИМХО бессмысленное утверждение.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34042069
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>На сложных join-ах Oracle отваливается гораздо быстрее
Оракл в кластере заткнется на массовых апдейтах..


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34042085
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
>На сложных join-ах Oracle отваливается гораздо быстрее
Оракл в кластере заткнется на массовых апдейтах..
... или не заткнется...
... а может быть корове, может быть вороне...
Господа, ну нельзя говорить такие вещи "вообще", без привязки к конкретной системе и ситуации.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34042658
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда скажем так... наихудшую производительность кластер на оракле
показывает на массовых апдейтах..


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34042741
ScareCrowтогда скажем так... наихудшую производительность кластер на оракле
показывает на массовых апдейтах..Чушь полнейшая, ибо andrey_anonymousГоспода, ну нельзя говорить такие вещи "вообще", без привязки к конкретной системе и ситуации
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34044133
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ноготок Ландышевич

Теперь уже цветочный бизнес ?

ps. а в остальном поддерживаю
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34045681
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров Зл0й Например Teradata умеет ну очень быстро делать full table scan - "все в параллель". Зато если построить join так что узлы начнут активно слать друг другу данные по Bynet'у то при достаточном этого траффика Teradata "заткнется". Оракл "заткнется" как только все узлы начнут активно лезть в одни и те же данные, блокировать их итп., диск-то общий. "Чудес на свете не бывает".
На самом деле наоборот. На сложных join-ах Oracle отваливается гораздо быстрее, а вот механизм блокировок у него более развит и здесь возможностей заткнутся у него гораздо меньше чем у Teradat-ы.

Для начала Терадата: Все очень просто. Предположим что есть 2 таблицы table_a и table_b. Предположим что первичные индексы данных таблиц построены по атрибутам column_a1 и column_b1 соответственно. Теперь строим Join такой что column_a1=column_b27. Доступ в table_b идет не по первичному индексу. т.е. amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet. Ведь они же раскиданы по amp'ам исходя из хеширования по column_b1. Теперь предположим что обе таблицы по 200 миллионов записей, чтобы жизнь медом не казалась. Все. Приплыли.

С ораклом все еще проще, база данных (т.е. то что на диске) одна, совместно используемая различными узлами. Когда идет чтение - проблем не вижу так как оно в Оракле не блокирующее, хотя успешность его не гарантируется. Что касается update в Хранилищах данных, то я лично делаю вот как:
- строю отдельный staging tablespace куда кладу все staging tables
- ETL гоняю на одном узле, он "упирается" все равно в i/o а не CPU или RAM, много узлов там не поможет
- когда staging закончен делаю insert в специальную таблицу которая лежит в fact tablespace.
- потом делаю из нее exchange partition в fact table

Все работает "на ура", "мухой", "на раз". Так что в ХД кроме как возможности быстро делать full table scan я не вижу радикальных преимуществ терадэйты над Ораклом. В OLTP же терадэйту почти не применяют, ее механизм блокировок далек от совершенства.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34045755
Мимо ходил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зл0йДля начала Терадата: Все очень просто. Предположим что есть 2 таблицы table_a и table_b. Предположим что первичные индексы данных таблиц построены по атрибутам column_a1 и column_b1 соответственно. Теперь строим Join такой что column_a1=column_b27. Доступ в table_b идет не по первичному индексу. т.е. amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet. Ведь они же раскиданы по amp'ам исходя из хеширования по column_b1. Теперь предположим что обе таблицы по 200 миллионов записей, чтобы жизнь медом не казалась. Все. Приплыли.

Хм, а "Приплыли" что означает? Будет выбрана стратегия реализации join (в данном случае скорее всего будет merge join, через redistribute), узким местом которой является суммарное IO узлов (у терадаты все стратегии join кроме одной упираются в IO узлов). То есть, при добавлении узлов скорость выполнения запроса будет расти линейно, от кол-ва узлов. Для не индексированных таблиц. Ну это у всех так, в том числе наверное и у Oracle, в случае shared-nothing конфигураций. Где же затык терадаты?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34045801
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо ходил
Хм, а "Приплыли" что означает? Будет выбрана стратегия реализации join (в данном случае скорее всего будет merge join, через redistribute), узким местом которой является суммарное IO узлов (у терадаты все стратегии join кроме одной упираются в IO узлов). То есть, при добавлении узлов скорость выполнения запроса будет расти линейно, от кол-ва узлов. Для не индексированных таблиц. Ну это у всех так, в том числе наверное и у Oracle, в случае shared-nothing конфигураций. Где же затык терадаты?

Когда все узлы начинают дружно слать друг другу по Bynet'у записи то затык происходит в пропускной способности Bynet'а, которая безусловно велика но небезгранична. Суммарная пропускная способность узлов по IO выше на порядок чем Bynet'а собственно (120MB per second per node bandwidth). Предположим узлов 40, на каждом из них висит NCR'овский сказевый дисковый массив. Какова их суммарная пропускная способность по IO 40 SCSI каналов?

Насчет линейно растущей скорости это вы в рекламном проспекте NCR прочитали? Она линейно растет только в случае AMP-local join. Teradata вообще-то не единственная СУБД MPP-архитектуры. У них у всех при Table Redistribution происходит утыкание в пропускную способность интерконнекта.

Shared-nothing конфигурация Оракла - для меня нечто новое. Ни разу не видел. Я даже сомневаюсь что Оракл сам по себе поддерживает такую конфигурацию. С помощью "надстройки" над ним наверное shared-nothing сделать можно, как и с любой СУБД. Вот DB2 EEE, Informix XPS и Tandem такую конфигурацию поддерживают, это точно.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34046166
Мимо ходил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зл0йКогда все узлы начинают дружно слать друг другу по Bynet'у записи то затык происходит в пропускной способности Bynet'а, которая безусловно велика но небезгранична. Суммарная пропускная способность узлов по IO выше на порядок чем Bynet'а собственно (120MB per second per node bandwidth). Предположим узлов 40, на каждом из них висит NCR'овский сказевый дисковый массив. Какова их суммарная пропускная способность по IO 40 SCSI каналов?

Насчет линейно растущей скорости это вы в рекламном проспекте NCR прочитали? Она линейно растет только в случае AMP-local join. Teradata вообще-то не единственная СУБД MPP-архитектуры. У них у всех при Table Redistribution происходит утыкание в пропускную способность интерконнекта.

Shared-nothing конфигурация Оракла - для меня нечто новое. Ни разу не видел. Я даже сомневаюсь что Оракл сам по себе поддерживает такую конфигурацию. С помощью "надстройки" над ним наверное shared-nothing сделать можно, как и с любой СУБД. Вот DB2 EEE, Informix XPS и Tandem такую конфигурацию поддерживают, это точно.

Коллега, я не продавец (продавец тут уже выступал) и знаю о чем говорю - работаю с этим каждый день. Всё это оффтоп, так что пишу последнее сообщение в этой ветке.

1) Пропускная способность Bynet в актуальной версии - 180Mb в секунду на узел. Если рассмотреть Ваш пример на двухузловой системе, каждый узел может разослать не больше 100 млн. записей, а на самом деле меньше (только чужие строки). Если предположить что разослать нужно 70млн, размер строки 100 байт с overhead то нужно разослать 7Гб. 40 секунд. Читать он их будет дольше, и не нужно ссылаться на показатели интерфейсов, блоки со строками в терадате рассыпаны в случайном порядке, это не потоковое видео.
Хотя конечно можно сконфигурировать такую систему что она заткнет байнет. Именно для этого конфигурациями занимаются люди из терадаты.

2) Даже если предположить что в качестве среды передачи данных для Bynet будет использоваться 10Mbit/s Ethernet система будет масштабироваться линейно. Если вдвое увеличить систему то на каждый амп и узел данных будет приходится вдвое меньше, и чтобы их переслать времени нужно вдвое меньше (вспомните, что байнет это иерархическая топология и она не заткнется, как общая шина, просто от кол-ва пакетов). Отсюда и масштабируемость на таких задачах, свойственная shared-nothing.

3) В документации по Oracle написано что RAC работает на shared nothing: Data Warehousing Guide 10g Release 1 (10.1)
Page 5-28
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34046182
Зл0йДоступ в table_b идет не по первичному индексу. т.е. amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet.
Коллега, Вы не понимаете как работает join в Teradat-е, поэтому делаете ошибочные выводы.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34048674
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров Зл0йДоступ в table_b идет не по первичному индексу. т.е. amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet.
Коллега, Вы не понимаете как работает join в Teradat-е, поэтому делаете ошибочные выводы.

Это не я не понимаю, это создатели FAQ на сайте teradata.com наверное не понимают как в ней join реализован:

FAQ
During spool redistributions to different AMPs ( merge joins where primary indices are different ), some records come to the same AMP after rehashing on the basis of join columns. Do they really go to the BYNET or message-passing layer for rehashing, or are these records directly spooled locally?

A1:
When rows are redistributed during join processing, there is a same-node optimization that is done by the message system. ...


То есть если primary indices are different то происходит-таки redistribution. Оно и понятно, если мы раскидали одну таблицу по узлам исходя из hash(employee_id) а другую по hash(some_other_id) а join делаем по social_security_number то записи с однаковым social_security_number из этих двух таблиц будут на разных узлах лежать, и слать их придется по байнету. Или я опять не понимаю что-то?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34048718
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо ходил
1) Пропускная способность Bynet в актуальной версии - 180Mb в секунду на узел. Если рассмотреть Ваш пример на двухузловой системе, каждый узел может разослать не больше 100 млн. записей, а на самом деле меньше (только чужие строки). Если предположить что разослать нужно 70млн, размер строки 100 байт с overhead то нужно разослать 7Гб. 40 секунд. Читать он их будет дольше, и не нужно ссылаться на показатели интерфейсов, блоки со строками в терадате рассыпаны в случайном порядке, это не потоковое видео.
Хотя конечно можно сконфигурировать такую систему что она заткнет байнет. Именно для этого конфигурациями занимаются люди из терадаты.

То есть они специально ограничивают пропускную способность диска, чтобы байнет не "заткнулся". Соответственно ограничителем по масштабируемости MPP (shared-nothing) архитектуры является-таки интерконнект, хоть и не напрямую а косвенно. Если бы не "узкое место" (читай-байнет) можно было бы себе позволить i/o поблатнее. В этом ИМХО и заключается основной "косяк" данной архитектуры. В свое время Sun Microsystems не стал заниматся этой архитектурой как бесперспективной именно из-за этого "косяка".
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34048791
Зл0йТо есть если primary indices are different то происходит-таки redistribution. Оно и понятно, если мы раскидали одну таблицу по узлам исходя из hash(employee_id) а другую по hash(some_other_id) а join делаем по social_security_number то записи с однаковым social_security_number из этих двух таблиц будут на разных узлах лежать, и слать их придется по байнету. Или я опять не понимаю что-то?
Теперь, все правильно и это вовсе не Зл0й ... amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet.
А теперь, раcскажите, как и сколько времени Oracle будет выполнять такой join.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34048893
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров Зл0й ... amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet.
А теперь, раcскажите, как и сколько времени Oracle будет выполнять такой join.
oracle поступит много проще - каждая из нодов, занимающихся обработкой запроса, будет читать свои данные прямо из стораджа и проводить соединение одним из трех базовых методов.
При этом если обнаружится пересечение по блокам данных (словари), то каждый узел будет располагать собствеными копиями блоков и мешать соседям не будет.
Поскольку dml-активность в сценарии не предполагается, то трафик interconnect будет очень мал и производительность соединения будет определяться только возможностями подсистемы вода-вывода.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34048952
andrey_anonymousoracle поступит много проще - каждая из нодов, занимающихся обработкой запроса, будет читать свои данные прямо из стораджа и проводить соединение одним из трех базовых методов.
Каким образом данные станут "своими" для узлов если не используется partitioning?
На сколько я помню документацию, чтобы добиться сбаланисрованной нагрузки на ноды нужно чтобы:
- количество партиций было кратно количесту узлов
- партции должны быть примерно одинакового размера
А что будет, если join придется делать не по тем полям, по которым сделан partitioning?
andrey_anonymousПри этом если обнаружится пересечение по блокам данных (словари), то каждый узел будет располагать собствеными копиями блоков и мешать соседям не будет.
Копиями таблицы в 200 млн. записей?
andrey_anonymousПоскольку dml-активность в сценарии не предполагается, то трафик interconnect будет очень мал и производительность соединения будет определяться только возможностями подсистемы вода-вывода.
Ну да?! А процессоры отдыхают при join-е без индекса?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34048955
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymousoracle поступит много проще
Каким образом данные станут "своими" для узлов если не используется partitioning?Почему не используется partitioning? Мне казалось, обсуждаются равноценные инсталляции. А то ведь можно для пущей достоверности теста потребовать запустить оракеля на калькуляторах и удесятерить объем данных... Андрей ПрохоровНа сколько я помню документацию, чтобы добиться сбаланисрованной нагрузки на ноды нужно чтобы:
- количество партиций было кратно количесту узлов
- партции должны быть примерно одинакового размераИ что из этого следует? Может быть, в архитектуре share nothing эти правила не имеют значения? Андрей ПрохоровА что будет, если join придется делать не по тем полям, по которым сделан partitioning?Тоже что и в терадате, только интерконнект перегружать не потребуется - диски-то общие... Андрей Прохоров andrey_anonymousПри этом если обнаружится пересечение по блокам данных (словари), то каждый узел будет располагать собствеными копиями блоков и мешать соседям не будет.
Копиями таблицы в 200 млн. записей?????? С чего Вы это взяли? Андрей Прохоров andrey_anonymousПоскольку dml-активность в сценарии не предполагается, то трафик interconnect будет очень мал и производительность соединения будет определяться только возможностями подсистемы вода-вывода.Ну да?! А процессоры отдыхают при join-е без индекса?
Вообще говоря, ДА. Некоторую нагрузку можно наблюдать в случае HASH JOIN, но лимитирует все-таки IO.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34049157
andrey_anonymousПочему не используется partitioning?
...
Может быть, в архитектуре share nothing эти правила не имеют значения?
Да, коллега, shared nothing может работать по совсем по другим принципам. Partitioning в Teradata не имеет никакого отношения к распределению данных между узлами и к паралельной обработке. И есть способы join-а гораздо более эффективные, чем HASH JOIN (который к стати используется при объединении короткой и длинной таблицы, а не двух длинных)
Поэтому Зл0й привел пример, в котором Oracle находится в заведомо проигрышной ситуации.
И лучше избегать утвеждений andrey_anonymousТоже что и в терадате, пока не познакомились с новой архитектурой.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34049408
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymousПочему не используется partitioning?
...
Может быть, в архитектуре share nothing эти правила не имеют значения?
Да, коллега, shared nothing может работать по совсем по другим принципам.

Скажите пожалуйста, какой же "принцип" в share nothing:
- Позводит данным, которыми заведует узел N1, соединиться с данными, находящимися на узле N2, минуя узел N1 и кластерный interconnect
- Позволит равномерно загрузить узлы, если данные по этим узлам распределены неравномерно

А какой метод соединения, отсутствующий в oracle , может предложить teradata для соединения двух длинных неиндексированных таблиц? Буду признателен за конкретную ссылку.

Насчет hash join в oracle Вы таки заблуждаетесь, коллега.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34050438
Oleg Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousoracle поступит много проще - каждая из нодов, занимающихся обработкой запроса , будет читать свои данные прямо из стораджа и проводить соединение одним из трех базовых методов.На сколько я понимаю архитектуру РАКа, Oracle НЕ МОЖЕТ задействовать для выполнения ОДНОГО запроса НЕСКОЛЬКО узлов. Я не прав?

andrey_anonymousСкажите пожалуйста, какой же "принцип" в share nothing:
- Позводит данным, которыми заведует узел N1, соединиться с данными, находящимися на узле N2, минуя узел N1 и кластерный interconnectОбъединять можно только строки, расположенные на одном узле.
Ключевая идея в том, что и перераспределение, и объединение будут выполнятся параллельно всеми узлами.

andrey_anonymous Андрей ПрохоровНу да?! А процессоры отдыхают при join-е без индекса?Вообще говоря, ДА. Некоторую нагрузку можно наблюдать в случае HASH JOIN, но лимитирует все-таки IO А сортировки при Merge Join не требуют CPU? Не уверен, что затык всегда в IO.
А кроме джойнов бывают еще агрегации и сортировки, которые требуют "много" CPU.
Терадата выполняет агрегацию и сортировку параллельно всеми узлами, при чем сортировка никогда не требует перераспределения данных.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34050485
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Oleg IvanovНа сколько я понимаю архитектуру РАКа, Oracle НЕ МОЖЕТ задействовать для выполнения ОДНОГО запроса НЕСКОЛЬКО узлов. Я не прав?[/quot]
Неправ

/topic/157336&pg=3&hl=teradata+oracle#1329317

вот в этом топике уже обсуждалось teradata и oracle
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34050491
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg IvanovНа сколько я понимаю архитектуру РАКа, Oracle НЕ МОЖЕТ задействовать для выполнения ОДНОГО запроса НЕСКОЛЬКО узлов. Я не прав?
конечно может, если оптимизатор решит, что ганять данные по интерконекту быстрей чем обработать самому запрос распараллелится. но в реальной жизни оптимизатор как я понимаю так не решает, т.к. это невыгодно.

http://www.oracle.com/technology/pub/articles/conlon_rac.html
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34050505
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg Ivanov andrey_anonymousoracle поступит много проще - каждая из нодов, занимающихся обработкой запроса , будет читать свои данные прямо из стораджа и проводить соединение одним из трех базовых методов.На сколько я понимаю архитектуру РАКа, Oracle НЕ МОЖЕТ задействовать для выполнения ОДНОГО запроса НЕСКОЛЬКО узлов. Я не прав?Нет, не правы. Oleg Ivanov andrey_anonymousСкажите пожалуйста, какой же "принцип" в share nothing:
- Позводит данным, которыми заведует узел N1, соединиться с данными, находящимися на узле N2, минуя узел N1 и кластерный interconnectОбъединять можно только строки, расположенные на одном узле.
Ключевая идея в том, что и перераспределение, и объединение будут выполнятся параллельно всеми узлами.Oracle умеет ровно то же самое. Partition-wise join называется. Oleg Ivanov andrey_anonymous Андрей ПрохоровНу да?! А процессоры отдыхают при join-е без индекса?Вообще говоря, ДА. Некоторую нагрузку можно наблюдать в случае HASH JOIN, но лимитирует все-таки IO А сортировки при Merge Join не требуют CPU? Не уверен, что затык всегда в IO.
А кроме джойнов бывают еще агрегации и сортировки, которые требуют "много" CPU.Сортировки требуют, агрегация - далеко не всякая. Oleg Ivanov
Терадата выполняет агрегацию и сортировку параллельно всеми узлами, при чем сортировка никогда не требует перераспределения данных.
"Никогда не говори никогда" (с).
Полагаю, не составит труда предложить такой order by, который потребует распределения данных.
Про распараллеливание я уже говорил - oracle умеет в том числе межнодовый параллелизм.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34050635
Oleg Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousПолагаю, не составит труда предложить такой order by, который потребует распределения данных. Думаю, составит :-)
Сортировка всегда выполняется локально, на AMP. Окончательный MERGE производит ByNET в процессе передачи данных клиенту. Так сказать, преимущество программно-аппаратной реализаци.

andrey_anonymousOracle умеет ровно то же самое. Partition-wise join называется. Я думал мы говорим о случае когда объединение происходит НЕ по ключам партиционирования...
Если объединять по ключам партиционирования — Oracle может выполнять Partition-wise join, а Teradata локальный джоин без перераспределения.
Partial Partition-wise Join в Oracle, ИМХО, хорош для объединения "большой" партиционированной таблицы с "маленькой". В таком случае Teradata просто копирует "маленькую" на все узлы, т.е. перераспределения "большой" не происходит.

За ссылки по RAC — спасибо. Я раньше считал, что параллельные процессы, порожденные одной сессией, могут быть только в пределах одного узла.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34050685
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg Ivanov andrey_anonymousПолагаю, не составит труда предложить такой order by, который потребует распределения данных. Думаю, составит :-)
Сортировка всегда выполняется локально, на AMP.т.е. это частичная сортировка Oleg Ivanov Окончательный MERGE производит ByNET в процессе передачи данных клиенту.То есть окончательная сортировка требует как перераспределения данных, так и ресурсов на их обработку, что и требовалось доказать ;) Oleg Ivanov andrey_anonymousOracle умеет ровно то же самое. Partition-wise join называется. Я думал мы говорим о случае когда объединение происходит НЕ по ключам партиционирования...Тогда не понял пассажа про локальные соединения в терадата, не требующие перераспределения данных. Oleg IvanovЕсли объединять по ключам партиционирования — Oracle может выполнять Partition-wise join, а Teradata локальный джоин без перераспределения.
Partial Partition-wise Join в Oracle, ИМХО, хорош для объединения "большой" партиционированной таблицы с "маленькой".????? нет, его основное предназначение - независимое соединение совпадающих разделов, если оно возможно. "Маленькие" и "большие" таблицы тут совершенно ни при чем. Oleg Ivanov В таком случае Teradata просто копирует "маленькую" на все узлы, т.е. перераспределения "большой" не происходит.Ораклу даже копировать не придется, каждый узел просто прочитает "меленькую" в собственный buffer cache :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34050817
Мимо ходил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не удержался: коллеги работающие с Oracle, вопрос был как (какой тип join, как разводится по узлам) и сколько времени в этой СУБД будет выполнятся следующий join:
Зл0йДля начала Терадата: Все очень просто. Предположим что есть 2 таблицы table_a и table_b. Предположим что первичные индексы данных таблиц построены по атрибутам column_a1 и column_b1 соответственно. Теперь строим Join такой что column_a1=column_b27.
То есть, по column_a1 и column_b1 сделан hash-partitioning (первичный индекс в терадате это первичный метод доступа). Join по условию column_a1=column_b27. Индексов нет, таблицы по 200mln rows.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34051059
Oleg Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous Oleg Ivanov andrey_anonymousПолагаю, не составит труда предложить такой order by, который потребует распределения данных. Думаю, составит :-)
Сортировка всегда выполняется локально, на AMP.т.е. это частичная сортировка Oleg Ivanov Окончательный MERGE производит ByNET в процессе передачи данных клиенту.То есть окончательная сортировка требует как перераспределения данных, так и ресурсов на их обработку, что и требовалось доказать ;)ИМХО вы не поняли очем я написал. Локальная сортировка происходит на узлах независимо, далее для передачи выборки клиенту используется интерконнект — ByNET. В случае сортировки, ByNET не просто передает данные клиенту, а еще производит merge отсортированных выборок. Merge "простая" операция и никакого перераспределения не происходит, но в результате клиент получает "полностью" отсортированную выборку.

andrey_anonymous Oleg Ivanov andrey_anonymousOracle умеет ровно то же самое. Partition-wise join называется. Я думал мы говорим о случае когда объединение происходит НЕ по ключам партиционирования...Тогда не понял пассажа про локальные соединения в терадата, не требующие перераспределения данных. Oleg IvanovЕсли объединять по ключам партиционирования — Oracle может выполнять Partition-wise join, а Teradata локальный джоин без перераспределения.
Partial Partition-wise Join в Oracle, ИМХО, хорош для объединения "большой" партиционированной таблицы с "маленькой".????? нет, его основное предназначение - независимое соединение совпадающих разделов, если оно возможно. "Маленькие" и "большие" таблицы тут совершенно ни при чем. Full Partition-wise Join — применяется когда объединение происходит по partition key обоих таблиц; прямой аналог в Teradata — локальные джойны, т.е. когда объединение происходит по Primary Index обоих таблиц.
Для Partial Partition-wise Join достаточно, чтобы объединение происходило по partiton key одной из таблиц, при этом вторая динамически "партиционируется". ИМХО это выгодно делать когда "партиционируемая" таблица много меньше первой; как такие джойны реализованы в Терадата я уже писал. andrey_anonymous Oleg Ivanov В таком случае Teradata просто копирует "маленькую" на все узлы, т.е. перераспределения "большой" не происходит.Ораклу даже копировать не придется, каждый узел просто прочитает "меленькую" в собственный buffer cache :)
Ключевое слово тут "Каждый". Т.е. количество дисковых операций одинаково, а ByNET "забить" небольшой таблицей тяжело :-)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34051837
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg Ivanov andrey_anonymousТо есть окончательная сортировка требует как перераспределения данных, так и ресурсов на их обработку, что и требовалось доказать ;)ИМХО вы не поняли очем я написал. Локальная сортировка происходит на узлах независимо, далее для передачи выборки клиенту используется интерконнект — ByNET. В случае сортировки, ByNET не просто передает данные клиенту, а еще производит merge отсортированных выборок. Merge "простая" операция и никакого перераспределения не происходит, но в результате клиент получает "полностью" отсортированную выборку.ИМХО наоборот, Вы не поняли о чем я писал.
1) Передача по интерконнекту - перераспределение данных или нет? ИМХО да, должен существовать узел, на котором они пройдут процедуру merge. Будет это один из "рабочих" узлов или специализированный - неважно.
2) Прежде чем клиенту будет выдана первая строка, все узлы должны завершить свои локальные сортировки и материализовать результат, в противном случае корректный merge просто не получится.
3) Через interconnect дожен протиснуться весь объем результирующей выборки.
Итог: не наблюдаю технологических преимуществ teradata.
Oleg IvanovДля Partial Partition-wise Join достаточно, чтобы объединение происходило по partiton key одной из таблиц, при этом вторая динамически "партиционируется".Это уже не partition-wise, это самое обычное соединение с partition iterator.
Параллелится и все такое, но не вижу способа, который дал бы teradata технологическое преимущество над RAC, который тоже все это умеет.
Oleg Ivanov ИМХО это выгодно делать когда "партиционируемая" таблица много меньше первой;Ну еще бы, через интерконнект большую табличку особо не погоняешь :) Oleg Ivanov как такие джойны реализованы в Терадата я уже писал.Назовите пожалуйста преимущества описанного Вами способа над архитектурой shared-disk Oleg Ivanov andrey_anonymous Oleg Ivanov В таком случае Teradata просто копирует "маленькую" на все узлы, т.е. перераспределения "большой" не происходит.Ораклу даже копировать не придется, каждый узел просто прочитает "меленькую" в собственный buffer cache :)
Ключевое слово тут "Каждый". Т.е. количество дисковых операций одинаково, а ByNET "забить" небольшой таблицей тяжело :-)
Не угадали. Второй, третий и далее узлы получат свои данные из кэша (т.е. физического чтения с дисков уже не будет).
Если учесть, что в RAC нет необходимости "давить" IO, то все становится еще забавнее :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34054212
Oleg Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousИМХО наоборот, Вы не поняли о чем я писал.Попытаемся разобраться :-)
andrey_anonymous1) Передача по интерконнекту - перераспределение данных или нет?В терминологии Teradata — нет.
Перераспределение это: читаем данные, передаем через интерконнект, пишем на диск другого узла.
В данном случае данные передаются от узла, через интерконнект непосредственно клиенту. andrey_anonymousИМХО да, должен существовать узел, на котором они пройдут процедуру merge. Будет это один из "рабочих" узлов или специализированный - неважно. Я как раз и пытаюсь объяснить, что merge происходит "на лету", финальная выборка не материализуется. Используется для этого программный или аппаратный компонент ByNET я не знаю, но это и не суть важно т.к. merge на много менее ресурсоемкая операция по сравнению с сортировкой подвыборок.
andrey_anonymous2) Прежде чем клиенту будет выдана первая строка, все узлы должны завершить свои локальные сортировки и материализовать результат, в противном случае корректный merge просто не получится.Сто пудов.
andrey_anonymous3) Через interconnect дожен протиснуться весь объем результирующей выборки.Вообще, вне зависимости от наличия или отсутствия сортировки, данные передаются клиенту через интерконнект (кроме, конечно, данных узла, к которому присоеденен пользователь).
andrey_anonymousИтог: не наблюдаю технологических преимуществ teradata.Преимуществ перед чем? Назовите другую СУБД, которая умеет распараллеливать сортировку тогда сможем сравнивать.
andrey_anonymousПараллелится и все такое, но не вижу способа, который дал бы teradata технологическое преимущество над RAC, который тоже все это умеетС точки зрения параллельного выполнения, имеем три с половиной вида джойна:
1) обе таблицы партиционированы по ключам соединения;
2) одна из таблиц (tab1) партиционирована по ключу соединения, другая (tab2) нет;
2а) то же, но tab2 много меньше tab1;
3) соединение происходит не по partition keys.

Случай раз)
TD - локальный джоин, без перераспределения строк
Ora - Full Partition-wise Join

Случай два)
TD - перераспределение tab2 таблицы по ключу соединения, либо (если tab1 << tab2) копирование на все узлы tab1
Ora - параллельный join невозможен (ИМХО)

Случай два "а")
TD - копирование tab2 на все узлы
Ora - Partial Partition-wise Join (требуется динамическое партиционирование таблицы)

Случай три)
TD - перераспределение обоих таблиц либо копирование меньшей на все узлы
Ora - параллельный join невозможен (ИМХО)

Т.е. Teradata обеспечивает параллельное выполнение практически любого запроса. andrey_anonymousНазовите пожалуйста преимущества описанного Вами способа над архитектурой shared-diskЦель применения shared nothing архитектуры в Teradata — обеспечение линейной и неограниченной масштабируемости системы. Масштабируемость shared disk архитектуры растет нелинейно и ограничена большим количеством latch'ей необходимых для организации совместного доступа к диску. В Терадате же каждый AMP монопольно владеет своей порцией данных, ему не надо синхронизировать взаимодействие с дисками с соседними AMP'ами.
А технологии джойнов в TD изначально разрабатывались исходя из требований параллельного выполнения и возможности работы с shared nothing архитектурой.
andrey_anonymousНе угадали. Второй, третий и далее узлы получат свои данные из кэша (т.е. физического чтения с дисков уже не будет).
Если учесть, что в RAC нет необходимости "давить" IO, то все становится еще забавнее :) ОК, из кэша, но через интерконнект :-)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34054915
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терминология в Teradata - отдельная "песня". Все называется "никак у людей". Зачем придумывать свои термины когда есть общепризнанные мне непонятно.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34054954
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg IvanovПерераспределение это: читаем данные, передаем через интерконнект, пишем на диск другого узла.Зачем пишем? И какое отношение это имеет к перераспределению данных с целью выполенния запроса? Oleg IvanovВ данном случае данные передаются от узла, через интерконнект непосредственно клиенту.Ora: the same; Oleg Ivanov andrey_anonymousИМХО да, должен существовать узел, на котором они пройдут процедуру merge. Будет это один из "рабочих" узлов или специализированный - неважно. Я как раз и пытаюсь объяснить, что merge происходит "на лету", финальная выборка не материализуется.В ora в идентичной ситуации - тоже. Oleg Ivanovmerge на много менее ресурсоемкая операция по сравнению с сортировкой подвыборок.Почти.
Если не рассматривать параллельные операции.
Но замнем для ясности изложения. Oleg Ivanov
andrey_anonymous2) Прежде чем клиенту будет выдана первая строка, все узлы должны завершить свои локальные сортировки и материализовать результат, в противном случае корректный merge просто не получится.Сто пудов.т.е. в этой части чудес нет.
ОК.
Oleg Ivanov andrey_anonymous3) Через interconnect дожен протиснуться весь объем результирующей выборки.Вообще, вне зависимости от наличия или отсутствия сортировки, данные передаются клиенту через интерконнект (кроме, конечно, данных узла, к которому присоеденен пользователь).
ОК. В ORA аналогично, что очевидно. Oleg Ivanov andrey_anonymousИтог: не наблюдаю технологических преимуществ teradata.Преимуществ перед чем? Назовите другую СУБД, которая умеет распараллеливать сортировку тогда сможем сравнивать.Как Вы уже, несомненно, догадались, я назову oracle :) Oleg Ivanov andrey_anonymousПараллелится и все такое, но не вижу способа, который дал бы teradata технологическое преимущество над RAC, который тоже все это умеетС точки зрения параллельного выполнения
Случай раз)идентичен для систем, пропускаем. Oleg Ivanov
Случай два)
TD - перераспределение tab2 таблицы по ключу соединения, либо (если tab1 << tab2) копирование на все узлы tab1
Ora - параллельный join невозможен (ИМХО)И что же ему мешает? ИМХО, Вы заблуждаетесь. Oleg IvanovСлучай два "а")
TD - копирование tab2 на все узлы
Ora - Partial Partition-wise Join (требуется динамическое партиционирование таблицы)Ни в коем разе. Это просто соединение, никакого partition-wise не будет. Общая ситуация по "тяжести" аналогична таковой в TD Oleg IvanovСлучай три)
TD - перераспределение обоих таблиц либо копирование меньшей на все узлы
Ora - параллельный join невозможен (ИМХО)Возможен, почему нет? Другое дело, что:
- сама ситуация невыгодна что для TD, что для ora.
- ситуация свидетельстует об ошибке в дизайне хранилища, тоже симметрично для TD и Ora Oleg IvanovТ.е. Teradata обеспечивает параллельное выполнение практически любого запроса.Хм... Ora как бы тоже обеспечивает, но при этом может отследитьситуации, когда parallel невыгоден и отказаться от него.
Потенциальный + оракелю и минус террадате. Oleg Ivanov andrey_anonymousНазовите пожалуйста преимущества описанного Вами способа над архитектурой shared-diskЦель применения shared nothing архитектуры в Teradata — обеспечение линейной и неограниченной масштабируемости системы. Масштабируемость shared disk архитектуры растет нелинейно и ограничена большим количеством latch'ей необходимых для организации совместного доступа к диску.В данном случае Вы жестоко передергиваете. Готов обсуждать приватно, но в форуме реакция одна ЛОЖЬ. Oleg Ivanov В Терадате же каждый AMP монопольно владеет своей порцией данных, ему не надо синхронизировать взаимодействие с дисками с соседними AMP'ами.Надо-надо, рассматривайте плиз ВСЕ кейсы. Oleg IvanovА технологии джойнов в TD изначально разрабатывались исходя из требований параллельного выполнения и возможности работы с shared nothing архитектурой.Парирую: "А технологии джойнов в Ora изначально разрабатывались исходя из требований параллельного выполнения и возможности работы с shared disk архитектурой." Oleg Ivanov
andrey_anonymousНе угадали. Второй, третий и далее узлы получат свои данные из кэша (т.е. физического чтения с дисков уже не будет).
Если учесть, что в RAC нет необходимости "давить" IO, то все становится еще забавнее :) ОК, из кэша, но через интерконнект :-)Оракелю тут НЕ НУЖЕН интерконнект. Имелся ввиду кэш стораджа.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34058762
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зл0йТерминология в Teradata - отдельная "песня". Все называется "никак у людей". Зачем придумывать свои термины когда есть общепризнанные мне непонятно.

Похоже, что многие общепризнанные термины появляются после того, как они появляются в Терадате. Всё-таки, Терадата - пионер в области СУБД для хранилищ данных.


contrЗачем пишем? И какое отношение это имеет к перераспределению данных с целью выполенния запроса?

Перераспределение данных - это создание временной таблицы (spool file в терминологии Терадаты), перераспределённой по первичному индексу (столбцу или набору столбцов, по которому таблица распределяется по узлам), отличному от первичного индекса таблицы с целью последующих манипуляций (сортировка, агрегирование, джойн). При перераспределении таблица пишется на диски. Именно поэтому пишем.
Кроме перераспределения также может быть и дуплицирование, то есть полное копирование всей таблицы на все или группу узлов (для общности пишу именно узлов, хотя имеется в виду т.н. AMP - единица параллелизма Терадаты).
Соответственно, чтобы выполнить джойн, может потребоваться такое перераспределение, чтобы первичные индексы спул-файлов совпадали для дальнейшего параллельного джойна.

andrey_anonymousИМХО да, должен существовать узел, на котором они пройдут процедуру merge. Будет это один из "рабочих" узлов или специализированный - неважно.

Хотел бы ещё раз поддержать Олега - Терадате не требуется отдельный узел для операции merge, которая, естественно, значительно дешевле сортировки.

contrПочти.
Если не рассматривать параллельные операции.
Но замнем для ясности изложения.

Хотелось бы именно внести ясность. Возникает впечатление, что Вы сомневаетесь в том, что merge дешевле.

Назовите другую СУБД, которая умеет распараллеливать сортировку тогда сможем сравнивать.
contrКак Вы уже, несомненно, догадались, я назову oracle :)

Кстати, Вас не затруднит закинуть сюда план параллельного выполнения запроса Oracle с сортировкой не по полю, по которому сделан partitioning?
Интересно было бы посмотреть.
Равно как и планы запросов для случаев раз, два, три, рассматриваемых выше.
В отместку, т.е. в ответ, я хотел сказать :) готов запостить планы Терадаты.

contrХм... Ora как бы тоже обеспечивает, но при этом может отследитьситуации, когда parallel невыгоден и отказаться от него.
Потенциальный + оракелю и минус террадате.

Ну, Терадата, скажем, тоже умеет так. Например,
Код: plaintext
1.
2.
SELECT c1, c2, c3 
FROM table_1
WHERE unique_primary_index= 5 

Выполнится, в общем случае, за одно чтение с диска.

Назовите другую СУБД, которая так сумеет. Подозреваю, что сначала почитается индекс, а потом данные. В Терадате же первичный индекс - это не индекс, а функция.

contr- ситуация свидетельстует об ошибке в дизайне хранилища, тоже симметрично для TD и Ora

На все случаи не надизайнишь. На то она и СУБД хранилища, чтобы уметь запросы Ad Hoc выполнять эффективно, для которых, возможно, дизайн не очень удобен.

contrВ данном случае Вы жестоко передергиваете. Готов обсуждать приватно, но в форуме реакция одна ЛОЖЬ.

Хотелось бы опять-таки поддержать коллегу. Зачем же так резко?
Я, пожалуй, соглашусь, что архитектура shared nothing по масштабируемости превосходит shared disk, потому как у последней существуют неизбежные накладные расходы на координацию доступа к расшаренному ресурсу, которые отсутствуют в shared nothing.

contrНадо-надо, рассматривайте плиз ВСЕ кейсы.
Например?

contrА технологии джойнов в Ora изначально разрабатывались исходя из требований параллельного выполнения и возможности работы с shared disk архитектурой

Я думаю, что в то время, когда разрабатывалась Терадата, Оракл ещё не знал, что такое параллелизм.
Там другие проблемы были. Оракл изначально разрабатывался для систем OLTP, в которых проблема джойнов, которые мы сейчас рассматриваем, не стоит. В противном случае, это - ошибка дизайна. В Оракл сравнительно недавно (по сравнению с возрастом Терадаты) начал развиваться оптимизатор запросов и начали вводиться элементы параллелизма внутри запроса. Я не удивлюсь, если мне скажут, что в последней версии Оракл до сих пор хинты писать надо.

contrОракелю тут НЕ НУЖЕН интерконнект. Имелся ввиду кэш стораджа.
Интересно, с какой скоростью будет выметаться пресловутый кэш на терабайтных объёмах данных с несколькими сотнями пользователей, параллельно выполняющими запросы по таблицам с сотнями миллионов записей?
Всё конечно здорово, только кэш в хранилищах данных - далеко не панацея. К тому же, дорого это. Там пока диски правят и, наверное, долго ещё будут править. Поэтому скорость работы с большими объёмами данных зависит от оптимальной (параллельной) работы с дисками.
Хотя, время покажет. Может, через лет восемь-десять Оракл догонит по производительности Терадату :)

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34058799
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийПерераспределение данных - это создание временной таблицы (spool file в терминологии Терадаты), перераспределённой по первичному индексу (столбцу или набору столбцов, по которому таблица распределяется по узлам), отличному от первичного индекса таблицы с целью последующих манипуляций (сортировка, агрегирование, джойн). При перераспределении таблица пишется на диски.Обязательно писать на диск?! АФАИР, речь шла о небольшой таблице, ведущей в соединении... Я понимаю зачем писать на диск если не хватает памяти. Но писать всегда?
Хм...
Предлагаю для определенности называть перераспределением все-таки выборку данных и распространение их по интерконнекту на заинтересованные узлы, безусловная запись временного объекта - все-таки скорее имплементация чем принцип. Константин Лисянский andrey_anonymousИМХО да, должен существовать узел, на котором они пройдут процедуру merge. Будет это один из "рабочих" узлов или специализированный - неважно.
Хотел бы ещё раз поддержать Олега - Терадате не требуется отдельный узел для операции merge, которая, естественно, значительно дешевле сортировки.Знаете, Константин, я не верю в чудеса. Независимо от стоимости операции должен быть CPU, который эту операцию выполнит. И немножечко RAM для буферизации. Хоть горшком обзовите, но оно должно быть. Константин ЛисянскийНазовите другую СУБД, которая умеет распараллеливать сортировку тогда сможем сравнивать.
contrКак Вы уже, несомненно, догадались, я назову oracle :)
Кстати, Вас не затруднит закинуть сюда план параллельного выполнения запроса Oracle с сортировкой не по полю, по которому сделан partitioning?
Интересно было бы посмотреть.Не хотелось бы прямо сейчас делать специальный тесткейс на parallel, но что-то подобное можно увидеть тут.
Готов прокомментировать выбор поста если что-то останется непонятно. Константин Лисянский
Код: plaintext
SELECT c1, c2, c3 \nFROM table_1\nWHERE unique_primary_index= 5 
Выполнится, в общем случае, за одно чтение с диска.

Назовите другую СУБД, которая так сумеет. Подозреваю, что сначала почитается индекс, а потом данные. В Терадате же первичный индекс - это не индекс, а функция.Функция от чего? Очень интересно, как именно терадата найдет нужную строку за одно чтение.
Если я правильно понял, то на оракеле аналогичное поведение продемонстрирует однотабличный хеш-кластер, но цена вопроса - производительность некоторых операций DML Константин Лисянский
contr- ситуация свидетельстует об ошибке в дизайне хранилища, тоже симметрично для TD и Ora
На все случаи не надизайнишь. На то она и СУБД хранилища, чтобы уметь запросы Ad Hoc выполнять эффективно, для которых, возможно, дизайн не очень удобен.Вот именно эффективность-то как раз и под вопросом, на то он и Ad-Hoc :) Константин ЛисянскийЯ, пожалуй, соглашусь, что архитектура shared nothing по масштабируемости превосходит shared disk, потому как у последней существуют неизбежные накладные расходы на координацию доступа к расшаренному ресурсу, которые отсутствуют в shared nothing.
Спорное утверждение, поскольку в shared nothing сущствуют накладные расходы на перераспределение данных, отсутствующие в shared disk :) Константин Лисянский
contrА технологии джойнов в Ora изначально разрабатывались исходя из требований параллельного выполнения и возможности работы с shared disk архитектурой
Я думаю, что в то время, когда разрабатывалась Терадата, Оракл ещё не знал, что такое параллелизм.Из этого должен следовать какой-то вывод кроме того, что когда-то деревья были выше а трава зеленее? Константин Лисянский contrОракелю тут НЕ НУЖЕН интерконнект. Имелся ввиду кэш стораджа.Интересно, с какой скоростью будет выметаться пресловутый кэш на терабайтных объёмах данных с несколькими сотнями пользователейЕсли вернетесь к рассматриваемому кейсу то увидите, что это как раз один из тех немногих сценариев, когда кэш на терабайте будет эффективен. Константин Лисянскийскорость работы с большими объёмами данных зависит от оптимальной (параллельной) работы с дисками.Тут Вы оспариваете как раз подход TeraData. Чуть выше по топику речь шла о том, что для эффективной работы интерконнекта производительность ввода-вывода в терадате искусственно ограничена.
А в shared disk наоборот - поднимают как могут, все диски заставляют работать в параллель. Константин Лисянский
Хотя, время покажет. Может, через лет восемь-десять Оракл догонит по производительности Терадату :)
Тут уже был отсыл к TPC-H. Что-то я там терадату не видел...
Может, будущее уже наступило? =)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34058880
Павел Новокшонов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про Оракл не скажу не знаю просто. Для приведенного примера в Teradata для table_b можно построить то что называется single-table join index c альтернативным Primary Index на column_b27. Соответсвенно когда table_a будет джойнится с table_b редистрибуции не потребуется, т.к. будет читаться индекс и данные уже будут лежать на нужных AMP-ах.

Bynet сложно заткнуть в принципе. Скорее проблемы с производительностью возникают когда сотня другая пользователей начинает одновременно долбить систему навороченными запросами по таблицам с миллиардами записей, но даже в этом случае ограничивающими фактороми будут CPU, диск и ограничение по кол-ву используемых AMP Worker Tasks (подпроцессов сидящих внутри каждого AMP’a).

Teradata сознательно похерила тесты TPC, Winter VLDB survey и прочее потому что эти бенчмарки уже давно далеки от реальной жизни. Надо смотреть живые системы, которые давно превосходят все искусственно придуманные тесты.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34059139
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел НовокшоновПро Оракл не скажу не знаю просто. Для приведенного примера в Teradata для table_b можно построить то что называется single-table join index c альтернативным Primary Index на column_b27. Соответсвенно когда table_a будет джойнится с table_b редистрибуции не потребуется, т.к. будет читаться индекс и данные уже будут лежать на нужных AMP-ах. Т.е. провести статическое перераспределение данных, фактически продублировав таблицу?
Понятно, что в техническом плане ora не отстанет - там можно создать глобальный секционированный индекс или материализованное продставление.
Но цена вопроса тоже понятна - DML + maintenance Павел Новокшонов
Bynet сложно заткнуть в принципе.Что же это за чудо такое, что его "в принципе" сложно заткнуть? Интерконнект с диспетчеризацией и прочими наворотами, пропускная способность которого превышает пропускную способность RAM в несколько раз?
Верится как-то очень с трудом. Павел НовокшоновTeradata сознательно похерила тесты TPC, Winter VLDB survey и прочее потому что эти бенчмарки уже давно далеки от реальной жизни. Надо смотреть живые системы, которые давно превосходят все искусственно придуманные тесты.
А вот это соображение обычно начинают приводить когда с результатами тестов имеются определенные проблемы - Oracle тоже когда-то так поступала, но в последние годы что-то прекратила :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34059990
Oleg Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
contrOra: the same; contr Oleg Ivanov andrey_anonymousИМХО да, должен существовать узел, на котором они пройдут процедуру merge. Будет это один из "рабочих" узлов или специализированный - неважно. Я как раз и пытаюсь объяснить, что merge происходит "на лету", финальная выборка не материализуется.В ora в идентичной ситуации - тоже. contr
Oleg Ivanov andrey_anonymousИтог: не наблюдаю технологических преимуществ teradata.Преимуществ перед чем? Назовите другую СУБД, которая умеет распараллеливать сортировку тогда сможем сравнивать.Как Вы уже, несомненно, догадались, я назову oracle :)Таки нашел описание процесса параллельной сортировки в Oracle RAC .
Сравните с сортировкой в Teradata. contr Oleg Ivanovmerge на много менее ресурсоемкая операция по сравнению с сортировкой подвыборок.Почти.
Если не рассматривать параллельные операции.
Но замнем для ясности изложения.??? что вы имеете в виду? contr Oleg Ivanov
Случай два)
TD - перераспределение tab2 таблицы по ключу соединения, либо (если tab1 << tab2) копирование на все узлы tab1
Ora - параллельный join невозможен (ИМХО)И что же ему мешает? ИМХО, Вы заблуждаетесь. contr Oleg IvanovСлучай три)
TD - перераспределение обоих таблиц либо копирование меньшей на все узлы
Ora - параллельный join невозможен (ИМХО)Возможен, почему нет? Другое дело, что:
- сама ситуация невыгодна что для TD, что для ora.
- ситуация свидетельстует об ошибке в дизайне хранилища, тоже симметрично для TD и OraА можно ссылку на раздел документации в котором подробно описан процесс параллельного выполнения join не по ключам партиционирования?
Я сумел найти только невнятные упоминания о динамическом партиционировании и статью в которой говорится, что RAC не умеет параллельно выполнять агрегацию. Это правда? contr Oleg IvanovСлучай два "а")
TD - копирование tab2 на все узлы
Ora - Partial Partition-wise Join (требуется динамическое партиционирование таблицы)Ни в коем разе. Это просто соединение, никакого partition-wise не будет. Общая ситуация по "тяжести" аналогична таковой в TD Документация называет такой случай Partial Partiton-wise Join :-) contr Oleg IvanovТ.е. Teradata обеспечивает параллельное выполнение практически любого запроса.Хм... Ora как бы тоже обеспечивает, но при этом может отследитьситуации, когда parallel невыгоден и отказаться от него.
Потенциальный + оракелю и минус террадате.Тут Константин ответил contr Oleg Ivanov andrey_anonymousНазовите пожалуйста преимущества описанного Вами способа над архитектурой shared-diskЦель применения shared nothing архитектуры в Teradata — обеспечение линейной и неограниченной масштабируемости системы. Масштабируемость shared disk архитектуры растет нелинейно и ограничена большим количеством latch'ей необходимых для организации совместного доступа к диску.В данном случае Вы жестоко передергиваете. Готов обсуждать приватно, но в форуме реакция одна ЛОЖЬ.Допустим у вас RAC из четырех узлов с массивом XX.
Вы утверждаете, что докупив еще 4 узла и аналогичный массив вы получите друкратное увеличение производительности системы? И так до бесконечности? contr Oleg Ivanov В Терадате же каждый AMP монопольно владеет своей порцией данных, ему не надо синхронизировать взаимодействие с дисками с соседними AMP'ами.Надо-надо, рассматривайте плиз ВСЕ кейсы.AMP для своей части данных выполняет:
- чтение и изменение
- загрузку
- построение индексов
- backup and recovery
- агрегацию
- сортировку
- журналирование
Какие другие случаи я должен рассмотреть? contr Oleg IvanovА технологии джойнов в TD изначально разрабатывались исходя из требований параллельного выполнения и возможности работы с shared nothing архитектурой.Парирую: "А технологии джойнов в Ora изначально разрабатывались исходя из требований параллельного выполнения и возможности работы с shared disk архитектурой."С версии 7.1 (на сколько помню, где-то 1994) contr Oleg Ivanov
andrey_anonymousНе угадали. Второй, третий и далее узлы получат свои данные из кэша (т.е. физического чтения с дисков уже не будет).
Если учесть, что в RAC нет необходимости "давить" IO, то все становится еще забавнее :) ОК, из кэша, но через интерконнект :-)Оракелю тут НЕ НУЖЕН интерконнект. Имелся ввиду кэш стораджа. ОК
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34075374
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousЧто же это за чудо такое, что его "в принципе" сложно заткнуть? Интерконнект с диспетчеризацией и прочими наворотами, пропускная способность которого превышает пропускную способность RAM в несколько раз?
Верится как-то очень с трудом.

Это интерконнект с возможностью сообщений тапа точка-точка, broadcast и multicast со своим протоколом, оптимизированным под операции СУБД (в отличие от, например TCP/IP). Плюс "прочие навороты" в виде интеллекта, необходимого для выполнения операции merge, которая обсуждалась выше. Плюс механизмы обеспечения надёжности (двойное резервирование), плюс самоконфигурируемость (актуально для больших систем - не надо настраивать ручками).
С RAM, пожалуй, я бы не стал сравнивать - не о тех объёмах данных идёт речь, чтобы их туда запихивать. А вот, для дисков вполне нормально. Поэтому Павел правильно говорит, что заткнуть его трудно, ежели его общая пропускная способность растёт пропорционально количеству добавляемых узлов и в силу того, что суммарная пропускная способность дисков, подключённых к одному узлу ограничена в силу ограниченного количества дисков.

По-моему, так (с).

andrey_anonymousА вот это соображение обычно начинают приводить когда с результатами тестов имеются определенные проблемы - Oracle тоже когда-то так поступала, но в последние годы что-то прекратила :)

На моей памяти ещё ни разу ни один потенциальный клиент не поинтересовался результатами тестов. Задают вопросы типа "а где это работает, на каких объёмах сырых данных, сколько пользователей засыпают базу сложными запросами одновременно, свозите посмотреть на таких клиентов". А по поводу тестов ещё никто не спрашивал, кроме как в этом форуме.

Вы когда машину покупаете, наверное, интересуетесь у друзей, не до какой скорости её разогнали на дне соляного озера, а как им на ней ездится в реальной жизни?


andrey_anonymousОбязательно писать на диск?! АФАИР, речь шла о небольшой таблице, ведущей в соединении... Я понимаю зачем писать на диск если не хватает памяти. Но писать всегда?
Хм...
Предлагаю для определенности называть перераспределением все-таки выборку данных и распространение их по интерконнекту на заинтересованные узлы, безусловная запись временного объекта - все-таки скорее имплементация чем принцип.

На диск, конечно, писать обязательно не всегда, но в большинстве случаев, если речь идёт об обработке больших таблиц. Всё-таки, память узла не резиновая - 4ГБ всего, если речб идёт о 10 AMP на узел, то с учётом требований операционки и (ну, например, 500 МБ) каждому из 10 процессов можно рассчитывать примерно на 350 МБ. Понятно, чтьо много туда не запихаешь, только небольшие таблицы. Всё остальное летит на диск.
Хотя в целом, с Вами согласен - можно для общности обсуждения принять Ваше определение.


andrey_anonymousЗнаете, Константин, я не верю в чудеса. Независимо от стоимости операции должен быть CPU, который эту операцию выполнит. И немножечко RAM для буферизации. Хоть горшком обзовите, но оно должно быть.

Как уже сказано выше, bynet имеет такие элементы.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34075421
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousНе хотелось бы прямо сейчас делать специальный тесткейс на parallel, но что-то подобное можно увидеть тут.
Готов прокомментировать выбор поста если что-то останется непонятно.

Ага. Не очень понятно, в каком месте там параллельная сортировка. Я слаб в чтении планов запросов от Oracle, извините.

И если простой запрос сделать типа

Код: plaintext
SELECT val FROM ane_test ORDER BY val ASC

То как будет выполняться параллельная сортировка?

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34075449
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousФункция от чего? Очень интересно, как именно терадата найдет нужную строку за одно чтение.
Если я правильно понял, то на оракеле аналогичное поведение продемонстрирует однотабличный хеш-кластер, но цена вопроса - производительность некоторых операций DML

Функция от значения столбца (комбинации значений столбцов), выступающего в роли первичного индекса. Когда Терадата выполняет INSERT, то значение уникального первичного индекса хешируется, в результате, получается значение, указывающее на то, какой AMP будет деражать у себя эту строку. Далее спомощью структуры, напоминающей отдалённо трёхуровневое дерево, запись размещается в нужное место диска. Эта структура с болшой вероятностью хранится в памяти. Далее при считывании происходит обратная процедура - значение константы, находящейся в условии WHERE первичный индекс = константа, хэшируется. При этом Терадата определяет, какой AMP отвечает за хранение этой записи и обращается к нему с просьбой найти такую запись. Используя резидентную структуру AMP определяет физическое местоположение записи на диске (точнее, блок, в котором эта запись лежит), дальше читается блок и запись из него выбирается. Получается одно чтение с диска.


andrey_anonymousВот именно эффективность-то как раз и под вопросом, на то он и Ad-Hoc :)

Вот и я о том же - в случае ад-хок возможен запрос, который не попадает в индекс (скажем, есть широкая таблица с клиентами, по любому из полей которой может понадобится выборка). При этом нужно уметь эффективно параллельно делать фул скан. В этом плане с Терадатой трудно соревноваться. Уж очень быстро она это умеет делать.


andrey_anonymousЕсли вернетесь к рассматриваемому кейсу то увидите, что это как раз один из тех немногих сценариев, когда кэш на терабайте будет эффективен.

Покажите, для меня не очевидно.


andrey_anonymousТут Вы оспариваете как раз подход TeraData. Чуть выше по топику речь шла о том, что для эффективной работы интерконнекта производительность ввода-вывода в терадате искусственно ограничена.
А в shared disk наоборот - поднимают как могут, все диски заставляют работать в параллель.

Не совсем так - пропускная способность интерконнекта не разгоняется в силу отсутствия в этом необходимости из-за того, что пропускная способность дисков суть - константа. Вместе с ростом скорости дисков, bynet тоже по необходимости разгоняли.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34075493
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский andrey_anonymousЧто же это за чудо такое, что его "в принципе" сложно заткнуть? Интерконнект с диспетчеризацией и прочими наворотами, пропускная способность которого превышает пропускную способность RAM в несколько раз?Плюс "прочие навороты" в виде интеллекта, необходимого для выполнения операции merge, которая обсуждалась выше. Плюс механизмы обеспечения надёжности (двойное резервирование), плюс самоконфигурируемость (актуально для больших систем - не надо настраивать ручками).Это специальное выделенное оборудование или реализуется средствами обычных узлов? Константин ЛисянскийВы когда машину покупаете, наверное, интересуетесь у друзей, не до какой скорости её разогнали на дне соляного озера, а как им на ней ездится в реальной жизни?
Неудачный пример - при покупке авто я самое пристальное внимание уделяю результатам крэш-тестов, сравнительным тестам приличных изданий и прочим источникам информации. Друзьям - в последнюю очередь, просто ввиду их принципиальной субъективности :)
Константин ЛисянскийАга. Не очень понятно, в каком месте там параллельная сортировка. Я слаб в чтении планов запросов от Oracle, извините.Ничего страшного, я поясню.
Условие задачи Вы, видимо, прочитали.
Надо отсортировать данные из нескольких разделов и взять N первых.
Изюминка обсуждаемого плана - это отдельная сортировка каждого из разделов, взятие первых N элементов из каждого, sort merge результатов и еще одна отсечка первых N элементов.
Еще один момент: сортировка в разделах совпала с локальным индексом, поэтому физически не выполнялась.
Разумеется, выборки и обработка разделов безусловно параллелятся - в конкретном примере parallel не применялся, поскольку интересовали совсем другие аспекты. Константин ЛисянскийДалее спомощью структуры, напоминающей отдалённо трёхуровневое дерево, запись размещается в нужное место диска. Эта структура с болшой вероятностью хранится в памяти.
Ну то есть обычный доступ к hash-разделу по локальному индексу.
В оракеле принято считать логический ввод-вывод, т.е. три уровня дерева+чтение блока - четыре логических чтения. Физических от нуля до четырех, наиболее вероятно - одно-два.
Ничего оригинального тут нет. Константин ЛисянскийПри этом нужно уметь эффективно параллельно делать фул скан. В этом плане с Терадатой трудно соревноваться. Уж очень быстро она это умеет делать.
Пока я так и не увидел чего-то такого, что давало бы TeraData безусловное преимущество. Очень быстро - за счет чего?
Вряд ли быстрее чем disk io... Константин ЛисянскийПокажите, для меня не очевидно.Я могу ошибаться, но в данном случае в shared-disk отдельные узлы будут делать запросы к относительно недалеко расположенным блокам. При этом с учетом ширины страйпа вероятность того, что один из узлов поднимет в кэш данные, которые будут тут же затребованы другим не самая маленькая. То есть shared disk не должен проиграть shared-nothing на параллельном чтении на равном количестве дисков.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34075674
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousЭто специальное выделенное оборудование или реализуется средствами обычных узлов?

И то идругое. Вставляется в узлы в виде PCI-адаптеров, плюс ещё дополнительные внешние коммутаторы. Плюс, естественно, софт для управления всем этим, который частично работает на узле, и частично на самой железяке.


andrey_anonymousНеудачный пример - при покупке авто я самое пристальное внимание уделяю результатам крэш-тестов, сравнительным тестам приличных изданий и прочим источникам информации. Друзьям - в последнюю очередь, просто ввиду их принципиальной субъективности :)

Понятно. Очевидно, краш-тесты автомобилей более-менее приближены к реальным условиям столкновений.
В случае тестов TPC это далеко не так. Там таблиц в схеме намного меньше, чем можно джойнов в запросе сделать.

andrey_anonymousНичего страшного, я поясню.
Условие задачи Вы, видимо, прочитали.
Надо отсортировать данные из нескольких разделов и взять N первых.
Изюминка обсуждаемого плана - это отдельная сортировка каждого из разделов, взятие первых N элементов из каждого, sort merge результатов и еще одна отсечка первых N элементов.
Еще один момент: сортировка в разделах совпала с локальным индексом, поэтому физически не выполнялась.
Разумеется, выборки и обработка разделов безусловно параллелятся - в конкретном примере parallel не применялся, поскольку интересовали совсем другие аспекты.

Понятно. Ну, тогда это пример, на мой взгляд не показателен для данной дискуссии. Хотя, наверное, в качестве разминки для ума подойдёт.

andrey_anonymousНу то есть обычный доступ к hash-разделу по локальному индексу.
В оракеле принято считать логический ввод-вывод, т.е. три уровня дерева+чтение блока - четыре логических чтения. Физических от нуля до четырех, наиболее вероятно - одно-два.
Ничего оригинального тут нет.

Ясно. Кстати, оптимизатор при выборе стратегий считает логический ввод-вывод или физический? По-моему, если логический, это не совсем правильно. Разница может быть ощутимой.

andrey_anonymousПока я так и не увидел чего-то такого, что давало бы TeraData безусловное преимущество. Очень быстро - за счет чего?
Вряд ли быстрее чем disk io...

Элементарно. Терадата конфигурируется всегда с большим количеством дисков. Допустим, на одном узле 10 единиц параллелизма (AMP, в терминах Терадата). Это означает, что к нему будет присоединено 10 лочических дисковых зеркальных пар. По факту, логическая пара может состоять из 4 дисков. Таким образом, к узлу может быть присоединено до 40 дисков.
Возьмём систему начального уровня в 10 узлов. Это 100 единиц параллелизма и 400 дисков. Каждая единица параллелизма занимается обработкой своего кусочка таблицы, которая хешированием равномерно размазывается между ними.
Допустим, мы имеем дело с фулл-сканом таблицы в 1 миллиард записей. После хеширования каждый AMP получает по 1 сотой такой таблицы, то есть по 10 миллионов записей. Что такое 10 миллионов записей в режиме full scan? Копейки.


andrey_anonymousЯ могу ошибаться, но в данном случае в shared-disk отдельные узлы будут делать запросы к относительно недалеко расположенным блокам. При этом с учетом ширины страйпа вероятность того, что один из узлов поднимет в кэш данные, которые будут тут же затребованы другим не самая маленькая. То есть shared disk не должен проиграть shared-nothing на параллельном чтении на равном количестве дисков.

Я немного не понял, при чём тут страйпы, но базовая идея такая - если у Вас shared disk, то, как бы Вы не старались, всегда найдутся два параллельных процесса, которые захотят читать из разных блоков диска (или писать туда). Кто-то будет должен дождаться. В случае shared nothing общего диска нет, поэтому степень праллелизма по дискам всегда будет выше. Даже при одинаковом количестве дисков. Кстати, нужно ещё поискать такую аппаратную платформу, на которой работает Оракл с таким количеством дисков, чтобы она сравнилась со средней конфигурацией Терадата (возьмём к примеру, систему из 50 узлов - это 100 процессоров, 2 Терабайта ОЗУ, и 2 тысячи дисков, если я правильно сосчитал). Тут уже разговор переходит в практическую плоскость. Где она такая железка? Это, кстати, к вопросу о масштабируемости.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34076033
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский

Элементарно. Терадата конфигурируется всегда с большим количеством дисков. ..
Это 100 единиц параллелизма и 400 дисков.

А что мешает Оракл, или, скажем, DB2 сконфигурировать с 400 дисками?

Константин Лисянский
Я немного не понял, при чём тут страйпы, но базовая идея такая - если у Вас shared disk, то, как бы Вы не старались, всегда найдутся два параллельных процесса, которые захотят читать из разных блоков диска (или писать туда). Кто-то будет должен дождаться.
А что, на Терадате можно только по одному запросу за раз запускать? :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34076328
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский andrey_anonymousЭто специальное выделенное оборудование или реализуется средствами обычных узлов?
И то идругое. Вставляется в узлы в виде PCI-адаптеров, плюс ещё дополнительные внешние коммутаторы. Плюс, естественно, софт для управления всем этим, который частично работает на узле, и частично на самой железяке.
Эта штука жестко завязана на TeraData или может быть использована отдельно? Константин Лисянский andrey_anonymousНеудачный пример - при покупке авто я самое пристальное внимание уделяю результатам крэш-тестов, сравнительным тестам приличных изданий и прочим источникам информации. Друзьям - в последнюю очередь, просто ввиду их принципиальной субъективности :)Понятно. Очевидно, краш-тесты автомобилей более-менее приближены к реальным условиям столкновений.В той же мере, в какой TPC приближены к "реальной жизни".
Тут проблема в том, что две одинаковых "реальных жизни" в природе встретить очень сложно. Поэтому проще внести поправки относительно показателей, полученных на некоторой референсной методике, чем гадать как проявит себя "реальная" жизнь в конкретном окружении под конкроетной задачей. Константин Лисянский andrey_anonymousРазумеется, выборки и обработка разделов безусловно параллелятся - в конкретном примере parallel не применялся, поскольку интересовали совсем другие аспекты.
Понятно. Ну, тогда это пример, на мой взгляд не показателен для данной дискуссии.Как хотите. На мой взгляд показателен именно в том смысле, что оптимизатор oracle воспринимает и обрабатывает разделы таблицы как независимые наборы данных и имеет механизмы для объединения результатов. Константин Лисянский andrey_anonymousВ оракеле принято считать логический ввод-вывод, т.е. три уровня дерева+чтение блока - четыре логических чтения. Физических от нуля до четырех, наиболее вероятно - одно-два.
Ничего оригинального тут нет.
Ясно. Кстати, оптимизатор при выборе стратегий считает логический ввод-вывод или физический? По-моему, если логический, это не совсем правильно. Разница может быть ощутимой.Оптимизатор у оракеля достаточно сложен.
Расчет ведется по LIO, но оценки стоимости зависят и от вероятности встретить нужные блоки индекса в буферном кэше, и от количества блоков, считываемых при FTS за одну операцию ввода-вывода, и от соотношения времени считывания такого "пакета" к физическому чтению одного блока (обычно блок индекса при кэш-промахе).
Поэтому, на мой взгляд, в проигрыше тут TeraData, если, конечно, не умеет оценить влияние кэш-промахов при выборе индексного метода доступа (а это можно сделать если считать именно LIO). Константин Лисянский andrey_anonymousПока я так и не увидел чего-то такого, что давало бы TeraData безусловное преимущество. Очень быстро - за счет чего?
Вряд ли быстрее чем disk io...Элементарно. Терадата конфигурируется всегда с большим количеством дисков.
Возьмём систему начального уровня в 10 узлов. Это 100 единиц параллелизма и 400 дисков. Каждая единица параллелизма занимается обработкой своего кусочка таблицы, которая хешированием равномерно размазывается между ними.:)
В таких условиях и oracle справится с 1млрд не дороже терадаты - берем 10 10-процессорных SMP машин, 400 дисков, соответствующим образом проектируем базу...
И ведь тоже, зараза, распараллелит :)
Выходит, все преимущество TeraData - в железках? Константин Лисянский
andrey_anonymousТо есть shared disk не должен проиграть shared-nothing на параллельном чтении на равном количестве дисков.но базовая идея такая - если у Вас shared disk, то, как бы Вы не старались, всегда найдутся два параллельных процесса, которые захотят читать из разных блоков диска (или писать туда). Кто-то будет должен дождаться. В случае shared nothing общего диска нет, поэтому степень праллелизма по дискам всегда будет выше.

Боюсь, тут все не так просто.
- конкурирующие сессии (многопользовательское окружение) создадут те же самые проблемы для TeraData.
- на shared disk можно при желании собрать систему, распределяющую и обрабатывающую данные похожим на shared-nothing способом, а вот обратное неверно, следовательно, shared nothing by design решает более узкий класс задач.
Константин ЛисянскийКстати, нужно ещё поискать такую аппаратную платформу, на которой работает Оракл с таким количеством дисков, чтобы она сравнилась со средней конфигурацией Терадата (возьмём к примеру, систему из 50 узлов - это 100 процессоров, 2 Терабайта ОЗУ, и 2 тысячи дисков, если я правильно сосчитал). Тут уже разговор переходит в практическую плоскость. Где она такая железка? Это, кстати, к вопросу о масштабируемости.
Первое что приходит в голову - ЦОД Oracle в Техасе.
Счет узлам идет на тысячи, если не на десятки тысяч.
Обслуживает все филиалы Oracle по миру + сдает приложения в аренду.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34076495
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Первое что приходит в голову - ЦОД Oracle в Техасе.
Счет узлам идет на тысячи, если не на десятки тысяч.

Там имхо в рекламке не сказано, что все эти тыщщи узлов - это одна БД...

Ну и вот ещё навскидку про применение RAC в DWH:
http://www.dba-oracle.com/t_rac_clusters_data_warehouse.htm
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34076518
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeТам имхо в рекламке не сказано, что все эти тыщщи узлов - это одна БД...
Уверен что не одна.
Oracle clusterware, АФАИК, поддерживает не более сотни узлов.
Далее только объединять несколько систем в распределенную БД.
Однако "вендрский" clusterware еще скромнее в этом отношении.
Полагаю, что если что-то в TeraData и есть - то это тот самый байнет, заменяющий, опять-таки если я правильно понял, этот самый clusterware
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34076602
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык вроде байнет-это собсно среда передачи данных, ну может со своим протоколом, ибо tcp/ip в надёжной локальной сети-дорого и ненужно...

А clusterware-это библиотечки, обеспечивающие всякое там membership services..

В общем, хотелось бы услышать суть-чем "закрытое" решение от Терадаты лучше, чем та же DB2 DPF на commodity компонентах - каких-нибудь Оптеронах, что ли, с Infiniband.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34076629
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeДык вроде байнет-это собсно среда передачи данных, ну может со своим протоколомПолучается что не просто СПД, если еще и SMJ делает :)
Плюс объединение сотен узлов - подобного clusterware я не знаю. kmikeВ общем, хотелось бы услышать суть-чем "закрытое" решение от Терадаты лучше, чем та же DB2 DPF на commodity компонентах - каких-нибудь Оптеронах, что ли, с Infiniband.
Мне тоже интересно, вот и выспрашиваю который пост - но нас уже двое :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34077039
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Далось вам это clusterware... DB2, если уж на то пошло, может вообще без него жить, насколько я понимаю. Clusterware типа HACMP там обеспечивает в основном HA, а не функционирование всей системы в целом, и это хорошо, ИМХО :)

Никто ж не мешает сконфигурировать, например, 128-узловую систему DB2 в виде 4х кластеров по 32 узла.

Пропускная способность Bynet как-то тоже не впечатляет на фоне Infiniband, которых, к тому же, в каждый узел можно натыкать много :)

В общем, вопрос о преимуществах Teradata открыт :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34077091
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeНикто ж не мешает сконфигурировать, например, 128-узловую систему DB2 в виде 4х кластеров по 32 узла.
Мне кажется, это должно быть больше похоже на распределенную БД.
Впрочем, я мало знаю про DB2 - можно в такой системе создать единственную таблицу, которая разляжется на все имеющиеся носители и будет прозрачно (т.е. без дополнительных телодвижений со стороны приложения) обрабатываться?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34077226
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отож. В смысле, можно.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34077234
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeОтож. В смысле, можно.
А что будет если одна из 32-процессорных систем недоступна?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34077265
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если запросу понадобятся данные, находящиеся на недоступном узле-то оппа.
Для этого и существует например HACMP, чтобы запустить упавшую партицию на другом узле.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078597
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeА что мешает Оракл, или, скажем, DB2 сконфигурировать с 400 дисками?

Ну, DB2 - это отдельный разговор. У них та же архитектура shared nothing, и, к слову сказать, они и являются основным конкурентом Терадаты в области хранилищ данных.

Но, Вы правы - и то и другое можно сконфигурировать с болшим количеством дисков.
Вопрос дальше - как размазывать таблицы по всему этому хозяйству, и в какой мере это помогает параллелизму в Оракл.


kmikeА что, на Терадате можно только по одному запросу за раз запускать? :)

Ага, вроде того :)

andrey_anonymousЭта штука жестко завязана на TeraData или может быть использована отдельно?

Разработана специально для Терадаты и используется вместе с ней.
По-моему, в своё время Informix XPS тоже работал на серверах с bynet, но это в прошлом тысячелетии.


andrey_anonymousВ той же мере, в какой TPC приближены к "реальной жизни".
Тут проблема в том, что две одинаковых "реальных жизни" в природе встретить очень сложно. Поэтому проще внести поправки относительно показателей, полученных на некоторой референсной методике, чем гадать как проявит себя "реальная" жизнь в конкретном окружении под конкроетной задачей.

Хромает методика референсная. Если взять, кпримеру, проблему соединения 10 таблиц, то там уже такая комбинаторика, что если оптимизатор не использует эвристические подходы для отбрасывания заведомо дорогих вариантов. На маленьком количестве джойнов, оптимизатор не ставится в такие условия. В реальной же жизни больше 10 джойнов - это ежедневные запросы в хранилищах.

andrey_anonymousКак хотите. На мой взгляд показателен именно в том смысле, что оптимизатор oracle воспринимает и обрабатывает разделы таблицы как независимые наборы данных и имеет механизмы для объединения результатов.

Это, конечно, здорово, но к параллелизму не вижу как относится. Где параллельная сортировка и параллельные джойны?


andrey_anonymousОптимизатор у оракеля достаточно сложен.
Расчет ведется по LIO, но оценки стоимости зависят и от вероятности встретить нужные блоки индекса в буферном кэше, и от количества блоков, считываемых при FTS за одну операцию ввода-вывода, и от соотношения времени считывания такого "пакета" к физическому чтению одного блока (обычно блок индекса при кэш-промахе).
Поэтому, на мой взгляд, в проигрыше тут TeraData, если, конечно, не умеет оценить влияние кэш-промахов при выборе индексного метода доступа (а это можно сделать если считать именно LIO).

Оптимизатор Терадата учитывает физические параметры системы, на которой она работает, то есть частоту процессоров, скорость вращения жёстких дисков, пропускную способность bynet. К примеру, один и тот же запрос на системе одного размера при прочих равных может быть выполнен по-разному (например, будут выбраны разные алгоритмы джойнов). Вряд ли Оракл так умеет. Так как он весь из себя переносимый и должен работать на всём, включая утюги и электрочайники :), он и оперирует логическими показателями, что на мой взгляд есть недостаток.
Кстати, несмотря на то, что оптимизатор "достаточно сложен", я так понимаю, народ его зинтует безбожно. В то время, как в Терадате хинтов вообще никогда не было. Типа, настоящий cost-based optimizer.

andrey_anonymousВ таких условиях и oracle справится с 1млрд не дороже терадаты - берем 10 10-процессорных SMP машин, 400 дисков, соответствующим образом проектируем базу...
И ведь тоже, зараза, распараллелит :)
Выходит, все преимущество TeraData - в железках?

Распараллелит, но как? Это к вопросу про показать план запроса.
Не совсем в железках - это всё вместе, и железки и софт. Аппаратно-программный комплекс.



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078624
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousБоюсь, тут все не так просто.
- конкурирующие сессии (многопользовательское окружение) создадут те же самые проблемы для TeraData.


Несомненно, многопользовательское окружение создаёт неудобства любой СУБД. Однако, в случае разделяемых ресурсов, конкуренция за них сильнее. По-моему, это достаточно очевидно.
Тут вопрос сравнения архитектур заключается в том, насколько накладные на постоянное перемещение данных по интерконнекту отличаются от накладных по борьбе за разделяемый ресурс.

andrey_anonymous- на shared disk можно при желании собрать систему, распределяющую и обрабатывающую данные похожим на shared-nothing способом

А это как же? Вижу противоречие. Вроде бы разные принципы - в одном случае интерконнект нужен, в другом - общие диски.


andrey_anonymousа вот обратное неверно, следовательно, shared nothing by design решает более узкий класс задач.

Прямо в точку. Терадата не позиционировалась никогда как OLTP, она изначально позиционировалась как СУБД для хранилищ данных, в то время как Оракл - наоборот изначально дизайнился как OLTP. Только потом начали вводить разные фичи для поддержки хранилищ данных, но это с недавнего времени по сравнению с временем жизни Терадаты.

kmikeВ общем, хотелось бы услышать суть-чем "закрытое" решение от Терадаты лучше, чем та же DB2 DPF на commodity компонентах - каких-нибудь Оптеронах, что ли, с Infiniband

Не поянл термина "закрытое" решение. Вроде бы открытость определяется тем, как это решение может взаимодействовать с другими системами. Здесь полный спектр отурытости - самый ансишный SQL (в отличие от всяких там диалектов), полный набор connectivity (CLI, ODBC, JDBC, OLE DB и иже с ними).

С точки хрения commodity компонент - узлы Терадата - это двухпроцессорные SMP серверы на проwессорах Intel. А что касается интерконнекта - так это, на мой взгляд не совсем commodity.

Сравнивать Терадату с DB2 здесь достаточно сложно - я в деталях не знаком с реализацией массивно-параллельной архитектуры DB2. Есть определённые вещи типа меньшее количество хэш-партиций, чем в Терадате (потенциально более сильный перекос в данных), использование хэш только для распределения данных, но не для доступа, как в Терадате (то есть нужны лишние индексы), необходимость в узле-координаторе (узкое место), тогда, как в Терадате он не нужен. Поправьте, если я что-то не то назвал.

kmikeПропускная способность Bynet как-то тоже не впечатляет на фоне Infiniband, которых, к тому же, в каждый узел можно натыкать много :)

Ещё раз хочу подчеркнуть, можно было бы и больше, но зачем, если это - не узкое место. Можно, конечно, потратиться, и забить все слоты этим infinibandom, но диски отэтого быстрее крутиться не станут.

kmikeВ общем, вопрос о преимуществах Teradata открыт :)
Что делает даннцю дискуссию очень интересной, не так ли? :)

kmikeНу если запросу понадобятся данные, находящиеся на недоступном узле-то оппа.
Для этого и существует например HACMP, чтобы запустить упавшую партицию на другом узле.

В Терадате такая хрень называется клика - объединение нескольких узлов, имеющих доступ к дискам соседних узлов для того, чтобы иметь возможность перезапустить умершие на одном узле процессы.
Помимо того есть фича, которой в других СУБД я не наблюдал. Называется fallback - это дублирование таблицы на разных узлах. Спасает от выхода из строя целой клики (как правило, в клике 8 узлов).



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078627
andrey_anonymousВ таких условиях и oracle справится с 1млрд не дороже терадаты - берем 10 10-процессорных SMP машин, 400 дисков, соответствующим образом проектируем базу...
И ведь тоже, зараза, распараллелит :)
Если почитать документацию по 10g, то не все выглядит так радужно. Для паралельного выполнения запросов нужно использовать partitioning. Чтобы обеспечить равномерную загрузку узлов, надо равномерно распределить данные между партициями, т.е. придется использовать hash partitioning (прощаемся с partitioning elimination), причем число партиций должно быть кратно степени 2 и количеству узлов. А теперь расскажите, как вы обеспечите равномерную загрузку 10 узлов, если 10 не является степенью 2?
Ну допустим подобрали partitioning с равномерным распредлением данных под конкретный join, а потом нужно сделать join по другой колонке, не по той, для которой partitioning планировали, что делать?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078664
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousВ таких условиях и oracle справится с 1млрд не дороже терадаты - берем 10 10-процессорных SMP машин, 400 дисков, соответствующим образом проектируем базу...
И ведь тоже, зараза, распараллелит :)

Ага. На каждую таблицу пишем вот такой create (по материалам любимого теста TPC-H):

Код: 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.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.
923.
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.
941.
942.
943.
944.
945.
946.
947.
948.
949.
950.
951.
952.
953.
954.
955.
956.
957.
958.
959.
960.
961.
962.
963.
964.
965.
966.
967.
968.
969.
970.
971.
972.
973.
974.
975.
976.
977.
978.
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.
995.
996.
997.
998.
999.
1000.
1001.
1002.
1003.
1004.
1005.
1006.
1007.
1008.
1009.
1010.
1011.
1012.
1013.
1014.
1015.
1016.
1017.
1018.
1019.
1020.
1021.
1022.
1023.
1024.
1025.
1026.
1027.
1028.
1029.
1030.
1031.
1032.
1033.
1034.
1035.
1036.
1037.
1038.
1039.
1040.
1041.
1042.
1043.
1044.
1045.
1046.
1047.
1048.
1049.
1050.
1051.
1052.
1053.
1054.
1055.
1056.
1057.
1058.
1059.
1060.
1061.
1062.
1063.
1064.
1065.
1066.
1067.
1068.
1069.
1070.
1071.
1072.
1073.
1074.
1075.
1076.
1077.
1078.
1079.
1080.
1081.
1082.
1083.
1084.
1085.
1086.
1087.
1088.
1089.
1090.
1091.
1092.
1093.
1094.
1095.
1096.
1097.
1098.
1099.
1100.
1101.
1102.
1103.
1104.
1105.
1106.
1107.
1108.
1109.
1110.
1111.
1112.
1113.
1114.
1115.
1116.
1117.
1118.
1119.
1120.
1121.
1122.
1123.
1124.
1125.
1126.
1127.
1128.
1129.
1130.
1131.
1132.
1133.
1134.
1135.
1136.
1137.
1138.
1139.
1140.
1141.
1142.
1143.
1144.
1145.
1146.
1147.
1148.
1149.
1150.
1151.
1152.
1153.
1154.
1155.
1156.
1157.
1158.
1159.
1160.
1161.
1162.
1163.
1164.
1165.
1166.
1167.
1168.
1169.
1170.
1171.
1172.
1173.
1174.
1175.
1176.
1177.
1178.
1179.
1180.
1181.
1182.
1183.
1184.
1185.
1186.
1187.
1188.
1189.
1190.
1191.
1192.
1193.
1194.
1195.
1196.
1197.
1198.
1199.
1200.
1201.
1202.
1203.
1204.
1205.
1206.
1207.
1208.
1209.
1210.
drop table lineitem;
create table lineitem(
l_shipdate date,
l_orderkey number NOT NULL,
l_discount number NOT NULL,
l_extendedprice number NOT NULL,
l_suppkey number NOT NULL,
l_quantity number NOT NULL,
l_returnflag char( 1 ),
l_partkey number NOT NULL,
l_linestatus char( 1 ),
l_tax number NOT NULL,
l_commitdate date,
l_receiptdate date,
l_shipmode char( 10 ),
l_linenumber number NOT NULL,
l_shipinstruct char( 25 ),
l_comment varchar( 44 )
)
pctfree  1 
pctused  99 
initrans  10 
storage (initial 1m next 16m pctincrease  0  freelist groups  8  freelists  99 )
compress
parallel  256 
nologging
partition by range (l_shipdate)
subpartition by hash(l_partkey)
subpartitions  256 
(
partition item1 values less than (to_date('1992-01-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item2 values less than (to_date('1992-02-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item3 values less than (to_date('1992-03-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item4 values less than (to_date('1992-04-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item5 values less than (to_date('1992-05-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item6 values less than (to_date('1992-06-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item7 values less than (to_date('1992-07-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item8 values less than (to_date('1992-08-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item9 values less than (to_date('1992-09-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item10 values less than (to_date('1992-10-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item11 values less than (to_date('1992-11-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item12 values less than (to_date('1992-12-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item13 values less than (to_date('1993-01-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item14 values less than (to_date('1993-02-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item15 values less than (to_date('1993-03-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
HP BladeSystem 64P - TPC Benchmark H FDR.doc
©  2006  Hewlett Packard Company. All rights reserved  43 
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item16 values less than (to_date('1993-04-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item17 values less than (to_date('1993-05-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item18 values less than (to_date('1993-06-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item19 values less than (to_date('1993-07-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item20 values less than (to_date('1993-08-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item21 values less than (to_date('1993-09-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item22 values less than (to_date('1993-10-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item23 values less than (to_date('1993-11-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item24 values less than (to_date('1993-12-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item25 values less than (to_date('1994-01-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item26 values less than (to_date('1994-02-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item27 values less than (to_date('1994-03-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item28 values less than (to_date('1994-04-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item29 values less than (to_date('1994-05-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item30 values less than (to_date('1994-06-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item31 values less than (to_date('1994-07-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item32 values less than (to_date('1994-08-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item33 values less than (to_date('1994-09-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item34 values less than (to_date('1994-10-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item35 values less than (to_date('1994-11-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item36 values less than (to_date('1994-12-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item37 values less than (to_date('1995-01-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item38 values less than (to_date('1995-02-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item39 values less than (to_date('1995-03-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item40 values less than (to_date('1995-04-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item41 values less than (to_date('1995-05-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item42 values less than (to_date('1995-06-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item43 values less than (to_date('1995-07-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item44 values less than (to_date('1995-08-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item45 values less than (to_date('1995-09-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item46 values less than (to_date('1995-10-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item47 values less than (to_date('1995-11-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item48 values less than (to_date('1995-12-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item49 values less than (to_date('1996-01-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item50 values less than (to_date('1996-02-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item51 values less than (to_date('1996-03-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item52 values less than (to_date('1996-04-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item53 values less than (to_date('1996-05-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item54 values less than (to_date('1996-06-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item55 values less than (to_date('1996-07-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item56 values less than (to_date('1996-08-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item57 values less than (to_date('1996-09-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item58 values less than (to_date('1996-10-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item59 values less than (to_date('1996-11-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item60 values less than (to_date('1996-12-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item61 values less than (to_date('1997-01-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item62 values less than (to_date('1997-02-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item63 values less than (to_date('1997-03-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item64 values less than (to_date('1997-04-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item65 values less than (to_date('1997-05-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item66 values less than (to_date('1997-06-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item67 values less than (to_date('1997-07-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item68 values less than (to_date('1997-08-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
HP BladeSystem 64P - TPC Benchmark H FDR.doc
©  2006  Hewlett Packard Company. All rights reserved  47 
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item69 values less than (to_date('1997-09-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item70 values less than (to_date('1997-10-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item71 values less than (to_date('1997-11-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item72 values less than (to_date('1997-12-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item73 values less than (to_date('1998-01-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item74 values less than (to_date('1998-02-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item75 values less than (to_date('1998-03-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item76 values less than (to_date('1998-04-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item77 values less than (to_date('1998-05-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item78 values less than (to_date('1998-06-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item79 values less than (to_date('1998-07-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item80 values less than (to_date('1998-08-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item81 values less than (to_date('1998-09-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item82 values less than (to_date('1998-10-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item83 values less than (to_date('1998-11-01','YYYY-MM-DD'))
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128),
partition item84 values less than (MAXVALUE)
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128)
);


А когда конфигурацию нужно расширить до 20 машин, что делаем?
Выгружаем нафиг все данные, пишем create в два раза длиннее приведённого выше и загружаем всё заново?
Нанимаем дюжину админов, которые за этим всем будут присматривать и платим им безумные деньги - они же квалифицированные администраторы Оракл :)



К слову в Терадате вышеприведённый create будет выглядеть примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table lineitem(
l_shipdate date,
l_orderkey number NOT NULL,
l_discount number NOT NULL,
l_extendedprice number NOT NULL,
l_suppkey number NOT NULL,
l_quantity number NOT NULL,
l_returnflag char( 1 ),
l_partkey number NOT NULL,
l_linestatus char( 1 ),
l_tax number NOT NULL,
l_commitdate date,
l_receiptdate date,
l_shipmode char( 10 ),
l_linenumber number NOT NULL,
l_shipinstruct char( 25 ),
l_comment varchar( 44 )
)
PRIMARY INDEX (l_partkey)
PARTITION BY RANGE_N(
l_shipdate BETWEEN DATE '1992-01-01' AND DATE '1998-12-31'
EACH INTERVAL '1' DAY, NO RANGE, UNKNOWN);

Терадата сама всё размажет и создаст нужные партиции. Ручками ничего создавать не надо. Удобно, правда?


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078706
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymousВ таких условиях и oracle справится с 1млрд не дороже терадаты - берем 10 10-процессорных SMP машин, 400 дисков, соответствующим образом проектируем базу...
И ведь тоже, зараза, распараллелит :)
Если почитать документацию по 10g, то не все выглядит так радужно. Для паралельного выполнения запросов нужно использовать partitioning.
1) Для parallel DML. Для select - совершенно необязательно.
2) Ну и чем это будет отличаться от терадаты? Андрей Прохоров Чтобы обеспечить равномерную загрузку узлов, надо равномерно распределить данные между партициями, т.е. придется использовать hash partitioning (прощаемся с partitioning elimination)Мне казалось, что все сравнение крутится вокруг "быстро сделать full scan таблицы на миллиард записей". Какой тут partition pruning, Вы о чем? Андрей Прохоров, причем число партиций должно быть кратно степени 2 и количеству узлов.А это уже полная ересь.
Андрей Прохоров А теперь расскажите, как вы обеспечите равномерную загрузку 10 узлов, если 10 не является степенью 2?Сами ерунду выдумали, сами и выкручивайтесь Андрей ПрохоровНу допустим подобрали partitioning с равномерным распредлением данных под конкретный join, а потом нужно сделать join по другой колонке, не по той, для которой partitioning планировали, что делать?
См. выше по дискуссии, вопрос обсуждался. Существенной разницы относительно TeraData не обнаружено.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078707
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийНа каждую таблицу пишем вот такой create (по материалам любимого теста TPC-H):
Константин, я уверен, что в полном синтаксисе да еще с изрядной долей экстремизма в TeraData create можно написать ничуть не менее страшный
Вот только для решения задачи так много писать не надо.
Теперь про добавление узлов.
Тут, простите, Вы сами напросились - я специально не поднимал вопрос.
В TeraData придется физически переразмещать данные между узлами - значит, исходя из миллиарда записей, проканителимся недельку-другую :)
В oracle ничего никуда выгружать не надо .
Просто добавим узлы.
Если есть желание добавить разделов, то говорим alter table add/split partition.
Процессы не связанные сами по себе, кроме того, операции с разделами не требуют ограничения доступа пользователей ко всей таблице :Р
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078744
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский kmikeА что мешает Оракл, или, скажем, DB2 сконфигурировать с 400 дисками?

Ну, DB2 - это отдельный разговор. У них та же архитектура shared nothing, и, к слову сказать, они и являются основным конкурентом Терадаты в области хранилищ данных.
Ну дык чем оно тогда радикально отличается от Терадаты? Вот в чём вопрос-то...

Константин Лисянский
Но, Вы правы - и то и другое можно сконфигурировать с болшим количеством дисков.
Вопрос дальше - как размазывать таблицы по всему этому хозяйству, и в какой мере это помогает параллелизму в Оракл.

Дык в предельно упрощённом случае - SAME (stripe and mirror everything). Если уж совсем не заморачиваться. Вот только что проверил-0.58ГБ/c при сканировании таблицы, на довольно стареньком уже железе.

Константин Лисянский
Это, конечно, здорово, но к параллелизму не вижу как относится. Где параллельная сортировка и параллельные джойны?

Параллельная сортировка в Оракле точно есть.

Константин Лисянский
Оптимизатор Терадата учитывает физические параметры системы, на которой она работает, то есть частоту процессоров, скорость вращения жёстких дисков, пропускную способность bynet. К примеру, один и тот же запрос на системе одного размера при прочих равных может быть выполнен по-разному (например, будут выбраны разные алгоритмы джойнов). Вряд ли Оракл так умеет.

А нафига ему знать скорость вращения дисков? В DB2 для табличных пространств задаются 2 параметра, участвующих в расчёте стоимости: OVERHEAD и TRANSFERRATE, скорость процессора и пропускную способность сети оно тоже знает.

Константин Лисянский
Не совсем в железках - это всё вместе, и железки и софт. Аппаратно-программный комплекс.

Сейчас набегут борцы за снижение TCO и начнут кричать "single vendor lock-in!" и будут в чём-то правы :)
Опять тот же вопрос-какие преимущества даёт этот комплекс? Могу ли я для увеличения пропускной способности воткнуть Infiniband карточки в узлы? А по 7 штук в узел для обеспечения связи каждого узла с каждым в конфигурации из 8 узлов? Или проапгрейдить сеть на ещё более быструю?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34078760
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский
Оракл - наоборот изначально дизайнился как OLTP.

Странно, а я тут давеча читал научно-фантастическую книжку "Everyone else must fail" про Эллисона, дык там пишут, что Оракл стали затачивать под OLTP только после того, как их нагнул Sybase, и была это примерно версия 7...

Константин Лисянский
Не поянл термина "закрытое" решение.
..
С точки хрения commodity компонент - узлы Терадата - это двухпроцессорные SMP серверы на проwессорах Intel. А что касается интерконнекта - так это, на мой взгляд не совсем commodity.

Ну я имел в виду то, что необязательно покупать всё решение у одного поставщика. И возможность перелезть на другое железо в случае чего. Пользователям каких-нибудь HP-PA это должно быть близкО :)
Ну и стандартный интерконнект тоже плюс - вдруг придётся расти. Или место в серверной кончится и придётся выносить новые узлы в другое здание (реальный случай). С GigE в этом случае, естессно, халява.
Кстати, какое ограничение на длину шнурка у bynet?

Константин Лисянский
Есть определённые вещи типа меньшее количество хэш-партиций, чем в Терадате (потенциально более сильный перекос в данных), использование хэш только для распределения данных, но не для доступа, как в Терадате (то есть нужны лишние индексы), необходимость в узле-координаторе (узкое место), тогда, как в Терадате он не нужен. Поправьте, если я что-то не то назвал.

А сколько хэш-партиций у Терадаты?
Насчёт индексов я не очень уверен, что это минус- насколько я понимаю, хэш отрабатывает только строгое равенство. Если использовать этот столбец только для джойнов-тогда да, хэш годится.
Про координатор я не совсем понял... А где у Терадаты происходит объединение результатов, полученных от нескольких узлов? Клиент же цепляется, допустим, по ODBC, только к какому-то одному узлу?

Константин Лисянский
Ещё раз хочу подчеркнуть, можно было бы и больше, но зачем, если это - не узкое место. Можно, конечно, потратиться, и забить все слоты этим infinibandom, но диски отэтого быстрее крутиться не станут.

Можно здесь подробнее? Допустим, есть таблицы T1 и T2 со столбцами A,B,C, и A используется для распределения по узлам. Как будет выполняться join T1 и T2 по условию T1.B=T2.B ?

Константин Лисянский
Помимо того есть фича, которой в других СУБД я не наблюдал. Называется fallback - это дублирование таблицы на разных узлах. Спасает от выхода из строя целой клики (как правило, в клике 8 узлов).

Ну вот это в принципе интересно. Но думаю, что реально только за счёт того, что Терадата заточена строго под DWH. Потому как по определению, это должен быть синхронный процесс, что при OLTP убьёт всю систему сразу. ИМХО.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34079153
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийАга. На каждую таблицу пишем вот такой create (по материалам любимого теста TPC-H):


Требую справедливости
Код: 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.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
drop table lineitem;
create table lineitem(
l_shipdate date,
l_orderkey number NOT NULL,
l_discount number NOT NULL,
l_extendedprice number NOT NULL,
l_suppkey number NOT NULL,
l_quantity number NOT NULL,
l_returnflag char( 1 ),
l_partkey number NOT NULL,
l_linestatus char( 1 ),
l_tax number NOT NULL,
l_commitdate date,
l_receiptdate date,
l_shipmode char( 10 ),
l_linenumber number NOT NULL,
l_shipinstruct char( 25 ),
l_comment varchar( 44 )
)
pctfree  1 
pctused  99 
initrans  10 
storage (initial 1m next 16m pctincrease  0  freelist groups  8  freelists  99 )
compress
parallel  256 
nologging
partition by range (l_shipdate)
subpartition by hash(l_partkey)
subpartitions  256  
store in ( tsd1,tsd2,tsd3,tsd4,tsd5,tsd6,tsd7,tsd8,tsd9,tsd10,tsd11,
tsd12,tsd13,tsd14,tsd15,tsd16,tsd17,tsd18,tsd19,tsd20,tsd21,tsd22,
tsd23,tsd24,tsd25,tsd26,tsd27,tsd28,tsd29,tsd30,tsd31,tsd32,tsd33,
tsd34,tsd35,tsd36,tsd37,tsd38,tsd39,tsd40,tsd41,tsd42,tsd43,tsd44,
tsd45,tsd46,tsd47,tsd48,tsd49,tsd50,tsd51,tsd52,tsd53,tsd54,tsd55,
tsd56,tsd57,tsd58,tsd59,tsd60,tsd61,tsd62,tsd63,tsd64,tsd65,tsd66,
tsd67,tsd68,tsd69,tsd70,tsd71,tsd72,tsd73,tsd74,tsd75,tsd76,tsd77,
tsd78,tsd79,tsd80,tsd81,tsd82,tsd83,tsd84,tsd85,tsd86,tsd87,tsd88,
tsd89,tsd90,tsd91,tsd92,tsd93,tsd94,tsd95,tsd96,tsd97,tsd98,tsd99,
tsd100,tsd101,tsd102,tsd103,tsd104,tsd105,tsd106,tsd107,tsd108,
tsd109,tsd110,tsd111,tsd112,tsd113,tsd114,tsd115,tsd116,tsd117,
tsd118,tsd119,tsd120,tsd121,tsd122,tsd123,tsd124,tsd125,tsd126,
tsd127, tsd128)
(
partition item1 values less than (to_date('1992-01-01','YYYY-MM-DD')),
partition item2 values less than (to_date('1992-02-01','YYYY-MM-DD')),
partition item3 values less than (to_date('1992-03-01','YYYY-MM-DD')),
partition item4 values less than (to_date('1992-04-01','YYYY-MM-DD')),
partition item5 values less than (to_date('1992-05-01','YYYY-MM-DD')),
partition item6 values less than (to_date('1992-06-01','YYYY-MM-DD')),
partition item7 values less than (to_date('1992-07-01','YYYY-MM-DD')),
partition item8 values less than (to_date('1992-08-01','YYYY-MM-DD')),
partition item9 values less than (to_date('1992-09-01','YYYY-MM-DD')),
partition item10 values less than (to_date('1992-10-01','YYYY-MM-DD')),
partition item11 values less than (to_date('1992-11-01','YYYY-MM-DD')),
partition item12 values less than (to_date('1992-12-01','YYYY-MM-DD')),
partition item13 values less than (to_date('1993-01-01','YYYY-MM-DD')),
partition item14 values less than (to_date('1993-02-01','YYYY-MM-DD')),
partition item15 values less than (to_date('1993-03-01','YYYY-MM-DD')),
partition item16 values less than (to_date('1993-04-01','YYYY-MM-DD')),
partition item17 values less than (to_date('1993-05-01','YYYY-MM-DD')),
partition item18 values less than (to_date('1993-06-01','YYYY-MM-DD')),
partition item19 values less than (to_date('1993-07-01','YYYY-MM-DD')),
partition item20 values less than (to_date('1993-08-01','YYYY-MM-DD')),
partition item21 values less than (to_date('1993-09-01','YYYY-MM-DD')),
partition item22 values less than (to_date('1993-10-01','YYYY-MM-DD')),
partition item23 values less than (to_date('1993-11-01','YYYY-MM-DD')),
partition item24 values less than (to_date('1993-12-01','YYYY-MM-DD')),
partition item25 values less than (to_date('1994-01-01','YYYY-MM-DD')),
partition item26 values less than (to_date('1994-02-01','YYYY-MM-DD')),
partition item27 values less than (to_date('1994-03-01','YYYY-MM-DD')),
partition item28 values less than (to_date('1994-04-01','YYYY-MM-DD')),
partition item29 values less than (to_date('1994-05-01','YYYY-MM-DD')),
partition item30 values less than (to_date('1994-06-01','YYYY-MM-DD')),
partition item31 values less than (to_date('1994-07-01','YYYY-MM-DD')),
partition item32 values less than (to_date('1994-08-01','YYYY-MM-DD')),
partition item33 values less than (to_date('1994-09-01','YYYY-MM-DD')),
partition item34 values less than (to_date('1994-10-01','YYYY-MM-DD')),
partition item35 values less than (to_date('1994-11-01','YYYY-MM-DD')),
partition item36 values less than (to_date('1994-12-01','YYYY-MM-DD')),
partition item37 values less than (to_date('1995-01-01','YYYY-MM-DD')),
partition item38 values less than (to_date('1995-02-01','YYYY-MM-DD')),
partition item39 values less than (to_date('1995-03-01','YYYY-MM-DD')),
partition item40 values less than (to_date('1995-04-01','YYYY-MM-DD')),
partition item41 values less than (to_date('1995-05-01','YYYY-MM-DD')),
partition item42 values less than (to_date('1995-06-01','YYYY-MM-DD')),
partition item43 values less than (to_date('1995-07-01','YYYY-MM-DD')),
partition item44 values less than (to_date('1995-08-01','YYYY-MM-DD')),
partition item45 values less than (to_date('1995-09-01','YYYY-MM-DD')),
partition item46 values less than (to_date('1995-10-01','YYYY-MM-DD')),
partition item47 values less than (to_date('1995-11-01','YYYY-MM-DD')),
partition item48 values less than (to_date('1995-12-01','YYYY-MM-DD')),
partition item49 values less than (to_date('1996-01-01','YYYY-MM-DD')),
partition item50 values less than (to_date('1996-02-01','YYYY-MM-DD')),
partition item51 values less than (to_date('1996-03-01','YYYY-MM-DD')),
partition item52 values less than (to_date('1996-04-01','YYYY-MM-DD')),
partition item53 values less than (to_date('1996-05-01','YYYY-MM-DD')),
partition item54 values less than (to_date('1996-06-01','YYYY-MM-DD')),
partition item55 values less than (to_date('1996-07-01','YYYY-MM-DD')),
partition item56 values less than (to_date('1996-08-01','YYYY-MM-DD')),
partition item57 values less than (to_date('1996-09-01','YYYY-MM-DD')),
partition item58 values less than (to_date('1996-10-01','YYYY-MM-DD')),
partition item59 values less than (to_date('1996-11-01','YYYY-MM-DD')),
partition item60 values less than (to_date('1996-12-01','YYYY-MM-DD')),
partition item61 values less than (to_date('1997-01-01','YYYY-MM-DD')),
partition item62 values less than (to_date('1997-02-01','YYYY-MM-DD')),
partition item63 values less than (to_date('1997-03-01','YYYY-MM-DD')),
partition item64 values less than (to_date('1997-04-01','YYYY-MM-DD')),
partition item65 values less than (to_date('1997-05-01','YYYY-MM-DD')),
partition item66 values less than (to_date('1997-06-01','YYYY-MM-DD')),
partition item67 values less than (to_date('1997-07-01','YYYY-MM-DD')),
partition item68 values less than (to_date('1997-08-01','YYYY-MM-DD')),
partition item69 values less than (to_date('1997-09-01','YYYY-MM-DD')),
partition item70 values less than (to_date('1997-10-01','YYYY-MM-DD')),
partition item71 values less than (to_date('1997-11-01','YYYY-MM-DD')),
partition item72 values less than (to_date('1997-12-01','YYYY-MM-DD')),
partition item73 values less than (to_date('1998-01-01','YYYY-MM-DD')),
partition item74 values less than (to_date('1998-02-01','YYYY-MM-DD')),
partition item75 values less than (to_date('1998-03-01','YYYY-MM-DD')),
partition item76 values less than (to_date('1998-04-01','YYYY-MM-DD')),
partition item77 values less than (to_date('1998-05-01','YYYY-MM-DD')),
partition item78 values less than (to_date('1998-06-01','YYYY-MM-DD')),
partition item79 values less than (to_date('1998-07-01','YYYY-MM-DD')),
partition item80 values less than (to_date('1998-08-01','YYYY-MM-DD')),
partition item81 values less than (to_date('1998-09-01','YYYY-MM-DD')),
partition item82 values less than (to_date('1998-10-01','YYYY-MM-DD')),
partition item83 values less than (to_date('1998-11-01','YYYY-MM-DD')),
partition item84 values less than (MAXVALUE)
);
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34079473
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийНо, Вы правы - и то и другое можно сконфигурировать с болшим количеством дисков.
Вопрос дальше - как размазывать таблицы по всему этому хозяйству, и в какой мере это помогает параллелизму в Оракл.
Размазывать можно:
- Руками
- Автоматизированно посредством темплейтов для описания hash subpartitions
- Автоматически, положившись на ASM

Параллелизму способствует в достаточной степени.

Лирическое отступление
До сих пор обсуждение шло в достаточно конструктивном контексте - мы оба (надеюсь) узнавали что-то новое.
Но вчерашние Ваши посты неожиданно наполнились, простите, инсинуациями.
Я физически не смогу опровергнуть каждое ложное утверждение относительно oracle - мне просто не хватит на это ни времени, ни сил.
Поэтому для сохранения прежнего довольно комфортного духа дискуссии прошу все-таки избегать непонятно откуда взявшихся предположений, особенно высказанных в полуутвердительной форме.


Константин Лисянский kmikeА что, на Терадате можно только по одному запросу за раз запускать? :)
Ага, вроде того :)
Надеюсь, это была шутка?
Константин Лисянский andrey_anonymousпроще внести поправки относительно показателей, полученных на некоторой референсной методике, чем гадать как проявит себя "реальная" жизнь в конкретном окружении под конкроетной задачей.
Хромает методика референсная. Если взять, кпримеру, проблему соединения 10 таблиц, то там уже такая комбинаторика, что если оптимизатор не использует эвристические подходы для отбрасывания заведомо дорогих вариантов.
Это не самая большая проблема. По крайней мере для оракеля.
Комбинаторика комбинаторикой, но построение плана требуется только при первом выполнении запроса. При этом оптимизатор ограничен во времени и действительно может не рассмотреть часть вариантов, однако и на эту проблему оракл предлагает решение: есть режим работы оптимизатора, в котором он просто генерирует планы, не думая о временных рамках.
Планы можуг быть сохранены для последующего использования и даже экспортированы на другую БД :)
Эвристика тоже имеет место, но релиз за релизом ее роль падает - она скорее мешает в нетривиальных случаях (вроде того, на который я давал забракованную Вами ссылку).
Константин Лисянский andrey_anonymousКак хотите. На мой взгляд показателен именно в том смысле, что оптимизатор oracle воспринимает и обрабатывает разделы таблицы как независимые наборы данных и имеет механизмы для объединения результатов.Это, конечно, здорово, но к параллелизму не вижу как относится. Где параллельная сортировка и параллельные джойны?
Константин, что за неуместные наезды?
Нате Вам параллельную сортировку:
Код: 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.
SQL> create table ane_t_pj_1(k number primary key, v varchar2( 128 ))
   2   partition by range (k)
   3   ( partition ane_t_pj_1_p1 values less than ( 100 )
   4   , partition ane_t_pj_1_p2 values less than ( 200 )
   5   , partition ane_t_pj_1_p3 values less than ( 300 )
   6   ) parallel  2 ;

Table created

SQL> insert into ane_t_pj_1 select rownum, 'v='||rownum from dual connect by level <  300 ;

 299  rows inserted

SQL> explain plan for select * from ane_t_pj_1 t order by v;

Explained

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------------------------------
Plan hash value:  2080730224 
-----------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation               | Name       | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT        |            |    246  |  66666  |      3   ( 34 )|  00 : 00 : 01  |       |       |        |      |            |
|    1  |  PX COORDINATOR         |            |       |       |            |          |       |       |        |      |            |
|    2  |   PX SEND QC (ORDER)    | :TQ10001   |    246  |  66666  |      3   ( 34 )|  00 : 00 : 01  |       |       |  Q1, 01  | P->S | QC (ORDER) |
|    3  |    SORT ORDER BY        |            |    246  |  66666  |      3   ( 34 )|  00 : 00 : 01  |       |       |  Q1, 01  | PCWP |            |
|    4  |     PX RECEIVE          |            |    246  |  66666  |      2    ( 0 )|  00 : 00 : 01  |       |       |  Q1, 01  | PCWP |            |
|    5  |      PX SEND RANGE      | :TQ10000   |    246  |  66666  |      2    ( 0 )|  00 : 00 : 01  |       |       |  Q1, 00  | P->P | RANGE      |
|    6  |       PX BLOCK ITERATOR |            |    246  |  66666  |      2    ( 0 )|  00 : 00 : 01  |      1  |      3  |  Q1, 00  | PCWC |            |
|    7  |        TABLE ACCESS FULL| ANE_T_PJ_1 |    246  |  66666  |      2    ( 0 )|  00 : 00 : 01  |      1  |      3  |  Q1, 00  | PCWP |            |
-----------------------------------------------------------------------------------------------------------------------------------

 14  rows selected

SQL> 

Константин Лисянский andrey_anonymousОптимизатор у оракеля достаточно сложен.
Расчет ведется по LIO, но оценки стоимости зависят и от вероятности встретить нужные блоки индекса в буферном кэше, и от количества блоков, считываемых при FTS за одну операцию ввода-вывода, и от соотношения времени считывания такого "пакета" к физическому чтению одного блока (обычно блок индекса при кэш-промахе).Оптимизатор Терадата учитывает физические параметры системы, на которой она работает, то есть частоту процессоров, скорость вращения жёстких дисков, пропускную способность bynet. К примеру, один и тот же запрос на системе одного размера при прочих равных может быть выполнен по-разному (например, будут выбраны разные алгоритмы джойнов). Вряд ли Оракл так умеет.
Ложное предположение. Умеет, причем весьма неплохо.
И производительность CPU учесть, и производительность IO, и планчик подобрать.
Константин ЛисянскийТак как он весь из себя переносимый и должен работать на всём, включая утюги и электрочайники :),
Это никак не относится к алгоритмам оптимизатора.
Константин Лисянскийон и оперирует логическими показателями, что на мой взгляд есть недостаток.Наоборот. Если терадата не умеет адекватно оценить стоимость индексного доступа в зависимости от степени его кэшированности - скорее всего легко строится тест-кейс, показывающий, что оптимизатор категорически неправ :)
Либо Вы чего-то не договариваете.
Константин ЛисянскийКстати, несмотря на то, что оптимизатор "достаточно сложен", я так понимаю, народ его зинтует безбожно.
Вы понимаете неверно.
Константин Лисянский andrey_anonymousВ таких условиях и oracle справится с 1млрд не дороже терадаты - берем 10 10-процессорных SMP машин, 400 дисков, соответствующим образом проектируем базу...
И ведь тоже, зараза, распараллелит :)
Выходит, все преимущество TeraData - в железках?
Распараллелит, но как? Это к вопросу про показать план запроса.
Скажите какого - я покажу.
Мы мечемся в обсуждении с кейса на кейс без видимой системы и те механизмы, которые приводятся в заслугу терадате уже через два поста могут быть поставлены в укор оракелю ("а вот если мы его вот эдак - то оно работать будет плохо").
Поэтому и не привожу.
Константин ЛисянскийНе совсем в железках - это всё вместе, и железки и софт. Аппаратно-программный комплекс.
Программно-аппаратным комплексом называется все что угодно.
Если возможно, выделите пожалуйста из этого словосочетания ключевые аспекты (например: "ByNet: железка, умеет SMJ и сегментирование сети, разгружает узел, к которому подключен клиент. Аналоги: нет. Альтернативы: кластерный интерконнект").
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34079532
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский andrey_anonymousБоюсь, тут все не так просто.
- конкурирующие сессии (многопользовательское окружение) создадут те же самые проблемы для TeraData.
Несомненно, многопользовательское окружение создаёт неудобства любой СУБД. Однако, в случае разделяемых ресурсов, конкуренция за них сильнее. По-моему, это достаточно очевидно.По-моему, недостаточно...
Покажите, если не сложно. Константин ЛисянскийТут вопрос сравнения архитектур заключается в том, насколько накладные на постоянное перемещение данных по интерконнекту отличаются от накладных по борьбе за разделяемый ресурс.Интерконнект дороже дисковых чтений, а затраты на конкуренцию ИМХО Вы несколько преувеличиваете. Константин Лисянский andrey_anonymous- на shared disk можно при желании собрать систему, распределяющую и обрабатывающую данные похожим на shared-nothing способомА это как же? Вижу противоречие. Вроде бы разные принципы - в одном случае интерконнект нужен, в другом - общие диски.Оракель всеядный - у него есть и то, и другое ;) Константин Лисянский andrey_anonymousа вот обратное неверно, следовательно, shared nothing by design решает более узкий класс задач.но это с недавнего времени по сравнению с временем жизни Терадаты.Как все, безусловно, понимают, абсолютное сравнение возраста решений мало что дает в плане оценки их современного состояния.
Давайте больше не будем к этому возвращаться, иначе нас всех победит какой-нибудь древний MUMPS Константин Лисянский kmikeПропускная способность Bynet как-то тоже не впечатляет на фоне Infiniband, которых, к тому же, в каждый узел можно натыкать много :)
Ещё раз хочу подчеркнуть, можно было бы и больше, но зачем, если это - не узкое место.Вот это и непонятно. Ввиду отсутствия общих дисков на некоторых запросах по байнету должен пролезть чуть ли не весь трафик. А байнет то "не заткнешь", то "не быстрый, но узким местом не является".
Какая-то мистика.
Константин Лисянский Можно, конечно, потратиться, и забить все слоты этим infinibandom, но диски отэтого быстрее крутиться не станут. Зато передачи с каждого на каждый узел (полагаю, Вы вполне способны представить соответствующий запрос к БД) будут не так сильно тормозить. Константин Лисянский kmikeВ общем, вопрос о преимуществах Teradata открыт :)Что делает даннцю дискуссию очень интересной, не так ли? :)
Безусловно.
Если бы Вы сумели показать преимущества, то дискуссия давно бы увяла - народ сказал бы "КУ" и выдохнул наконец. Константин ЛисянскийВ Терадате такая хрень называется клика - объединение нескольких узлов, имеющих доступ к дискам соседних узлов для того, чтобы иметь возможность перезапустить умершие на одном узле процессы.То есть все-таки shared disk есть?
И поясните плиз, каким образом доступ к дискам позволяет перезапустить узел? Это опечатка? Константин ЛисянскийПомимо того есть фича, которой в других СУБД я не наблюдал. Называется fallback - это дублирование таблицы на разных узлах. Спасает от выхода из строя целой клики (как правило, в клике 8 узлов).
Ну тут понятно - в shared disk оно просто без надобности :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081850
andrey_anonymous Андрей Прохоров , причем число партиций должно быть кратно степени 2 и количеству узлов.
А это уже полная ересь.
Oracle Database Data Warehousing Guide 10g Release 2
Oracle Database uses a linear hashing algorithm and to prevent data from clustering within specific partitions, you should define the number of partitions by a power of two (for example, 2, 4, 8).
andrey_anonymous Андрей Прохоров А теперь расскажите, как вы обеспечите равномерную загрузку 10 узлов, если 10 не является степенью 2?
Сами ерунду выдумали, сами и выкручивайтесь
Oracle Database Data Warehousing Guide 10g Release 2
The number of partitions used for partition-wise joins should, if possible, be a multiple of the number of query servers. ...
This is because, in the beginning of the execution, each parallel execution server works on a different partition pair. At the end of this first phase, only one pair is left. Thus, a single parallel execution server joins this remaining pair while all other parallel execution servers are idle.


Расскажите разработчикам Oracle, что они по Ваше мнению "ересь" и "ерунду" придумавают...
Или почитайте документацию перед тем как посты писать
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081853
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousКонстантин, я уверен, что в полном синтаксисе да еще с изрядной долей экстремизма в TeraData create можно написать ничуть не менее страшный

Может, конечно, быть и более сложный create, но указывать Терадате, куда девать данные не нужно - она всё сама делает автоматически.

andrey_anonymousВ TeraData придется физически переразмещать данные между узлами - значит, исходя из миллиарда записей, проканителимся недельку-другую :)

Миллиард - это небольшая таблица. Я же привёл пример того, что при 10 узлах на каждый узел придётся всего по 10 миллионов записей. Их и нужно будет перекидать при добалвении новых узлов.

andrey_anonymousВ oracle ничего никуда выгружать не надо.
Просто добавим узлы.

Полагаю, узлы для повышения производительности системы. В Терадате добавление новых узлов означает увеличение степени параллелизма путём увеличения количества процессов и уменьшения количества данных, которые один процесс должен обрабатывать.
В случае Оракл, насколько я понял из вышеприведённого create, количество партиций и их размещение задаётся во время этого самого криэйта. Соответственно, чтобы достичь аналогичного эффекта в Оракл, нужно тоже переразмазать данные, что означает, что нужно добавить партиций, разместить их на новых дисках и перекинуть часть данных из старых партиций в новые. Не так ли? Так вот, вопрос заключается в том, как это делается в Оракл автоматически для всех таблиц (не вручную же пераразмазывать сотни таблиц).




С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081866
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousЕсли есть желание добавить разделов, то говорим alter table add/split partition.
Процессы не связанные сами по себе, кроме того, операции с разделами не требуют ограничения доступа пользователей ко всей таблице

Это, несомненно, здорово. В Терадате партиции нельзя сплитить. Только удалять и добавлять новые. Это относится именно к партишионингу, а не к хэш-распределению, на которое повлиять нельзя кроме как выбором первичного индекса и которое делается автоматически для каждой таблицы.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081883
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПрохоровРасскажите разработчикам Oracle, что они по Ваше мнению "ересь" и "ерунду" придумавают...
Или почитайте документацию перед тем как посты писать
Тезка, а теперь перечитайте Вами же приведенные цитаты, только не пропукайте слова и вооружитесь не фантазией, а словарем, ок?
И еще поищите в warehousing guide слово "granularity", и тоже читайте со словарем во избежание недопонимания.
:/
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081901
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymous Андрей Прохоров , причем число партиций должно быть кратно степени 2 и количеству узлов.
А это уже полная ересь.
Oracle Database Data Warehousing Guide 10g Release 2
Oracle Database uses a linear hashing algorithm and to prevent data from clustering within specific partitions, you should define the number of partitions by a power of two (for example, 2, 4, 8).
C английского should переводится как должно бы - то есть носит рекомендательный характер. В данном случае Оракл рекомендует этот метод расчета кол-ва хэш партиций для улучшения равномерности распределения строк по партициям. Безо всяких проблем можно создать, скажем, 5 или 10 партиций - это разрешено. При добавлении/убивании хэш партиции Оракл сам перераспределит строки. Насколько я помню, это online операция (сохраняется доступность для пользователей).
Далее я заметил начавшуюся путаницу по поводу партиций - их у Оракла несколько типов (hash, range, list плюс несколько комбинированных). Те, что не хэш, по определению требует ручной работы (как то добавить партицию для нового диапазона дат). К слову, сплит хэш партиции - нонсенс по определению. И в Оракле их можно только добавлять или удалять.

Из других полезных фич Оракла - subpartitions and local indexes.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081911
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийМожет, конечно, быть и более сложный create, но указывать Терадате, куда девать данные не нужно - она всё сама делает автоматически.Ну оно и логично - вариантов-то небогато, один узел=1 хеш-раздел.
В оракеле такой жесткой связи нет, поэтому и синтакис побогаче. Но далеко не все конструкции являются обязательными - те же hash subpartitions начиная, АФАИР, с 9i, генерятся по шаблону при нарезке нового раздела. В восьмерке упрек в избыточной сложности был более справедлив.
Константин Лисянский andrey_anonymousВ TeraData придется физически переразмещать данные между узлами - значит, исходя из миллиарда записей, проканителимся недельку-другую :)
Миллиард - это небольшая таблица. Я же привёл пример того, что при 10 узлах на каждый узел придётся всего по 10 миллионов записей. Их и нужно будет перекидать при добалвении новых узлов.если мы к 10 имеющимся добавили 6 узлов - как будут перераспределяться данные? Если я правильно понимаю, переместить придется примерно 3/8 всех строк, а перед этим прочитать (пусть и параллельно) весь миллиард и перерасчитать хеши.
Кстати вопрос - узлы добавляются кучкой или по одному? (т.е. сколько раз будут физически перераспределяться данные?)
Еще один вопрос. В оракеле я могу "старые" разделы перевести в readonly, причем это не помешает при необходимости (например, при увеличении скорости поступления данных) изменить количество хеш-subpartitions в активных разделах.
Как с этим обстоят дела в терадате?
Как влияет перераспределение данных на журналы повторного выполнения и не является ли это ограничивающим фактором?
Константин Лисянский andrey_anonymousВ oracle ничего никуда выгружать не надо. Просто добавим узлы.Полагаю, узлы для повышения производительности системы. В Терадате добавление новых узлов означает увеличение степени параллелизма путём увеличения количества процессов и уменьшения количества данных, которые один процесс должен обрабатывать.
В случае Оракл, насколько я понял из вышеприведённого create, количество партиций и их размещение задаётся во время этого самого криэйта.Или альтера. Да. Константин Лисянский Соответственно, чтобы достичь аналогичного эффекта в Оракл, нужно тоже переразмазать данные, что означает, что нужно добавить партиций, разместить их на новых дисках и перекинуть часть данных из старых партиций в новые. Не так ли?Если цель - parallel DML, то, скорее всего (не во всех случаях), да.
Если выборки - то правило не такое жесткое. Константин Лисянский Так вот, вопрос заключается в том, как это делается в Оракл автоматически для всех таблиц (не вручную же пераразмазывать сотни таблиц).Если работаем в схеме "rolling window", то просто добавляем новый раздел и переписываем шаблон размещения подразделов. Всю таблиц переразмещать при этом нет необходимости - по мере устаревания "неоптимальные" разделы сами уйдут в историю. Но можно, конечно, и ручками или инструментами.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081930
andrey_anonymousТезка, а теперь перечитайте Вами же приведенные цитаты, только не пропукайте слова и вооружитесь не фантазией, а словарем, ок?
И еще поищите в warehousing guide слово "granularity", и тоже читайте со словарем во избежание недопонимания.

Похоже, что Вы документацию совсем читать не хотите. Для Вас цитирую в послений раз.
"The number of partitions determines the maximum degree of parallelism, because the partition is the smallest granule of parallelism for partial
partition-wise join operations."
"The maximum allowable DOP is the number of partitions. This might limit the utilization of the system and the load balancing across parallel execution
servers." и т.д.
Учите матчасть, прежде чем грубить на форуме.

Anton DemidovБезо всяких проблем можно создать, скажем, 5 или 10 партиций - это разрешено. При добавлении/убивании хэш партиции Оракл сам перераспределит строки. Насколько я помню, это online операция (сохраняется доступность для пользователей). ...
К слову, сплит хэш партиции - нонсенс по определению. И в Оракле их можно только добавлять или удалять.
"Although the hash function's use of "add partition" logic dramatically improves the
manageability of hash partitioned tables, it means that the hash function can cause a skew if the number of partitions of a hash partitioned table, or the number of subpartitions in each partition of a composite table, is not a power of two. In the worst case, the largest partition can be twice the size of the smallest. So for optimal performance, create a number of partitions and subpartitions for each partition that is a power of two. For example, 2, 4, 8, 16, 32, 64, 128, and so on."

Да, похоже здесь стало совсем дурным тоном документацию читать.
Остается только ликбезом по Oracle заниматься
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34081971
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров Anton DemidovБезо всяких проблем можно создать, скажем, 5 или 10 партиций - это разрешено. При добавлении/убивании хэш партиции Оракл сам перераспределит строки. Насколько я помню, это online операция (сохраняется доступность для пользователей). ...
К слову, сплит хэш партиции - нонсенс по определению. И в Оракле их можно только добавлять или удалять.
"Although the hash function's use of "add partition" logic dramatically improves the
manageability of hash partitioned tables, it means that the hash function can cause a skew if the number of partitions of a hash partitioned table, or the number of subpartitions in each partition of a composite table, is not a power of two. In the worst case, the largest partition can be twice the size of the smallest. So for optimal performance, create a number of partitions and subpartitions for each partition that is a power of two. For example, 2, 4, 8, 16, 32, 64, 128, and so on."

Да, похоже здесь стало совсем дурным тоном документацию читать.
Остается только ликбезом по Oracle заниматься Её не только читать надо уметь, но и понимать. У вас возник вопрос? Нашли где-то "нестыковочку"? Пишите об этом конкретно, выделите это жирным шрифтом, что бы сразу было понятно.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34082075
Павел Новокшонов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного о практической стороне дела. У моего настоящего клиента в системе ~2500 пользователей и ~5000 таблиц в хранилище. Крутится все на Teradata 86 узлов, диска 118TB, данных 35 TB. Пользователи в основном пишут ручками SQL, очень часто разный и навороченный, при этом частенько создают свои постоянные и временные таблицы. Все что мне нужно вбить им в головы – это то, что при создании таблицы есть колонка называемая Primary Index и она в идеале должна быть уникальна. Это все. Дальше Teradata сама равномерно размажет данные по AMP’ам и сбалансрует загрузку. Синтаксис большинства таблиц выглядит следующим образом:

Create table A (c1 int, ….) primary index c1

Partitioning в Oracle наверное действительно нужен для настройки OLTP систем. Точно также как в OLTP актуален вопрос использования кэша. Вопрос в другом – хранилище данных в маштабе компании Fortune 500 - это зачастую не статическая система - и сколько нужно возится с поддержкой table space’ов, dbspace’ов, перестраивать индексы (так было раньше по крайней мере) да еще платить кучу бабла армии DBA’ов. В Teradate’e всего этого нет, кроме последнего :-), но скорее для 1-2 DBA’ов. Из моего опыта с Informix, DB2 и Teradata - последняя гораздо эффективнее и легче в сопровождении чем все остальные основные СУБД. Система поставляется из n-го кол-ва узлов, c n-ми терабайтами доступного дискового пространства. Весь partitioning остается за кадром, все что остается сделать – это спроектировать структуру БД, выбрать primary index’ы и залить данные.

Появились новые данные – не проблема выбери правильно primary index’ы и залей новые таблицы. Много данных стало, система торомозит – не проблема купи у NCR узлов со стораджом и увеличь свой кластер. Терадата все сделает сама – легко и просто. Американцы это любят. Не надо заморачиваться и долго ломать голову.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34082090
Павел Новокшонов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousесли мы к 10 имеющимся добавили 6 узлов - как будут перераспределяться данные? Если я правильно понимаю, переместить придется примерно 3/8 всех строк, а перед этим прочитать (пусть и параллельно) весь миллиард и перерасчитать хеши.
Кстати вопрос - узлы добавляются кучкой или по одному? (т.е. сколько раз будут физически перераспределяться данные?)
Еще один вопрос. В оракеле я могу "старые" разделы перевести в readonly, причем это не помешает при необходимости (например, при увеличении скорости поступления данных) изменить количество хеш-subpartitions в активных разделах.
Как с этим обстоят дела в терадате?
Как влияет перераспределение данных на журналы повторного выполнения и не является ли это ограничивающим фактором?

Данные будут размазаны равномерно между 16 узлами. В этом ключевой вопрос оптимальной сбалансированности системы. Хэши придется перерасчитать. Узлы добавляются кучей. Журналов транзакций в ХД как правило нет. Т.е. в Teradata есть механизм журналирования как в любой СУБД, но на практике его редко используют. Это не OLTP.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34082506
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел НовокшоновИз моего опыта с Informix, DB2 и Teradata - последняя гораздо эффективнее и легче в сопровождении чем все остальные основные СУБД.
Ок, спасибо - первое названное реальное преимущество терадата перед системами общего назначения для DWH.
Еще что-то сможете вспомнить?
Павел НовокшоновДанные будут размазаны равномерно между 16 узлами. В этом ключевой вопрос оптимальной сбалансированности системы. Хэши придется перерасчитать. Узлы добавляются кучей.
Павел, Константин - моя оценка времени "неделька-другая" на удвоение количества узлов от реальности, скорее всего, далека, не могли бы Вы все-таки привести Вашу оценку?
Второй вопрос - будет ли база доступна пользователям в процессе?
Павел НовокшоновЖурналов транзакций в ХД как правило нет. Т.е. в Teradata есть механизм журналирования как в любой СУБД, но на практике его редко используют. Это не OLTP.
Вообще журнал применяется при восстановлении из hot backup.
Альтернатива - хранение всей первичной информации, загруженной в хранилище после создания последней резервной копии (этакий "ручной" журнал).
Сколько времени занимает backup в отсутствие журнала, требуется ли ограничивать доступ пользователей?
Задавая эти вопросы, я хочу попробовать составить впечатление о типовом коэффициенете готовности систем на базе TeraData.

Исходя из материалов топика я пришел к выводу, что TeraData вроде как непригодна для смешанных DWH+OLTP (BSS/OSS) систем - не ошибаюсь ли я?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34082735
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymousТезка, а теперь перечитайте Вами же приведенные цитаты, только не пропускайте слова и вооружитесь не фантазией, а словарем, ок?Похоже, что Вы докуметацию совсем читать не хотите. Для Вас цитирую в послений раз.
Цитатки неаккуратно из контекста вырезаете.
В первой, к примеру, обсуждается исключительно PARTITION-WISE JOIN.
И ничего более. Вы же цитируете, словно это общее правило и системное ограничение. Вторая тоже без контекста ни о чем не говорит.
И ни одна из них не подтверждает Ваши инсинуации :
1) "Для паралельного выполнения запросов нужно использовать partitioning"
Утверждение ложно, поскольку данное ограничение действует не на любые запросы.
Если бы Вы удосужились правильно описать классы запросов, для которых ограничение актуально - проблем бы не было.
2) "Чтобы обеспечить равномерную загрузку узлов .... придется использовать hash partitioning"
Утверждение ложно. С учетом конкретного содержимого равномерное распределение данных может быть достигнуто и на range, и на list.
3) "как вы обеспечите равномерную загрузку 10 узлов, если 10 не является степенью 2"
Для начала сумейте показать, что имеющаяся неравномерность (напомню приведенную Вами цитату, в худшем случае самый большой раздел может оказаться в два раза больше самого маленького ) заметно повлияет на время исполнения запроса, если разделов более двух.
Если же немножко отвлечься от стиля документалистов oracle и вспомнить, что речь таки идет о хеш-функции , то можно достаточно легко предложить пример исходных данных, которые улягутся, к примеру, всей толпой в один и тот же раздел. Актуально и для TeraData, и для Oracle, и вообще для любой системы, разделяющей данные по хеш.

Что до "хамства в форуме" - приношу свои извинения если обидел.
Однако не снимаю упрека в некорректном цитировании и неверном толковании документации.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34085530
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousНу оно и логично - вариантов-то небогато, один узел=1 хеш-раздел.

Это довольноо далеко от истины. 1 узел = (65535 / количество узлов в системе) разделов (в терминах Терадаты hash bucket).
То есть в любой системе Терадата 65535 хэш-бакетов, которые равномерно распределяются между AMPами (не узлами, поскольку AMPы могут мигрировать на другие узлы, в случае падения из "родных" узлов).
Механихм распределения довольно прост - хэш-карта, хранящая соответствие между номером AMP и номером хэш-бакета.
Наличие такого большого количества хэш-бакетов обеспечивает равномерное распределение данных даже на очень больших таблицах, что повышает степень параллелизма сканирования таблицы.


andrey_anonymousЕсли цель - parallel DML, то, скорее всего (не во всех случаях), да.
Если выборки - то правило не такое жесткое.

А не могли бы Вы пояснить какая между ними разница? Разве выборка - это не DML?
Мне сложно понять, просто в Терадате параллелится всё без исключения.

Кстати, тут по ходу возникли вопросы по поводу параллелизма триггеров, UDF и хранимых процедур. Как с этим в Оракл?

andrey_anonymousПавел, Константин - моя оценка времени "неделька-другая" на удвоение количества узлов от реальности, скорее всего, далека, не могли бы Вы все-таки привести Вашу оценку?
Второй вопрос - будет ли база доступна пользователям в процессе?

Думаю, у Павла лучше получится сделать оценку - у него система помассивнее будет.
На вопрос о сканировании миллиардной таблицы - у нашего клиента сейчас 4 узла. Таблица в 3 миллиарда записей сканируется где-то минут 5-6. Правда, это довольно узкая таблица.

В процессе апгрейда база на некоторое время недоступна для пользователей (поскольку данные в это время перехешируются).


Кстати ещё про одно преимущество (оно косвенно объясняет и лучшее сопровождение) - в Терадате нужно гораздо меньше индексов и агрегатов. Таким образом, оверхед по дискам меньше (ну, или, если перефразировать - при том же объёме сырых дисков у Терадаты больше полежного пространства).
Терадата, ещё например умеет динамически распределять ресурсы системы в зависимости от приоритетов пользователей (приложений) на основе весов их "групп". Есть механизм типа гейткипера, который может отстреливать всяческие декартовы произведения и иже с ними, а есть тот, который на ходу выделят ресурсы каждой сессии в зависимсоти от того, кто есть по соседству. Есть замечательные механизмы анализа workload и выдачи рекомендаций о его оптимизации (типа построения индексов, сбора статистики и т.д).
Именно благодаря этим механизмам Терадата может отлично сочетать в себе запросы типа сложного DSS с кучей джойнов и т.д. и коротких запросов типа запроса агента колл-центра типа "выдать мне информацию по этому клиенту" с гарантированным SLA.

andrey_anonymousВообще журнал применяется при восстановлении из hot backup.
Альтернатива - хранение всей первичной информации, загруженной в хранилище после создания последней резервной копии (этакий "ручной" журнал).
Сколько времени занимает backup в отсутствие журнала, требуется ли ограничивать доступ пользователей?
Задавая эти вопросы, я хочу попробовать составить впечатление о типовом коэффициенете готовности систем на базе TeraData.

Исходя из материалов топика я пришел к выводу, что TeraData вроде как непригодна для смешанных DWH+OLTP (BSS/OSS) систем - не ошибаюсь ли я?

В Терадате существует понятие транзакционного журнала (transient journal - на одну транзакцию) и постоянного журнала (permanent journal). В этом плане, думаю, она не отличается сильно от других СУБД.
Журналы так же как и таблицы можно защищать не только на аппаратном уровне с помощью RAID, но и на уровне базы механизмом FALLBACK. Что повышает отказоустойчивость ситемы в целом.

Если мы делаем full backup, то таблицы на его время локируются. Что не есть хорошо, если нужно, чтобы таблицы были доступны 24х7.
В этом случае делается backup постоянного журнала, при этом таблица остаётся доступной. Можно делать backup одного или нескольких AMP. Для таблиц, в которых есть PARTITIONING можно делать бэкап отдельных партиций.
Бэкап также делается параллельно (как, собственно, и всё остальное, как Вы уже догадались :)

kmikeА нафига ему знать скорость вращения дисков? В DB2 для табличных пространств задаются 2 параметра, участвующих в расчёте стоимости: OVERHEAD и TRANSFERRATE, скорость процессора и пропускную способность сети оно тоже знает.

Немного неточно выразился. Извините.
Здесь более точно (сорри, форматировать некогда - спать охота):

Код: 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.
External Cost Parameters
External cost parameters are various families of weights and measures,
including the parameters listed in the following table.
External Cost Parameter
Group
Definition
Optimizer weights and
scales
Weightings of CPU, disk, and network contributions to optimizing
a request plus scaling factors to normalize disk array and
instruction path length contributions.
Unitless decimal weighting factors.
CPU cost variables CPU costs for accessing, sorting, or building rows using various
methods.
Disk delay definitions Elapsed times for various disk I/O operations.
Measured in milliseconds.
Disk array throughput Throughputs for disk array I/O operations.
Measured in I/Os per second.
Network cost variables Message distribution and duplication costs and overheads.
Measured in milliseconds.
Optimizer
environment variables
Hardware configuration information such as the number of CPUs
and vprocs per node, maxima, minima, and average numbers of
MIPS per CPU, nodes per clique, disk arrays per clique, and so on.
Unitless decimal values.
Miscellaneous cost
parameters
DBSControl information such as free space percentages, maximum
number of parse tree segments, dictionary cache size, and so on.
Measured in various units, depending on the individual cost
parameter.
Performance constants Various values used to assist the Optimizer to determine the best
method of processing a given query.
Measured in various units, depending on the individual
performance constant.
PDE system control
files
Lists various system control files used by PDE. Used to initialize
the appropriate GDOs with the appropriate values at startup.
DBS control files Lists various database control files found in the DBSControl
record. Used to initialize the appropriate GDOs with their
respective appropriate values at startup.
TPA subsystem startup
initializations
Initializes or recalculates various Optimizer parameters, including
the optimizer target table GDO used by the target level emulation
software (see Chapter 6: “Target Level Emulation”).

kmikeСейчас набегут борцы за снижение TCO и начнут кричать "single vendor lock-in!" и будут в чём-то правы :)
Опять тот же вопрос-какие преимущества даёт этот комплекс? Могу ли я для увеличения пропускной способности воткнуть Infiniband карточки в узлы? А по 7 штук в узел для обеспечения связи каждого узла с каждым в конфигурации из 8 узлов? Или проапгрейдить сеть на ещё более быструю?

Кстати, TCO Терадаты очень конкурентноспособный. В том числе и за счёт лёгкости в обслуживании.
По поводу пропускной способности - хотелось бы поддержжать Павла. Он правильную вещь говорит - система должна быть сбалансированной. Зачем дополнительная пропускная способность, если это не узкое место?
Связь каждый с каждым bynet и так поддерживает.
А в конфигурации из 85 узлов Вы инфинибанд будете в 84 экземплярах в узлы втыкать? :))


andrey_anonymousЭто не самая большая проблема. По крайней мере для оракеля.
Комбинаторика комбинаторикой, но построение плана требуется только при первом выполнении запроса. При этом оптимизатор ограничен во времени и действительно может не рассмотреть часть вариантов, однако и на эту проблему оракл предлагает решение: есть режим работы оптимизатора, в котором он просто генерирует планы, не думая о временных рамках.
Планы можуг быть сохранены для последующего использования и даже экспортированы на другую БД :)
Эвристика тоже имеет место, но релиз за релизом ее роль падает - она скорее мешает в нетривиальных случаях (вроде того, на который я давал забракованную Вами ссылку).

Про комбинаторику - предлагаю провести вычисления.
Соединить 10 таблиц теоретически можно количеством способов порядка 2*10^10. Допустим, СУБД способна оценить один план за 1 микросекунду (то есть за 10^-6 сек). Умножаем, получаем, что для того, чтобы оценить все способы понадобится 2000 секунд, то есть примерно 33 минуты. Полагаю, что в случае с 20 таблицами получится астрономический период времени.
Вот и вопрос - как тут без эвристик? Что-то нужно сразу отбросить, а нужно понимать, как.
По поводу сохранения планов - действительно, смешно. Интересно, а есть серьёзные СУБД, которые не умеют этого делать?



С уважением,
Константин Лисянский
http://lissianski.narod.ru
Код: plaintext
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34085625
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский , поясните пожалуйста ваш постулат о том, что в Терадате нужно меньше индексов? За счёт чего это?

Про распределение ресурсов между клиентами-так это без этого сейчас никуда. В Оракле это делает Resource Manager, в DB2 - Query Patroller. Так что здесь Терадата не даёт ничего принципиально нового.

В списке переменных, учитываемых оптимизатором, тоже не вижу ничего выдающегося.
Константин ЛисянскийКстати, TCO Терадаты очень конкурентноспособный. В том числе и за счёт лёгкости в обслуживании.
Цифры есть?

Константин ЛисянскийПо поводу пропускной способности - хотелось бы поддержжать Павла. Он правильную вещь говорит - система должна быть сбалансированной. Зачем дополнительная пропускная способность, если это не узкое место?

А откуда уверенность, что оно узким местом не является? Пока что не было продемонстрировано, что Терадата может выполнить объединение таблиц по столбцам, не являющимся ключом хэш-секционирования, без их пересылки по сети.
Цитирую Teradata Magazine:
Many kinds of communication are required, including starting an operation on all nodes (e.g., scan all rows); coordinating the completion of an operation on all nodes (e.g., a join); redistributing a relation to prepare for a join ; and coordinating the return of a result set, a portion of which exists on each node. Every one of these operations must be fully scalable for Teradata to deliver scalable performance to your applications.

Константин Лисянский
Связь каждый с каждым bynet и так поддерживает.

Да ну? В том же Teradata Magazine почему-то пишут
"The BYNET works like a phone switch, quite different from a typical network. Its switched "folded banyan" architecture".
Каждый с каждым-это вовсе не то же самое, что "Весь один сетевой адаптер каждого узла воткнут в один общий свитч".

Константин Лисянский
А в конфигурации из 85 узлов Вы инфинибанд будете в 84 экземплярах в узлы втыкать?

Нет, я выберу топологию, наиболее отвечающую моим требованиям. Fat tree, Flat Neighborhood Network, да хоть гиперкуб, если мне так будет удобно :)

В общем, по-прежнему не видно реальных преимуществ перед DB2 DPF.
Ну и хотелось бы ответов на остальные вопросы, ранее уже заданные.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34086352
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский andrey_anonymousНу оно и логично - вариантов-то небогато, один узел=1 хеш-раздел.
Это довольноо далеко от истины. 1 узел = (65535 / количество узлов в системе) разделов (в терминах Терадаты hash bucket).Я неудачно выразился. Имелось ввиду, что логика размещения по узлам в данном случае однозначна и может быть поручена роботу.
В shared disk размещение разделов - нескольк более "творческая" работа.
Константин Лисянский andrey_anonymousЕсли цель - parallel DML, то, скорее всего (не во всех случаях), да.
Если выборки - то правило не такое жесткое.А не могли бы Вы пояснить какая между ними разница? Разве выборка - это не DML?К DML обычно относят insert, update, delete - то есть операции, модифицирующие данные. Константин ЛисянскийМне сложно понять, просто в Терадате параллелится всё без исключения.В Oracle select может в parallel режиме сканировать несекционированную таблицу или один-единственный раздел. Update так не может, на мой взгляд, ввиду сложности процесса согласования этой деятельности (размещения блокировок).
Разумеется, различные разделы могут обрабатываться в parallel и этими операциями.
Константин ЛисянскийКстати, тут по ходу возникли вопросы по поводу параллелизма триггеров, UDF и хранимых процедур. Как с этим в Оракл?Довольно неплохо.
deterministic UDF, будучи включенной в текст SQL-запроса просто выполняется в контексте одного из параллельных процессов, более сложные случаи вроде пользовательских аналитических/агрегатных функций или ковейерных функций (pipelined) требуют соблюдения определенных соглашений при написании и соответствующей декларации.
Однако сам по себе императивный код PL/SQL режима параллельного исполнения не имеет - только в контексте SQL.

Константин ЛисянскийКстати ещё про одно преимущество (оно косвенно объясняет и лучшее сопровождение) - в Терадате нужно гораздо меньше индексов и агрегатов.Можно с этого места поподробнее - вроде как свежая мысль в контексте обсуждения...
Константин ЛисянскийБэкап также делается параллельно (как, собственно, и всё остальное, как Вы уже догадались :)
Лучше бы он делался в online :)
Константин Лисянский andrey_anonymousКомбинаторика комбинаторикой
Про комбинаторику - предлагаю провести вычисления.
Соединить 10 таблиц теоретически можно количеством способов порядка 2*10^10.
Вообще-то способов всего порядка 10!, что делает Вашу оценку завышенной почти в 5511.5 раз со всеми вытекающими :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088031
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousК DML обычно относят insert, update, delete - то есть операции, модифицирующие данные.Что значит обычно ? Боюсь, это Вы сильно погорячились, манипуляции с данными совсем не подразумевает только изменение этих данных. А то так можно договориться, что SELECT относится к DDL.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088202
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA andrey_anonymousК DML обычно относят insert, update, delete - то есть операции, модифицирующие данные.Что значит обычно ? Боюсь, это Вы сильно погорячились, манипуляции с данными совсем не подразумевает только изменение этих данных. А то так можно договориться, что SELECT относится к DDL.
DML
Data Manipulation Language

Data Modification Language

Второй вариант - одно из типичных неправильных прочтений. Всякое бывает.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088229
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из микросовтовского хелпа:

The SQL language has two main divisions: Data Definition Language (DDL), which is used to define and manage all the objects in an SQL database, and Data Manipulation Language (DML), which is used to select , insert, update, and delete data in the objects defined using DDL. и т.д.
Хотя может в Оракле по-другому считают :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088264
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperХотя может в Оракле по-другому считаютЕсли верить google , то уже по первой странице видно, что Oracle тоже считает, что DML - data manipulation language, и в него входит SELECT.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088291
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeКонстантин Лисянский , поясните пожалуйста ваш постулат о том, что в Терадате нужно меньше индексов? За счёт чего это?

Можно, просто, Константин. Я не обижусь.

Например, primari index, с одной стороны, является механизмом распределения данных, с другой стороны, используется в качестве метода доступа. Однако это не совсем индекс - это функция.
Далее, поскольку все таблицы в системе размазываются между единицими параллелизма на маленькие кусочки, часто получается быстрее сделать фуллскан, нежели использовать для выборки индекс.
Для джойнов индексы Терадате не нужны, кроме первичного (который суть не индекс).


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088316
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeВ списке переменных, учитываемых оптимизатором, тоже не вижу ничего выдающегося.

Понятно.

kmikeЦифры есть?

Конечно.

kmikeА откуда уверенность, что оно узким местом не является? Пока что не было продемонстрировано, что Терадата может выполнить объединение таблиц по столбцам, не являющимся ключом хэш-секционирования, без их пересылки по сети.

А я, вроде бы не утверждал, что может. Точно не может, на всякий случай.
Это же shared nothing.
В общем случае перераспределение (или дуплицирование одной из таблиц) нужно во всех случаях, кроме того, когда в условии джойна стоят первичные индексы обеих таблиц.
Таким образом, данные постоянно разгуливают между узлами.




С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088355
andrey_anonymousЦитатки неаккуратно из контекста вырезаете.
В первой, к примеру, обсуждается исключительно PARTITION-WISE JOIN. И ничего более. Вы же цитируете, словно это общее правило и системное ограничение.
Супер. Расскажите о других способах распаралеливания join-ов в Oracle.
andrey_anonymous1) "Для паралельного выполнения запросов нужно использовать partitioning"
Утверждение ложно, поскольку данное ограничение действует не на любые запросы.
Если бы Вы удосужились правильно описать классы запросов, для которых ограничение актуально - проблем бы не было.
Если бы Вы читали ветку, в которую пишите, то таких вопросов бы не возникало:
Зл0йПредположим что есть 2 таблицы table_a и table_b. Предположим что первичные индексы данных таблиц построены по атрибутам column_a1 и column_b1 соответственно. Теперь строим Join такой что column_a1=column_b27. Доступ в table_b идет не по первичному индексу. т.е. amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet. Ведь они же раскиданы по amp'ам исходя из хеширования по column_b1. Теперь предположим что обе таблицы по 200 миллионов записей, чтобы жизнь медом не казалась.
andrey_anonymous2) "Чтобы обеспечить равномерную загрузку узлов .... придется использовать hash partitioning"
Утверждение ложно. С учетом конкретного содержимого равномерное распределение данных может быть достигнуто и на range, и на list.
Готовим partitioning под фиксированные запрос и содержимое. Технологично. Шаг влево, шаг вправо всю оптимизацию сдаем в утиль
andrey_anonymous3) "как вы обеспечите равномерную загрузку 10 узлов, если 10 не является степенью 2"
Для начала сумейте показать, что имеющаяся неравномерность (напомню приведенную Вами цитату, в худшем случае самый большой раздел может оказаться в два раза больше самого маленького) заметно повлияет на время исполнения запроса, если разделов более двух.
Доказывать, что 2х2=4 не собираюсь.
andrey_anonymousЕсли же немножко отвлечься от стиля документалистов oracle и вспомнить, что речь таки идет о хеш-функции, то можно достаточно легко предложить пример исходных данных, которые улягутся, к примеру, всей толпой в один и тот же раздел. Актуально и для TeraData, и для Oracle, и вообще для любой системы, разделяющей данные по хеш. Берем 200 млн. x N записей, раскладываем по хэш функции по N партициям, потом берем все записи, попавшие в одну партицию и кричим "караул!". Дальше что?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088380
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeМожно здесь подробнее? Допустим, есть таблицы T1 и T2 со столбцами A,B,C, и A используется для распределения по узлам. Как будет выполняться join T1 и T2 по условию T1.B=T2.B ?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE SET TABLE RPDM30.SHOPPING_TRANSACTION ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT
     (
      Shopping_Transaction_Id INTEGER NOT NULL,
      Shopping_Tran_Type_Cd VARCHAR( 50 ) CHARACTER SET LATIN NOT CASESPECIFIC,
      Shopping_Tran_Status_Cd VARCHAR( 50 ) CHARACTER SET LATIN NOT CASESPECIFIC,
      Visit_Id INTEGER NOT NULL,
      POS_Register_Id INTEGER,
      Transaction_Dttm TIMESTAMP( 6 ) FORMAT 'yyyy-mm-ddbhh:mi:ss.s(6)',
      Reported_As_Dttm TIMESTAMP( 6 ) FORMAT 'yyyy-mm-ddbhh:mi:ss.s(6)',
      Order_Num VARCHAR( 50 ) CHARACTER SET LATIN NOT CASESPECIFIC,
      Related_Shopping_Trans_Id INTEGER,
      Sales_Associate_Id INTEGER,
      Bill_To_Persona_Id INTEGER,
      Ship_To_Persona_Id INTEGER,
      Bill_To_Address_Id INTEGER,
      Ship_To_Address_Id INTEGER)
PRIMARY INDEX XIE1SHOPPING_TRANSACTION ( Shopping_Transaction_Id );

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE SET TABLE RPDM30.SHOPPING_TRANSACTION_LINE ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT
     (
      Shopping_Transaction_Id INTEGER NOT NULL,
      Shopping_Transaction_Line_Num VARCHAR( 50 ) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
      Shopping_Tran_Line_Status_Cd VARCHAR( 50 ) CHARACTER SET LATIN NOT CASESPECIFIC,
      Unit_Selling_Price_Amt DECIMAL( 18 , 4 ) NOT NULL,
      Item_Qty DECIMAL( 18 , 4 ) NOT NULL,
      Item_Id INTEGER NOT NULL,
      Unit_Cost_Amt DECIMAL( 18 , 4 ),
      Transaction_Line_Dttm TIMESTAMP( 6 ) FORMAT 'yyyy-mm-ddbhh:mi:ss.s(6)',
      Unit_Retail_Price_Amt DECIMAL( 18 , 4 ) NOT NULL,
      Orig_Shopping_Transaction_Id INTEGER,
      Orig_Shopping_Tran_Line_Num VARCHAR( 50 ) CHARACTER SET LATIN NOT CASESPECIFIC,
      Promised_Fulfillment_Dt DATE FORMAT 'YYYY-MM-DD',
      Page_View_Id INTEGER)
PRIMARY INDEX XIE1SHOPPING_TRANSACTION_LINE ( Shopping_Transaction_Id ,
Orig_Shopping_Transaction_Id );

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
EXPLAIN
SELECT
  *
FROM
  SHOPPING_TRANSACTION st
INNER JOIN
  SHOPPING_TRANSACTION_LINE stl
ON
  st.Transaction_Dttm=stl.Transaction_Line_Dttm


Код: 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.
Explanation
   1 ) First, we lock a distinct RPDM30."pseudo table" for read on a
     RowHash to prevent global deadlock for RPDM30.stl. 
   2 ) Next, we lock a distinct RPDM30."pseudo table" for read on a
     RowHash to prevent global deadlock for RPDM30.st. 
   3 ) We lock RPDM30.stl for read, and we lock RPDM30.st for read. 
   4 ) We do an all-AMPs RETRIEVE step from RPDM30.st by way of an
     all-rows scan with a condition of ("NOT
     (RPDM30.st.Transaction_Dttm IS NULL)") into Spool  2  (all_amps)
     fanned out into  29  hash join partitions, which is duplicated on
     all AMPs.  The result spool file will not be cached in memory. 
     The size of Spool  2  is estimated with no confidence to be  24 , 488 
     rows.  The estimated time for this step is  1 . 09  seconds. 
   5 ) We do an all-AMPs RETRIEVE step from RPDM30.stl by way of an
     all-rows scan with a condition of ("NOT
     (RPDM30.stl.Transaction_Line_Dttm IS NULL)") into Spool  3 
     (all_amps) fanned out into  29  hash join partitions, which is built
     locally on the AMPs.  The input table will not be cached in memory,
     but it is eligible for synchronized scanning.  The result spool
     file will not be cached in memory.  The size of Spool  3  is
     estimated with no confidence to be  108 , 508  rows.  The estimated
     time for this step is  6 . 73  seconds. 
   6 ) We do an all-AMPs JOIN step from Spool  2  (Last Use) by way of an
     all-rows scan, which is joined to Spool  3  (Last Use) by way of an
     all-rows scan.  Spool  2  and Spool  3  are joined using a hash join
     of  29  partitions, with a join condition of ("Transaction_Dttm =
     Transaction_Line_Dttm").  The result goes into Spool  1 
     (group_amps), which is built locally on the AMPs.  The result
     spool file will not be cached in memory.  The size of Spool  1  is
     estimated with no confidence to be  4 , 033 , 241  rows.  The estimated
     time for this step is  2  minutes and  17  seconds. 
   7 ) Finally, we send out an END TRANSACTION step to all AMPs involved
     in processing the request.
  -> The contents of Spool  1  are sent back to the user as the result of
     statement  1 .  The total estimated time is  2  minutes and  25  seconds. 


В этом примере видно, что оптимизатор решил не перераспределять большую таблицу SHOPPING_TRANSACTION_LINE, а решил продублировать таблицу SHOPPING_TRANSACTION, так как она меньше по размеру.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
EXPLAIN
SELECT
  *
FROM
  SHOPPING_TRANSACTION_LINE stl1
INNER JOIN
  SHOPPING_TRANSACTION_LINE stl2
ON
  stl1.Transaction_Line_Dttm=stl2.Transaction_Line_Dttm

Код: 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.
Explanation
   1 ) First, we lock a distinct RPDM30."pseudo table" for read on a
     RowHash to prevent global deadlock for RPDM30.stl2. 
   2 ) Next, we lock RPDM30.stl2 for read. 
   3 ) We execute the following steps in parallel. 
        1 ) We do an all-AMPs RETRIEVE step from RPDM30.stl2 by way of an
          all-rows scan with a condition of ("NOT
          (RPDM30.stl2.Transaction_Line_Dttm IS NULL)") into Spool  2 
          (all_amps), which is redistributed by hash code to all AMPs. 
          Then we do a SORT to order Spool  2  by row hash.  The result
          spool file will not be cached in memory.  The size of Spool  2 
          is estimated with no confidence to be  108 , 508  rows.  The
          estimated time for this step is  7 . 38  seconds. 
        2 ) We do an all-AMPs RETRIEVE step from RPDM30.stl1 by way of an
          all-rows scan with a condition of ("NOT
          (RPDM30.stl1.Transaction_Line_Dttm IS NULL)") into Spool  3 
          (all_amps), which is redistributed by hash code to all AMPs. 
          Then we do a SORT to order Spool  3  by row hash.  The result
          spool file will not be cached in memory.  The size of Spool  3 
          is estimated with no confidence to be  108 , 508  rows.  The
          estimated time for this step is  7 . 38  seconds. 
   4 ) We do an all-AMPs JOIN step from Spool  2  (Last Use) by way of a
     RowHash match scan, which is joined to Spool  3  (Last Use) by way
     of a RowHash match scan.  Spool  2  and Spool  3  are joined using a
     merge join, with a join condition of ("Transaction_Line_Dttm =
     Transaction_Line_Dttm").  The result goes into Spool  1 
     (group_amps), which is built locally on the AMPs.  The result
     spool file will not be cached in memory.  The size of Spool  1  is
     estimated with no confidence to be  35 , 743 , 135  rows.  The estimated
     time for this step is  21  minutes and  11  seconds. 
   5 ) Finally, we send out an END TRANSACTION step to all AMPs involved
     in processing the request.
  -> The contents of Spool  1  are sent back to the user as the result of
     statement  1 .  The total estimated time is  21  minutes and  19 
     seconds. 

А в этом примере перед джойном перераспределяются обе таблицы, поскольку они одинаково большие.
Перераспределение таблиц происходит одновременно, то есть, присутствует как внутришаговый параллелизм, так и межшаговый.
Это довольно характерная картина для Терадаты.

Надеюсь, степень подробности удовлетворительная. Если что-то непонятно, готов прокомментировать.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088382
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский kmikeКонстантин Лисянский , поясните пожалуйста ваш постулат о том, что в Терадате нужно меньше индексов? За счёт чего это?

Можно, просто, Константин. Я не обижусь.

Например, primari index, с одной стороны, является механизмом распределения данных, с другой стороны, используется в качестве метода доступа. Однако это не совсем индекс - это функция.
Далее, поскольку все таблицы в системе размазываются между единицими параллелизма на маленькие кусочки, часто получается быстрее сделать фуллскан, нежели использовать для выборки индекс.
Для джойнов индексы Терадате не нужны, кроме первичного (который суть не индекс).

Вот про метод доступа интересно... Очевидно, что можно использовать этот самый хэш для определения узла, на котором находится данная строчка. А внутри узла этот самый хэш как-нибудь играет?

Постулат про предпочтение фулл-сканов индексам я понял примерно понял, но это же верно в любой системе с достаточно большой степенью параллелизма. Либо просто с быстрым i/o по отношению к объёму таблицы.

Про джойны без индексов тоже понятно, что они не нужны, но это же наверняка повлияет на производительность, потому я и спросил, каким методом будет выполняться такой джойн (в контексте объёмов пересылки по сети).
Кстати, у Терадаты ключ секционирования по узлам может не совпадать с первичным?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088389
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийА в этом примере перед джойном перераспределяются обе таблицы, поскольку они одинаково большие.
Перераспределение таблиц происходит одновременно, то есть, присутствует как внутришаговый параллелизм, так и межшаговый.
Это довольно характерная картина для Терадаты.

Надеюсь, степень подробности удовлетворительная. Если что-то непонятно, готов прокомментировать.

Читабельность EXPLAIN'a Терадаты впечатляет :)
"which is redistributed by hash code to all AMPs" - вот этот момент интересен, по какому хэшу оно переспределяется?
И, получается, с каждого узла все данные, удовлетворяющие фильтру, надо будет отправить на каждый остальной узел? Не возникает ли здесь узкого места? Допустим, 10ГБ при 0.18ГБ/с (и это, небось, теоретически, то есть в вакууме) - это примерно минута.. Кстати, оно широковещательно передаётся или на каждый узел отдельно?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088392
Павел Новокшонов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousПавел, Константин - моя оценка времени "неделька-другая" на удвоение количества узлов от реальности, скорее всего, далека, не могли бы Вы все-таки привести Вашу оценку?
Второй вопрос - будет ли база доступна пользователям в процессе?


Мне сложно дать какую-то конкретную оценку, поскольку я не занимаюсь upgrade'ми. Это зависит наверное от размера кластера и кол-ва данных хэш которых надо пере-рассчитать. В Teradata есть tool - estimator - который позволяет оценить время необходимое на re-config при добавлении новых узлов. Последний upgrade у моего клиента занял порядка 20-25 часов. База при этом не доступна пользователям. Некоторые клиенты имеют резервные системы (в рамках решения dual-active), при этом пользователи перенаправляются на резервную систему если основная не доступна. На практике добавление новых узлов в кластер происходит не так часто, как правило раз в 1,5 - 2 года.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088400
Павел Новокшонов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeЧитабельность EXPLAIN'a Терадаты впечатляет :)

Мне тоже нравится. У Оракла и DB2 explain'ы какие-то примитивные что-ли, хотя наверное дело привычки.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088406
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousВ shared disk размещение разделов - нескольк более "творческая" работа.

Одна из причин, почему Терадату легче сопровождать.

andrey_anonymousК DML обычно относят insert, update, delete - то есть операции, модифицирующие данные.

Разумеется. Выборка - часть DML. Поэтому мой вопрос и был. Просто я его немного сумбурно сформулировал (поздно уже было).


andrey_anonymousВообще-то способов всего порядка 10!, что делает Вашу оценку завышенной почти в 5511.5 раз со всеми вытекающими :)

Teradata Database SQL Reference Statement and Transaction ProcessingLeft-Deep Search Trees
When a left-deep search tree is used to analyze possible join orders, the number
of possibilities produced is relatively small, as characterized by the following
equation, where n is the number of tables being joined.
Number of join orders = n!
For a four-table join, the number of join orders using a left-deep search tree is
only 4!, or 24. Left-deep join trees are used by many commercial relational
systems, but there are other methods that can produce many more possible join
sequences, making it more likely to find a better join plan.

...

Bushy Search Trees
Bushy trees are an optimal method for generating more join order
combinations. At the same time, the number of combinations generated can be
prohibitive (see “Possible Join Orders as a Function of the Number of Tables To
Be Joined” on page 2-73), so the Optimizer uses several heuristics to prune the
search space. For example, with the exception of star joins, unconstrained joins
are not considered.
The following equation calculates the total number of join orders (before
pruning) for n tablebased on a bushy join tree search:
Number of join orders = n!(2(n-1) (n-1))*1/n

The term (2(n-1) (n-1)) in this equation represents the number of combinations.

...

Possible Join Orders as a Function of the Number of Tables To Be Joined
The following table illustrates the dilemma the Optimizer faces when it selects
the order in which to join tables in a join plan. The table demonstrates how
rapidly the possibilities for ordering binary joins escalates as the total number
of tables joined increases.
To help paint a picture of how vast the number of combinations becomes as the
number of tables increases, this table uses the metaphor of grains of sand.

Number of Tables Joined Number of Possible Join Orders
3 12.0
4 120.0
10 1.8*10^10
16 2.0*10^20
64 1.2*10^124






С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088417
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeВот про метод доступа интересно... Очевидно, что можно использовать этот самый хэш для определения узла, на котором находится данная строчка. А внутри узла этот самый хэш как-нибудь играет?

Конечно. В памяти каждого узла резидентно находится так называемый Master Index, который указывает на каком циллиндре искать блок данных с искомой записью, дальше есть структура cyllinder index, которая тоже с большой вероятностью находится в памяти, по ней можно найти в каком блоке искать запись с искомым хэшом. Сам хэш хранится как часть записи.


kmikeПостулат про предпочтение фулл-сканов индексам я понял примерно понял, но это же верно в любой системе с достаточно большой степенью параллелизма. Либо просто с быстрым i/o по отношению к объёму таблицы.

Возможно. Есть СУБД, которые практически всё делают full-сканами. Netezza, например.


kmikeПро джойны без индексов тоже понятно, что они не нужны, но это же наверняка повлияет на производительность, потому я и спросил, каким методом будет выполняться такой джойн (в контексте объёмов пересылки по сети).

Повлияет, конечно. Если таблица бльшая, то перераспределение - недешёвая операция.


kmikeКстати, у Терадаты ключ секционирования по узлам может не совпадать с первичным?

Вопрос не совсем корректен. Первичный ключ - это понятие, скорее, логическое. Таблица вполне может быть без первичного ключа. К слову сказать, понятие PRIMARY KEY, по-моему, вообще в Терадате отсутствует.
То, по чему Терадата распределяет данные называется первичный индекс.
В качестве первичного индекса можно выбирать всё что угодно, лишь бы это делу помогало :)
То есть, он может быть неуникальным, если Вы это имели в виду.


kmikeЧитабельность EXPLAIN'a Терадаты впечатляет :)

Все отмечают. Мне тоже очень нравится. По-пусски, правда, не умеет :(


kmike"which is redistributed by hash code to all AMPs" - вот этот момент интересен, по какому хэшу оно переспределяется?
И, получается, с каждого узла все данные, удовлетворяющие фильтру, надо будет отправить на каждый остальной узел? Не возникает ли здесь узкого места? Допустим, 10ГБ при 0.18ГБ/с (и это, небось, теоретически, то есть в вакууме) - это примерно минута.. Кстати, оно широковещательно передаётся или на каждый узел отдельно?

redistributed - это перераспределение. Оно широковещательным не может быть. Данные из одного AMP должны скопироваться на другой, а не на все сразу. Точка-точка будет. Или с маленькой вероятностью за пределы узла не выйдет, если оба AMPа на одном узле.
duplicated - это уже будет копирование. Я не в курсе, будет здесь широковещательное или нет.
В принципе, можно эксперимент провести на 10-гигабайтной таблице на предмет времен её перераспределения.




С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34088419
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmikeвот этот момент интересен, по какому хэшу оно переспределяется?

По хэшу столбца (или группы столбцов), по которому будет делаться джойн.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34099682
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, сухой остаток:
В Терадате, получается, по ключу распределения ещё автоматом строится локальный хэш-индекс.

В DB2, насколько я помню, хэш используется только для распределения данных по партициям, а строить или нет по этому полю индекс-оставлено на усмотрение пользователя. PRIMARY KEY при этом поддерживается в полном объёме. (Запишем в минус ограничение - Any unique key or primary key must contain all of the partitioning key columns. )

Про простоту сопровождения ничего не могу сказать, самая большая инсталляция DB2 DPF, которую мне доводилось видеть-это 16 разделов. И, кстати, это смешанная OLTP+DSS система.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34101012
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymousЦитатки неаккуратно из контекста вырезаете.
В первой, к примеру, обсуждается исключительно PARTITION-WISE JOIN. И ничего более. Вы же цитируете, словно это общее правило и системное ограничение.
Супер. Расскажите о других способах распаралеливания join-ов в Oracle.
Код: 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.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
SQL> create table ane_t(a number, b number) partition by hash(a) partitions  5  parallel  4 ;

Table created

SQL> insert into ane_t select rownum, rownum from dual connect by level <  10000 ;

 9999  rows inserted

SQL> create table ane_t2(a number, b number) partition by hash(a) partitions  11  parallel  7 ;

Table created

SQL> insert into ane_t2 select * from ane_t;

 9999  rows inserted

SQL> commit;

Commit complete

SQL> exec dbms_stats.gather_table_stats(user,'ANE_T');

PL/SQL procedure successfully completed

SQL> exec dbms_stats.gather_table_stats(user,'ANE_T2');

PL/SQL procedure successfully completed

SQL> explain plan for select * from ane_t t1, ane_t2 t2 where t1.a=t2.b;

Explained

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  | Pstart| Pstop |  TQ    |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT     |             |   9999  |   136K|      5  |       |       |        |      |            |
|*   1  |  HASH JOIN           |             |   9999  |   136K|      5  |       |       |  41 , 01   | P->S | QC (RAND)  |
|    2  |   PARTITION HASH ALL |             |       |       |       |      1  |      5  |  41 , 01   | PCWP |            |
|    3  |    TABLE ACCESS FULL | ANE_T       |   9999  |  69993  |      2  |      1  |      5  |  41 , 01   | PCWP |            |
|    4  |   PARTITION HASH ALL |             |       |       |       |      1  |     11  |  41 , 01   | PCWP |            |
|    5  |    TABLE ACCESS FULL | ANE_T2      |   9999  |  69993  |      3  |      1  |     11  |  41 , 00   | P->P | PART (KEY) |
-----------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    1  - access("T1"."A"="T2"."B")
Note: cpu costing is off

 18  rows selected

SQL> rollback;

Rollback complete

SQL> explain plan for select * from ane_t t1, ane_t2 t2 where t1.a=t2.a;

Explained

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  | Pstart| Pstop |  TQ    |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT     |             |   9999  |   136K|      5  |       |       |        |      |            |
|*   1  |  HASH JOIN           |             |   9999  |   136K|      5  |       |       |  42 , 01   | P->S | QC (RAND)  |
|    2  |   PARTITION HASH ALL |             |       |       |       |      1  |      5  |  42 , 01   | PCWP |            |
|    3  |    TABLE ACCESS FULL | ANE_T       |   9999  |  69993  |      2  |      1  |      5  |  42 , 00   | P->P | BROADCAST L|
|    4  |   PARTITION HASH ALL |             |       |       |       |      1  |     11  |  42 , 01   | PCWP |            |
|    5  |    TABLE ACCESS FULL | ANE_T2      |   9999  |  69993  |      3  |      1  |     11  |  42 , 01   | PCWP |            |
-----------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    1  - access("T1"."A"="T2"."A")
Note: cpu costing is off

 18  rows selected

SQL> rollback;

Rollback complete

SQL> alter table ane_t add partition;

Table altered

SQL> alter table ane_t add partition;

Table altered

SQL> alter table ane_t add partition;

Table altered

SQL> alter table ane_t add partition;

Table altered

SQL> alter table ane_t add partition;

Table altered

SQL> alter table ane_t add partition;

Table altered

SQL> select table_name, count(*) from user_tab_partitions where table_name in ('ANE_T','ANE_T2') group by table_name;

TABLE_NAME                       COUNT(*)
------------------------------ ----------
ANE_T                                   11 
ANE_T2                                  11 

SQL> exec dbms_stats.gather_table_stats(user,'ANE_T');

PL/SQL procedure successfully completed

SQL> explain plan for select * from ane_t t1, ane_t2 t2 where t1.a=t2.a;

Explained

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  | Pstart| Pstop |  TQ    |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT     |             |   9999  |   136K|      6  |       |       |        |      |            |
|    1  |  PARTITION HASH ALL  |             |       |       |       |      1  |     11  |  43 , 00   | PCWP |            |
|*   2  |   HASH JOIN          |             |   9999  |   136K|      6  |       |       |  43 , 00   | P->S | QC (RAND)  |
|    3  |    TABLE ACCESS FULL | ANE_T       |   9999  |  69993  |      3  |      1  |     11  |  43 , 00   | PCWP |            |
|    4  |    TABLE ACCESS FULL | ANE_T2      |   9999  |  69993  |      3  |      1  |     11  |  43 , 00   | PCWP |            |
-----------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    2  - access("T1"."A"="T2"."A")
Note: cpu costing is off

 17  rows selected

SQL> 
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34101317
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymous1) "Для паралельного выполнения запросов нужно использовать partitioning"
Утверждение ложно, поскольку данное ограничение действует не на любые запросы.
Если бы Вы удосужились правильно описать классы запросов, для которых ограничение актуально - проблем бы не было.
Если бы Вы читали ветку, в которую пишите, то таких вопросов бы не возникало:
Зл0йПредположим что есть 2 таблицы table_a и table_b. Предположим что первичные индексы данных таблиц построены по атрибутам column_a1 и column_b1 соответственно. Теперь строим Join такой что column_a1=column_b27. Доступ в table_b идет не по первичному индексу. т.е. amp'у прочитавшему страницу данных из таблицы table_a придется данные для таблицы table_b собирать со всех amp'ов системы через Bynet. Ведь они же раскиданы по amp'ам исходя из хеширования по column_b1. Теперь предположим что обе таблицы по 200 миллионов записей, чтобы жизнь медом не казалась.Так и не понял, как Вы связали одно с другим.
А речь в посте, на который Вы ссылаетесь, таки шла о ТераДата и противопоставляются модели сборки этих данных по interconnect в shared nothing и чтение всеми узлами с диска в shared disk, просто иллюстрация невсесильности ByNet. Андрей Прохоров andrey_anonymous2) "Чтобы обеспечить равномерную загрузку узлов .... придется использовать hash partitioning"
Утверждение ложно. С учетом конкретного содержимого равномерное распределение данных может быть достигнуто и на range, и на list.
Готовим partitioning под фиксированные запрос и содержимое. Технологично. Шаг влево, шаг вправо всю оптимизацию сдаем в утиль Это закон жизни, и TeraData тут находится в том же печальном положении, как и любая другая СУБД... Андрей Прохоров andrey_anonymous3) "как вы обеспечите равномерную загрузку 10 узлов, если 10 не является степенью 2"
Для начала сумейте показать, что имеющаяся неравномерность (напомню приведенную Вами цитату, в худшем случае самый большой раздел может оказаться в два раза больше самого маленького) заметно повлияет на время исполнения запроса, если разделов более двух.
Доказывать, что 2х2=4 не собираюсь.
Так и запишем: обоснования предоставить не смог. Андрей Прохоров andrey_anonymousЕсли же немножко отвлечься от стиля документалистов oracle и вспомнить, что речь таки идет о хеш-функции, то можно достаточно легко предложить пример исходных данных, которые улягутся, к примеру, всей толпой в один и тот же раздел. Актуально и для TeraData, и для Oracle, и вообще для любой системы, разделяющей данные по хеш. Берем 200 млн. x N записей, раскладываем по хэш функции по N партициям, потом берем все записи, попавшие в одну партицию и кричим "караул!". Дальше что?
Дальше понимаем, что абсолютных правил в этой жизни нет и распределение данных по хеш-разделам по-настоящему зависит не от количества этих разделов, а от характера данных.
Ч.Т.Д. :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34101351
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел НовокшоновПоследний upgrade у моего клиента занял порядка 20-25 часов. База при этом не доступна пользователям . Некоторые клиенты имеют резервные системы (в рамках решения dual-active), при этом пользователи перенаправляются на резервную систему если основная не доступна. На практике добавление новых узлов в кластер происходит не так часто, как правило раз в 1,5 - 2 года.
Упс... Это грустно.
В оракеле с этим хоть и неидеально, но как-то попроще - online redefinition всякие и плюс совершенно необязательно сразу кидаться все секционированные таблички перелопачивать, можно и по одной...
Кроме того, если я правильно понимаю, пользователи резервной системы ограничены только выборкой данных? Или ТераДата предлагает системные механизмы для прогона проведенных в резервной базе изменений по боевой после окончания перераспределения?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34102386
MSTR Fan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousТак и не понял, как Вы связали одно с другим.
А речь в посте, на который Вы ссылаетесь, таки шла о ТераДата и противопоставляются модели сборки этих данных по interconnect в shared nothing и чтение всеми узлами с диска в shared disk, просто иллюстрация невсесильности ByNet.
Уважаемый, BYNET не всесилен, а масштабируем. Многим этого хватает.
В Вашем примере запроса почему-то делается join таблиц по 10к записей. Могу ответственно заявить что join таких таблиц TD тоже сделает очень быстро. Покажите план для 200 млн., и колонок было бы здорово добавить. И узлов в системе, чтобы было понятно как Oracle автоматически распределит работу между узлами, как это делает TD.

andrey_anonymous
Это закон жизни, и TeraData тут находится в том же печальном положении, как и любая другая СУБД...

Вы не понимаете предмета. Range partitioning в TD - это не о том как по AMP-ам данные распределить, а о том как внутри АМР-а отсортировать. И если hash partitioning у Вас сделан нормально (в TD он первичен) то даже если у Вас все записи попали в один range partition, параллелизм от этого не пострадает.

andrey_anonymousДальше понимаем, что абсолютных правил в этой жизни нет и распределение данных по хеш-разделам по-настоящему зависит не от количества этих разделов, а от характера данных.
Ч.Т.Д. :)

В случае равенства количества возможных значений хэша (кол-ва разделов), конечно. В TD 65536 значений.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34102414
Андрей ПрохоровРасскажите о других способах распаралеливания join-ов в Oracle.

andrey_anonymous
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  | Pstart| Pstop |  TQ    |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT     |             |   9999  |   136K|      5  |       |       |        |      |            |
|*   1  |  HASH JOIN           |             |   9999  |   136K|      5  |       |       |  41 , 01   | P->S | QC (RAND)  |
|    2  |   PARTITION HASH ALL |             |       |       |       |      1  |      5  |  41 , 01   | PCWP |            |
|    3  |    TABLE ACCESS FULL | ANE_T       |   9999  |  69993  |      2  |      1  |      5  |  41 , 01   | PCWP |            |
|    4  |   PARTITION HASH ALL |             |       |       |       |      1  |     11  |  41 , 01   | PCWP |            |
|    5  |    TABLE ACCESS FULL | ANE_T2      |   9999  |  69993  |      3  |      1  |     11  |  41 , 00   | P->P | PART (KEY) |
-----------------------------------------------------------------------------------------------------------------

Ну где здесь Query Coordinator, где паралелизм?
Матчасть не знаем, совсем

andrey_anonymousЭто закон жизни, и TeraData тут находится в том же печальном положении, как и любая другая СУБД...
Для сравнения рекомендую разобраться как работает паралельное выполнение join-ов в Oracle, потом уже можно с чем-то сравнивать.

andrey_anonymousДля начала сумейте показать, что имеющаяся неравномерность (напомню приведенную Вами цитату, в худшем случае самый большой раздел может оказаться в два раза больше самого маленького) заметно повлияет на время исполнения запроса, если разделов более двух.
Опять RTFM
"You can also join range partitioned tables with range partitioned tables and list partitioned tables with list partitioned tables in a partition-wise manner, but this is relatively uncommon. This is more complex to implement because you must know the distribution of the data before performing the join. Furthermore, if you do not
correctly identify the partition bounds so that you have partitions of equal size, data skew during the execution may result."
Паралельное выполнение join-ов в Oracle реализуется при помощи full или partial partition-wise join. В обоих случаях "the granule of parallelism is a partition". Если один из партишенов больше другого, то получается неравномерная нагрузка на серверы, чтобы понять как это увеличивает время выполнения запроса лучше почитать документацию, если сразу не понятно.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34102503
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПрохоровНу где здесь Query Coordinator, где паралелизм?
Матчасть не знаем, совсем
Тезка, прежде чем хамить, обращаем внимание на колоночку "PQ Distrib" и вдумчиво размышляем над сутью происходящего.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34102522
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSTR Fan andrey_anonymousТак и не понял, как Вы связали одно с другим.
А речь в посте, на который Вы ссылаетесь, таки шла о ТераДата и противопоставляются модели сборки этих данных по interconnect в shared nothing и чтение всеми узлами с диска в shared disk, просто иллюстрация невсесильности ByNet.
Уважаемый, BYNET не всесилен, а масштабируем. Многим этого хватает.Вернитесь пожалуйта к предмету обсуждения, для которого с меня был спрошен пример - соединение "мимо" ключа секционирования MSTR FanВ Вашем примере запроса почему-то делается join таблиц по 10к записей. Могу ответственно заявить что join таких таблиц TD тоже сделает очень быстро. Покажите план для 200 млн., и колонок было бы здорово добавить.10000 строк - я на сервере не один живу и мне не очень интересно кушать ресурсы ради дискуссий. Можно и больше, но как, с Вашей точки зрения, должен измениться план? MSTR Fan И узлов в системе, чтобы было понятно как Oracle автоматически распределит работу между узлами, как это делает TD.В данном случае имеем дело с SMP-машиной, подходящего для тестов RAC у меня сегодня под рукой, к сожалению, нет.
MSTR Fan andrey_anonymousЭто закон жизни, и TeraData тут находится в том же печальном положении, как и любая другая СУБД...
Вы не понимаете предмета. Range partitioning в TD - это не о том как по AMP-ам данные распределить, а о том как внутри АМР-а отсортировать. И если hash partitioning у Вас сделан нормально (в TD он первичен) то даже если у Вас все записи попали в один range partition, параллелизм от этого не пострадает.Вы спешите с выводами. Этот тест скорее аналогичен несекционированной, если так можно выразиться, табличке в TD.
Аналогом секционированной будет, к примеру, range+hash секционирование. Но даже простые планы вызывают бурю в стакане воды и недопонимание, что уж говорить о более сложных планах :) MSTR Fan andrey_anonymousДальше понимаем, что абсолютных правил в этой жизни нет и распределение данных по хеш-разделам по-настоящему зависит не от количества этих разделов, а от характера данных.
Ч.Т.Д. :)
В случае равенства количества возможных значений хэша (кол-ва разделов), конечно. В TD 65536 значений.
Маловато будет :)
Если верить Database Limits , то в оракеле таблица может состоять из 1024К-1 разделов :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34102554
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров andrey_anonymousДля начала сумейте показать, что имеющаяся неравномерность (напомню приведенную Вами цитату, в худшем случае самый большой раздел может оказаться в два раза больше самого маленького) заметно повлияет на время исполнения запроса, если разделов более двух.
Опять RTFM
"You can also join range partitioned tables with range partitioned tables and list partitioned tables with list partitioned tables in a partition-wise manner, but this is relatively uncommon. This is more complex to implement because you must know the distribution of the data before performing the join. Furthermore, if you do not
correctly identify the partition bounds so that you have partitions of equal size, data skew during the execution may result."
Паралельное выполнение join-ов в Oracle реализуется при помощи full или partial partition-wise join. В обоих случаях "the granule of parallelism is a partition". Если один из партишенов больше другого, то получается неравномерная нагрузка на серверы, чтобы понять как это увеличивает время выполнения запроса лучше почитать документацию, если сразу не понятно.
Долго думал, стоит ли отвечать на это несколько странный пассаж.
Но таки отвечу.
Итак, что же Вы процитировали? Примерно следующее: "Вы также можете соединять секционированные по range или list таблицы с таблицами, секционированными по list, но это менее универсально, и более сложно в реализации, поскольку надо хорошо представлять себе распределение данных. Более того, если границы разделов не определены таким образом, чтобы получить разделы равных размеров, может иметь место переко данных"
И как это иллюстрирует ход Ваших мыслей? А никак, ибо цитата взята первая попавшаяся. Да, можно сделать плохо. А можно и хорошо. Когда проектируется база, она всегда проектируется под определенные задачи. И никакой "робот" этого факта отменить не в состоянии, хоть весь concepts здесь перецитируйте.
Итак, выяснили - можно получить "перекос данных". Но это мы выяснили еще несколько постов назад.
И что же Вы ответили на просьбу оценить влияние подобного перекоса на время выполнения запроса? Вот: "получается неравномерная нагрузка на серверы, чтобы понять как это увеличивает время выполнения запроса лучше почитать документацию, если сразу не понятно".
То есть опять ничего не ответили.
Создается впечатление, что Вы просто сотрясаете форум неуместными цитатами и надуваете щеки, попутно обсуждая личность собеседника.
Неспортивно, уважаемый.
Все-таки попробуйте ответить на этот вопрос, после чего мы сможем продолжить обсуждение этого влияния в несколько ином аспекте, чего лично я уже давно жду :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34102558
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский
Константин, спасибо за Ваши комментарии относительно ТераДата.
Я для себя вынес следующее, поправьте пожалуйста если я где-то неправ:
1) Количество разделов таблицы в ТераДата обязательно кратно количеству узлов, невозможно "вертикально" распределить вычислительные мощности в соответствии с потребностями приложений (например, днем 8 узлов операторам, 2 узла - batch, ночью наоборот).
2) Основными конкурентными преимуществами ТераДата на сегодняшний день являются относительно простой синтаксис DDL, user-friendly вывод explain plan, программно-аппаратный комплекс ByNet, значительное количество реальных инсталляций с десятками и сотями узлов.
3) Основными недостатками ТераДата являются длительные простои при переконфигурировании, практическая непригодность для смешанных oltp+dss приложений, непригодность для систем 24х7 ввиду простоя во время резервного копирования (низкий коэффициент готовности). То есть область ее применения ограничена чистым DWH.

Еще хотелось бы, если возможно, узнать про возможности системы по обеспечению load balancing и application failover.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34102719
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousпрограммно-аппаратный комплекс ByNet, значительное количество реальных инсталляций с десятками и сотями узлов.

Пока не вижу преимуществ ByNet.
Кол-во инсталляций с десятками и сотнями узлов-думаю, что у компании по производству арифмометров (с) больше :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34105659
andrey_anonymousТезка, прежде чем хамить
Забавно. Призывы внимательнее читать документацию называют хамством, а ответ на замечания оппонента вида "полная ересь" и "надувание щек" - в порядке вещей.
andrey_anonymousобращаем внимание на колоночку "PQ Distrib" и вдумчиво размышляем над сутью происходящего
Давайте размышлять вместе. Я задал простой вопрос - "Расскажите о других способах распаралеливания join-ов в Oracle", т.е. способах помимо partition-wise. Так поподробнее пожалуйста, что за способ join-а, где описан и т.д. Из explain-а вижу обычный partition-wise.

Фактически я сделал несколько утверждений:
1) Для паралельного выполнения join-а в Oracle необходимо использовать partitiong
2) Минимальной единицей паралелизма при join-е является partition
3) Перекос в распределении данных между partition-ами ухудшает производительность паралельной обработки.

Первые два утверждения пока аргументировано не опровергнуты. Ничем не обоснованные заявления вида "полная ересь" не убедительны.
Если третье утверждение, основанное на официальной документции Oracle, разъяснениях Тома Кайта оставляет сомнения, то пока повременю со своими собственными аргументами, давайте разберемся с первыми двумя утверждениями.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34105714
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous Константин, спасибо за Ваши комментарии относительно ТераДата.

Пожалуйста. Надеюсь, что они были полезными.


andrey_anonymous Я для себя вынес следующее, поправьте пожалуйста если я где-то неправ:
1) Количество разделов таблицы в ТераДата обязательно кратно количеству узлов, невозможно "вертикально" распределить вычислительные мощности в соответствии с потребностями приложений (например, днем 8 узлов операторам, 2 узла - batch, ночью наоборот).

Если под рзаделами вы понимаете hash buckets (разделы хжш-распределения таблицы), то их для каждой таблицы (включая таблицы системного каталога) ВСЕГДА 65536 (или 65535 точно не помню).
Они делятся между AMPами пропорционально количесту последних в системе.
Таким, образом, каждый AMP хранит и обрабатывает более одного бакета.
Степень параллелизма определяется не количеством бакетов, а количеством AMPов. Каждый узел конфигурируется так, что на нём обычно работает 8-10 AMPов.


Помимо этого, тбалица может иметь PARTITIONED PRIMARY INDEX (то есть, может быть партицированной помимо того, что она распределена по хэшу первичного индекса). Партишионов может быть до 65535 тоже. Этот партишионинг логический, он только определяет порядок логической сортировки записей внутри AMP.
Таким образом каждая таблица может быть логически разделена на 2^9 кусочков (если она достаточно велика для этого).


По поводу "вертикального" деления системы между приложениями - это совсем не нужно. Её можно спокойно разделить горизонтально. То есть, часть системы отдать под загрузку, часть - под отчётность, часть под data mining, часть - под тактические запросы. Причём всё это можно делать динамически. Я считаю, что это гораздо более правильный способ, нежели возиться с определением количества узлов, необходимого приложениям.


andrey_anonymous2) Основными конкурентными преимуществами ТераДата на сегодняшний день являются относительно простой синтаксис DDL, user-friendly вывод explain plan, программно-аппаратный комплекс ByNet, значительное количество реальных инсталляций с десятками и сотями узлов.

Помимо этого, высокая степень параллельной обработки, лёгкость администрирования, поскольку СУБД сама автоматически следит за том, как данные хранятся на дисках. Отличные возможности динамического управления нагрузкой.


3) Основными недостатками ТераДата являются длительные простои при переконфигурировании, практическая непригодность для смешанных oltp+dss приложений, непригодность для систем 24х7 ввиду простоя во время резервного копирования (низкий коэффициент готовности). То есть область ее применения ограничена чистым DWH.

Я бы сказал так - наличие простоев, поскольку отсутствует определение "длительного" простоя. Ну, и нужно отметить, что от версии к версии длительность простоев для переконфигурирования сокращается.

По поводу OLTP - всё правильно, для OLTP Терадата никогда не позиционировалась - это специализированная СУБД для хранилищ данных. Однако, если говорить о нагрузке класса сложные DSS запросы + короткие запросы на чтение, то Терадата отлично поддерживает такой смещанный вид нагрузки. Например, систему можно сконфигурировать так, что на фоне тяжёлых аналитических запросов система будет выполнять короткие запросы типа "показать данные по одному конкретному клиенту" с заданным уровнем SLA.

По поводу 24х7 и коэффициента готовности системы. Нужно отметить, что очень многие клиенты Терадата используют её как mission critical систему.
Для обеспечения 24х7 существует такая конфигурация, как dual active - то есть две системы работающие параллельно, которые постоянно синхронизируются друг с другом.
Об этом можно почитать здесь .


andrey_anonymous Еще хотелось бы, если возможно, узнать про возможности системы по обеспечению load balancing и application failover.

А что именно? Я попробую рассказать.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34106738
Павел Новокшонов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous 3) Основными недостатками ТераДата являются длительные простои при переконфигурировании, практическая непригодность для смешанных oltp+dss приложений, непригодность для систем 24х7 ввиду простоя во время резервного копирования (низкий коэффициент готовности). То есть область ее применения ограничена чистым DWH.


При резервном копировании Teradata полностью доступна для чтения, а при наличии журнала транзакций в базу во время backup'a можно и писать данные. На практике обычно стараются не совмещать процессы загрузки данных в хранилище и резервное копирование. Про длительные простои при переконфигурировании, ХД данных это конечно mission-critical система для любой компании, но по выходным полезная активность таких систем падает до ноля. Аналитики сидят дома, пьют пиво и смотрят футбол, а не гоняют запросы. Так что раз в 2 года сделать outage на выходных - лично я не вижу в этом проблем, в отличии от OLTP систем - к примеру системы резервирования авиабилетов на expedia.com. А если уж совсем mission-critical - то это dual-active.

Про чистый DWH тоже не совсем верно. Есть клиенты которые мешают в одной системе приложения/запросы с разными требованиями по времени ответа, ну и различной сложности естественно. Как уже тут сказал Константин single-AMP запросы Teradata выполняет очень быстро в силу того, что хэш алгоритм позволяет точно определить AMP на котором лежат данные. Кроме того механизм приотизирования распределения ЦПУ ресурсов позволяет создавать разные классы пользователей для различных приложений. К примеру такой single AMP select будет выполняться очень быстро.

create table A (c1 integer..) primary index (c1)

select * from A where c1=123

Но конечно делать чисто OLTP систему на Teradata не имеет смысла. Архитектура Teradata на мой взгляд лучшая для построения корпоративных хранилищ, когда кол-во данных зашкаливает, а пользователей много и запросы сложные. Все что пытается делать Oracle и "голубой" производитель арифмометров - это предложить что-то похожее и вроде как более гибкое, но из-за этого мудренное и менее универсальное.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34106750
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Новокшонов что-то похожее и вроде как более гибкое, но из-за этого мудренное и менее универсальное.

Ну уж это, извините, перегиб! Вот как раз ТД-менее универсальное, чистый DWH. А на Оракле и DB2 - хошь OLTP, хошь DSS, хошь и то и другое в одном флаконе.
Про якобы сложность DB2 тоже в корне не согласен-достаточно простая в установке, настройке и сопровождении вещь. С Терадатой не работал, не знаю-может, там всё ещё проще. А может, оно проще за счёт того, что для всяких там добавлений узлов всё равно приезжает инженер техподдержки?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34108381
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин, чем же DB2 сложнее Терадаты? На ум приходит только подбор partitioning key. Который у же как года полтора можно выбирать с помощью wisard'a.
Который на основании схемы и workload позволит подкорректировать неправильный выбор.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34110497
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nkulikovКонстантин, чем же DB2 сложнее Терадаты?

А где я это написал? Можно процитировать?

nkulikovНа ум приходит только подбор partitioning key. Который у же как года полтора можно выбирать с помощью wisard'a.
Который на основании схемы и workload позволит подкорректировать неправильный выбор

Возможно, для подобного сравнения Вам нужно детально ознакомиться с Терадатой, а мне с DB2 UDB.

Мне сейчас, если честно, немного не до этого. Может быть, коллеги, которые лучше меня DВ2 знают, что-то напишут.

Для начала можно было бы обсудить план запроса, который я запостил некоторое время назад. Можете привести аналогичный для DB2?

Интересно также было бы обсудить возможности Dynamic Workload Management, раз уж вы эту тему затронули.
Какие в ядре DB2 существуют механизмы динамической приоретизации пользовательских сессий? Можно ли динамически изменять выделение ресурсами между сессиями (например, наказать пользователя путём уменьшения количества выделяемых на него ресурсов в единицу времени, если он превысил лимит определённых ресурсов, например ЦП или дисков)? Или для этого нужно пользоваться внешними утилитами (например, утилитами ОС)? И насколько это гибко?
Актуально для больших систем со смешанной нагрузкой и необходимостью обеспечить SLA для определённых коротких запросов на фоне тяжёлых DSS-запросов.

Кстати, а сколько в последней версии DB2 хэш-партишионов можно иметь на таблице? Это к вопросу о перекосах в данных.

А вышеописанный процесс реконфигурирования массивно-параллельной системы (например, добавление новых узлов) как выглядит?

И ещё, вот сравнил два FDR теста TPC-H. Один от DB2, один от Oracle. Увидел, что у Oracle оверхед по дискам 1 к 23, у DB2 - 1 к 11.78.
Как-то многовато, на мой взгляд на Терабайт данных 11 Терабайт сырвх дисков. Про 23 Терабайта - по-моему, очень даже, многовато...

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34110508
nkulikovКонстантин, чем же DB2 сложнее Терадаты?
Я бы сказал более политкорректно - Teradata проще в администрировании, чем DB2. Спорить с этим не имея реального опыта работы с этими СУБД дело неблагодарное.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34110515
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский
Какие в ядре DB2 существуют механизмы динамической приоритезации пользовательских сессий? Можно ли динамически изменять выделение ресурсов между сессиями
В Оракле можно (Resource Manager), в DB2, насколько я знаю - нет.
Константин ЛисянскийИ ещё, вот сравнил два FDR теста TPC-H. Один от DB2, один от Oracle. Увидел, что у Oracle оверхед по дискам 1 к 23, у DB2 - 1 к 11.78.
Как-то многовато, на мой взгляд на Терабайт данных 11 Терабайт сырых дисков. Про 23 Терабайта - по-моему, очень даже, многовато...
Это они хитрили для увеличения скорости дисков - использовали только внешние цилиндры для активных данных. Обычная практика. Остальное пространство в реальной жизни используется для хранения бакапов и прочего (some external redundancy is assumed :)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34110727
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский
Интересно также было бы обсудить возможности Dynamic Workload Management, раз уж вы эту тему затронули.

Там это называется Query Patroller. Но по-моему, в комплекте не идёт (разве что в Data Warehouse Edition - DWE).

Константин Лисянский
Кстати, а сколько в последней версии DB2 хэш-партишионов можно иметь на таблице? Это к вопросу о перекосах в данных.

4096. Зато можно создавать custom distribution file, в котором указать, какие партиции на какие узлы надо класть.

Константин Лисянский
А вышеописанный процесс реконфигурирования массивно-параллельной системы (например, добавление новых узлов) как выглядит?

Подключаем узел физически. Добавляем в БД логически. Увы, чтобы он стал доступен-перестартовать таки придётся. Но это недолго, не часы и не дни. (Цитирую доку:You can add new database partitions to a partitioned database environment while it is running and while applications are connected to databases. However, a newly added server does not become available to all databases until the database manager is shut down and restarted.)
После этого можно запускать процесс перераспределения данных.
Насколько я знаю-обычно делают проще - заранее создают бОльшее число партиций, чем узлов, а при добавлении узлов просто перецепляют некоторые партиции на новые узлы. Тогда весь процесс можно уложить в минуты.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34111604
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) DB2 Query Patroller + 2) DB2 Governor.

1) Это проактивное реагирование на запросы покупается отдельно (не обязательно в рамках DB2 DWE)
Константин, извини перепутал твой пост с постом Павла

Запросы разбиваются администратором на категории (профайлы) и при компиляции (или перед выполнением) перед выполнением относятся к одной из них. В зависимости от настроек выполение далее идет по разному
Например мы описываем что у нас на системе может одновременно выполнятся
100 коротких запросов стоимость которых < 100
30 средних запросов стоимость которых < 10000
2 сложных запроса стоимость которых > 10000

Когда придет 3 сложный запрос, DB2 не станет его выполнять, а поставит его в очередь. Пользователь получит предупреждение что его запрос отложен и за результатом он должен придти в таблицу YYY

Конечно в категории можно к этому добавить пользователей, приложения etc.
Можно так же каждой категории выставлять приоритеты.

A Query Patroller submitter profile is a set of characteristics that define:

* Whether Query Patroller should intercept queries from a submitter
* If the submitter's queries are intercepted, what resource limits are applied to those queries
* What priority level the submitter's queries have in a queue
* The submitter's charge-back account code (to be used for cost tracking purposes)

2) реактивное реагирование на запросы
Governor понижает приоритеты, отстреливает пользователей по факту перерасхода ресурсов.


P.S. Вечером посторяюсь закинуть план.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34111758
nkulikovЗапросы разбиваются администратором на категории (профайлы) и при компиляции (или перед выполнением) перед выполнением относятся к одной из них.
А на основании чего определяется сложность запроса, и как следствие, принадлежность его к той или иной категории?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34111919
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34117984
kmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И всё-таки хотелось бы услышать о параметрах ByNet: максимальная длина линка, скорость, задержка.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34142070
OraBug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Лисянский

SELECT c1, c2, c3
FROM table_1
WHERE unique_primary_index=5

Выполнится, в общем случае, за одно чтение с диска.

Назовите другую СУБД, которая так сумеет. Подозреваю, что сначала почитается индекс, а потом данные. В Терадате же первичный индекс - это не индекс, а функция.


--> Oracle так умеет )
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34142083
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraBugВыполнится, в общем случае, за одно чтение с диска.
Общий случай ограничивается IOT с малым количеством строк?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34142102
OraBug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обычно только там это и важно.

Но на самом деле Вы заблуждаетесь по теме их пременимости.

п.с.
а ведь есть ещё и cluster table, IOT + hash tables.
есть и другие возможности в Oracle
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34142124
OraBug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ох уж мне этот транслит ((
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34142545
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraBugа ведь есть ещё и cluster table, IOT + hash tables.
есть и другие возможности в Oracle
НУ так опять - заранее фиксированное число хэш ключей + негарантированное одно чтение. По сути, применимо только к таблицам с ограниченным с верху числом строк.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34151821
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркНУ так опять - заранее фиксированное число хэш ключей + негарантированное одно чтение. По сути, применимо только к таблицам с ограниченным с верху числом строк.

Да, похоже на то.

Oracle Enterprise Manager Database Tuning with the Oracle Tuning Pack Release 9.0.1The tables in the hash cluster are primarily static in size so that you can determine the number of rows and amount of space required for the tables in the cluster. If tables in a hash cluster require more space than the initial allocation for the cluster, performance degradation can be substantial because overflow blocks are required.



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #34151875
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский Локшин МаркНУ так опять - заранее фиксированное число хэш ключей + негарантированное одно чтение. По сути, применимо только к таблицам с ограниченным с верху числом строк.
Да, похоже на то.
Господа, а бывает по-другому?
Реально применимая хеш-функция с "неограниченным количеством ключей"?
Гарантированное одно чтение, независимо от количества строк ?
Или я опять чего-то не понял?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608056
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите за реанимацию топика, коллеги. Просто вдруг захотелось взглянуть еще раз на все это с учетом текущей ситуации. Жизнь, как говорится, все расставила по своим местам - Oracle выпуском Exadata фактически подтвердил ущербность shared-everything архитектуры для задач обработки огромных объемов данных. Дальнейшее направление развития уже очевидно, все больше и больше обработки будет переносится на Exadata (которая shared-nothing) до тех пор, пока на стороне традиционной СУБД делать уже будет практически нечего. Т.о. получится, если и не Терадата в чистом виде, то что-то близкое к Netezza или AsterData (с наличием queen node)...
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608216
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex,

собственно, MS тоже сделала две заточки. одна называет Fast Track, вторая Parallel Data Warehouse ( на основе DATAllegro). собственно, Parallel Data Warehouse интересно, но... сделать такой проект в РФ - малореально. скорее всего, делать будет консалтинг MS.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608268
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ApexExadata (которая shared-nothing)
Пошел почитать.
Почитал.
Не нашел ни намека на shared-nothing.
Нашел, что Exadatовский сторадж построен на ASM.
Более того, нашел явное указание, что до 6 exadat-ов могут собираться в RAC.
Поделитесь плиз ссылкой где рассказано про shared-nothing
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608284
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousApexExadata (которая shared-nothing)
Пошел почитать.
Почитал.
Не нашел ни намека на shared-nothing.

Ячейки Экзадаты ничего не знают о существовании друг друга и свои ресурсы не разделяют.

andrey_anonymousБолее того, нашел явное указание, что до 6 exadat-ов могут собираться в RAC.
Exadata в RAC не собираются, они друг о друге ничего не знают. В RAC собираются сервера самой базы данных (я думаю, Вы это сами прекрасно знаете).

andrey_anonymousНашел, что Exadatовский сторадж построен на ASM.
ASM - он для RACа, поверх Экзадат. "Внутре" самих Экзадат никакого ASM'а...

andrey_anonymousПоделитесь плиз ссылкой где рассказано про shared-nothing
ОК, это мое умозаключение, Ваше право с ним не согласиться и/или обоснованно доказать обратное.

Для меня картина выглядит именно так: вектор развития именно в направлении перемещения нагрузки на ячейки Экзадаты, первая версия умела только bloom\predicate filter и column projection. Вторая уже знает о data mining функциях, следующий шаг, имхо, локальный джойн, локальная сортировка, группировка и т.д.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608308
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ApexОК, это мое умозаключение, Ваше право с ним не согласиться и/или обоснованно доказать обратное.
:)
Забавно, что необходимости обосновывать собственное сенсационное умозаключение Вы не видите.

Судя по рекламе, в технологическом стеке oracle rdbms место exadata - "интеллектуальный жесткий диск", умеющий фильтровать возвращаемые результаты.
"Диски" объединяются в группы ASM, на которых размещаются табличные пространства, которые содержат сегменты, из которых состоят объекты БД, над все этим поднимается RAC со своим cache fusion...

Свои, возможно ошибочные, выводы я основываю на:

http://www.oracle.com/database/docs/sun-oracle-database-machine-faq.pdf
http://www.oracle.com/features/exadata.html
http://www.oracle.com/us/products/database/exadata/index.html

Если у Вас есть более полная/надежная информация - буду благодарен за ссылку
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608335
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousApexОК, это мое умозаключение, Ваше право с ним не согласиться и/или обоснованно доказать обратное.
:)
Забавно, что необходимости обосновывать собственное сенсационное умозаключение Вы не видите.
О чем спорите то? Вы ведь одно и то же утверждаете.
Вот highlevel архитектура . Если говорить, например, с точки зрения Mysql, то налицо
1) отказоустойчивый очень интеллектуальный sharding на уровне Exadata.
2) отказоустойчивый кластер на уровне базы данных, делающий sharding для приложения прозрачным.
Т.е. от обоих архитектур взяты лучшие элементы.
А вот та же картинка, но для MySQL . Найдите отличия ;)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608345
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin1) отказоустойчивый очень интеллектуальный sharding на уровне Exadata.

Да нет там никакого sharding, одна и та же строка данных может оказаться на любом из storage - где ASSM с ASM-ом место выделят, там и будет. Вы же назовете sharding-ом страйпинг RAID0 или фокусы RAID5? Тут очень похоже.
Можно взять любую картинку про Oracle RAC и написать на пиктограмме дисков "Exadata".

А спорим о том, что с точки зрения Apex Exadata якобы повернула архитектуру RAC в сторону shared-nothing, что, на мой взгляд, не имеет ничего общего с действительностью, поскольку каждый экземпляр в кластере по-прежнему "видит" _все данные.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608356
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
А спорим о том, что с точки зрения Apex Exadata якобы повернула архитектуру RAC в сторону shared-nothing, что, на мой взгляд, не имеет ничего общего с действительностью, поскольку каждый экземпляр в кластере по-прежнему "видит" _все данные.
Где проходит та граница, которая разделяет "интеллектуальный диск" от полноценной ноды в составе кластера? Что еще должна научиться делать Exadata, чтоб перестать быть просто "еще одним стореджом" для RAC? Exadata пока еще ничего не повернула (попробуй поверни то, что разрабатывалось десятилетиями) и возможно никогда окончательно не повернет. Но сам вектор задан именно в направлении shared-nothing, и мне кажется, что текущее решение - как минимум можно назвать гибридом, и развиваться оно будет в сторону переноса функций традиционной СУБД на Exadata.

P.S. Вот же не спиться то вам:)
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608676
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndin
А вот та же картинка, но для MySQL . Найдите отличия ;)
дык, это же банальный инмемори кеш, а не кластер. на сколько я знаю там shared-nothing только в том смысле, что там шарить физически нечего, все данные в памяти
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608722
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Alexander Ryndin
А вот та же картинка, но для MySQL . Найдите отличия ;)
дык, это же банальный инмемори кеш, а не кластер. на сколько я знаю там shared-nothing только в том смысле, что там шарить физически нечего, все данные в памяти
А что, данные в памяти не нужно разделять?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36608740
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Apex
А что, данные в памяти не нужно разделять?
в РАКе данные кеша тоже в некотором смысле распределены ?
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36611853
artemg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Alexander Ryndin
А вот та же картинка, но для MySQL . Найдите отличия ;)
дык, это же банальный инмемори кеш, а не кластер. на сколько я знаю там shared-nothing только в том смысле, что там шарить физически нечего, все данные в памяти

нене, там начиная с какой-то версии часть данных честно на диске
индексы только в памяти, да
насколько он "полноценный" непонятно, но например выход из строя стораджевого NDB-узла в процессе работы для приложения вроде как не заметен (если этот узел не является координатором транзакции)
ещёб для sql узлов чёто типа TAF/FCF сделали
и ребалансинг с сохранением заданного уровня избыточности

и да, у ndb с экзадатой много общего в том, что часть чисто СУБД-шной работы (фильтрация строк по условию например) пушится вниз по стеку и отдаётся на откуп стораджу.
В mysql такая storage engine ориентированная архитектура была заложена изначально, занятно что Oracle делает шажок в этом направлении.
...
Рейтинг: 0 / 0
Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
    #36611857
artemg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во
Beginning with MySQL 5.1.6, it is possible to store the nonindexed columns of NDB tables on disk, rather than in RAM as with previous versions of MySQL Cluster.

ну и плюс с репликами/партициями у них там занятно
...
Рейтинг: 0 / 0
159 сообщений из 159, показаны все 7 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Сравнение СУБД (Oracle, DB2, Microsoft SQL Server, MySQL)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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