Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 11 12 13 14 15 16 17 [18] 19 20   вперед  Ctrl
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Ermak
Member

Откуда: Tomsk
Сообщений: 811
Comparer
короче цена оракла + супорт + спецы будет в любом случае дороже однако в результате вполне может оказатся дешевле даже в мелком бизнесе.

Сразу хочется попросить: "Поподробнее плиизз...."

Comparer
не знаю что вырезано в standart one, но фору в 2 месяца легко покроет только pl/sql + java ...


И понимаю, что поподробнее у человека не получется.
Одни клише типа: "Нам электричество пахать и сеять будет".
14 апр 04, 11:22    [627661]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
PL99
Member

Откуда: Moscow
Сообщений: 1367
автор
но фору в 2 месяца легко покроет только pl/sql + java ...

Взамен имеем (WatcomSQL + TransactSQL) + java.

И, заметьте, никаких мутирующих таблиц ;-)
14 апр 04, 13:17    [628126]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
2 Comparer

Вообще-то это не 2 зарплаты среднего программера, а меньше. Ну, максимум 1.3.
14 апр 04, 14:53    [628556]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Gera
Guest
Не, на самом деле, такое осщущение, что ораклистам на хвост наступили.
Кто-то пытается быть достаточно объективным, а кто-то банально гнет пальцы и пугает всех страшными "фичами" и снобизмом.
Догонит вас MS и по кол-ву "фичей" и по другому, перегонит и выплюнет(флейм так флейм) :)
Где был Netscape, пока MS с IE не пришел, и где сейчас :)
Где был WordPerfect, Lotus123 и д.р., и где сейчас, когда MSOffice и на MAC-ах уже популярность набирает :)
Где Netware?
Где Borland? - пока еще на плаву ... но смысла в Delphi8.NET и т.д. (не говоря уже о Borland C#) остается все меньше... (Вот здесь я даже всплакну, пожалуй ;(((( )
Где Sun со своими хвалеными SPARC-ами? С каждым годом все хуже и хуже...
Если так дальше пойдет, то от них одна JAVA и останется :)
Где SCO? :) - там же.
У знакомых в конторе сисадмин работал - OS/2 любил. Очень она ему нравилась, терпеть не мог "мелкомягких" - win презирал. Где он теперь? Года четыре/пять назад уволили за ненадобностью :(

А может у ораклистов тоже недобрые предчуствия? :)
По крайней мере, с win платформы "мелкомягкие" их погонят уж точно ("к бабке не ходи"). Вы не верите?

P.S. Триумф "мелкомягких" неизбежен как стихийное бедствие. Потому что это $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ :)
14 апр 04, 16:58    [628971]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Gera
Guest
А на самом деле, очень интересный разговор, если флейм отбросить (и мой в том числе) :)
Кабы не oracle и "остальные", было бы скучно в самом деле и MS не совершенствовался бы :)
14 апр 04, 17:16    [629019]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
DimaR
Member

Откуда:
Сообщений: 1570
Кину и сюда

Посмотрим сколько нужно MS догонять Oracle
и когда он появиться в этом списке?

Bigger & Better March 22, 2004


Just a few years ago, a data warehouse or transactional database that approached a terabyte was considered big. Today, "big" means tens of terabytes. Here's the story behind four of the largest data systems in the world, plus a government database project expected to reach up to 5 petabytes (or 5,000 terabytes) within several years and up to 50 petabytes in 20 years. All are examples of organizations pushing the edge of what's possible with database technologies.
14 апр 04, 17:28    [629065]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Merle
Guest
И еще пара замечаний..
1. Расскажите пожалуйста какой смысл имеет TOP в отсутствии сортировки? Учитывая, что в формальной теории четко сказано, что порядок обработки кортежей неопределен и как следствие результат возвращаемый top так же будет неопределен.

2. В открытом доступе нет ни одной мало-мальски значительной статьи. Кое что можно найти на конференциях VLDB, но и там за деньги. Большинство же актуальной информации доступно только в специальных изданиях или вообще является коммерческой тайной. Попробуйте найти в открытом доступе, например, статьи Мохана, по Key Range Locking'у или журналированию, на основе которых работают эти механизмы и в MSSQL и в DB2 и в Sybase - вас постигнет разочарование. Более-менее подробный доклад о механизме работы версионности в Оракле появился лишь в 97-98 году - лет 10 спустя после его реализации. Так что отсутствие в свободном доступе статей скорее доказывает то, что работы и Грея и Бернстайна достаточно актуальны. В отличии от того же Дейта.
Возможно я повторюсь, но на мой взгляд книга Бернстайна, не смотря на отсутствие переизданий аж с 87 года, и в плане формальной теории и в плане кое-каких нюансов практической реализации, может дать гораздо больше чем чуть-ли не ежегодно переиздаваемый толмуд Дейта.
14 апр 04, 17:35    [629098]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4257
--1. Расскажите пожалуйста какой смысл имеет TOP в отсутствии сортировки?

а какой смысл в функции RANDOM ? тем не менее она есть
14 апр 04, 22:36    [629542]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
c127
Guest
2 ASCRUS

Спасибо, буду пользоваться.

2 Merle

с127> К тому же мы нашли книгу Грея, по которой Дейт заведомо не учился.
Merle>И о чем это говорит? довольно смешной аргумент. ж))


Это таки была шутка. Хотя перебирая таким образом одну за одной книги Грея можно в принципе доказать, что Дейт у него либо ничему не учился, либо в этом не признается.

>Это не он.. ;) просто некоторые главы написаны не им, отсюда и смешение стилей, о чем честно и предупреждено.

Это как раз и есть признак низкого класса, когда авторы не хотят договориться между собой. Либо нужно было указать какую главу кто написал, чтоб можно было найти виновного. Я нашел только, что часть главы 3 была написана Y.C.Tay (preface v), так он автором не является и не упоминуть его нельзя. Скорее всего эта книга - отработка гонорара, когда каждый пишет как попало, без продуманной до деталей общей концепции, потом собирается вместе прогрессивным методом cut-paste и книга готова. Так получается дешевле для авторов, но хуже для читателей.

Вопрос: а какие именно главы написаны Бернстайном?

В любом случае, пока Вы не укажете, какие именно главы написаны им, эта книга аргументом в пользу высокого класса Бернстайна быть не может.

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

Верно, но раз он общепринят и определен раньше, то его не надо определять опять, достаточно дать ссылку. Либо же определять всерьез. Но вместо этого авторы начинают рассказывать, что begin это начало блока а end это конец блока. Немного странные подробности для общепринятого языка. Когда же дело доходит до ';', то говорят: а это как в Алголе или Паскале (с.4). При этом ссылок на документы определяющие тот или другой в тексте я не нашел.

>А я где-то что-то говорил против Кодда?

"Merle> Вы будете удивлены, но и Дейт и Кодд на этих книгах тоже кое-чему учились". Вот я и просил рассказать, чему Кодд научился на этих книгах (c127> а во-вторых ведь остался еще Кодд, который тоже вроде бы тоже учился у Грея с Бернстайном.).

> А все остальные, за исключением разьве что Sybase и Informix вообще никакой критики не выдерживают.

Я понимаю, Вы не читаете оппонентов, но хоть Вы свои-то изречения нужно знать, тем более что я уже Вам это уже цитировал: "Merle>Оракл, и все остальные известные мне оптимизаторы, будут выполнять два физических сканирования таблицы.". Вы же тут не говорите, что они критику не выдерживают, Вы говорите что они будут два раза сканировать таблицу.

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

> Ну запустите и сравните, у меня сейчас, к сожалению, под рукой ни Оракла ни DB2 нет..

А я ничего о двух сканированиях не утверждал, это Ваше утверждение, Вы и выкручивайтесь. Признайтесь честно: Вы этот запрос в оракле или ДБ2 не проверяли.

>Остальные сервера заставляют сканировать два раза MS - один.

Об остальных серверах см. выше.

>Стоимость сортировки в примере в 4 раза меньше стоимости полного сканирования таблицы.

А поподробнее? Для меня, например, цифра 4 не очевидна.

>Я имел вииду как раз обратное, что не смотря на то что в лоб сравнивать по большому счету действительно нельзя, сравнивая не в лоб план MS гораздо уачнее.

Сравнить не "в лоб" мы с Вами и не можем. Все что Вы видите в своем плане, это как раз и есть "лоб". Чтоб сравнить не "в лоб" необходимо посмотреть внутренние алгоритмы и процедуры, в которые разворачивается запрос при исполнении, а они по разным причинам скрыты от пользователя.

>1. Расскажите пожалуйста какой смысл имеет TOP в отсутствии сортировки? Учитывая, что в формальной теории четко сказано, что порядок обработки кортежей неопределен и как следствие результат возвращаемый top так же будет неопределен.

Там, где нужно гарантированно получить не больше одной строчки. Например в ембеддед SQL: select b, d into :z, :y from t where .... Строчек в результате может быть много, но значение пары (b,d) для них может быть единственно. В этой ситуации можно использовать select distinct, а можно select top 1, но в первом случае если (b,d) не уникально то возникнет ошибка.

>2. В открытом доступе нет ни одной мало-мальски значительной статьи. Кое что можно найти на конференциях VLDB, но и там за деньги. Большинство же актуальной информации доступно только в специальных изданиях или вообще является коммерческой тайной.

Иными словами Вы просите поверить Вам на слово, что в мелкософте действительно работают выдающиеся ученые. Так я вам верю, более того, одного мы даже нашли. Но это мало что меняет: по продуктам мелкософта и по тому что доступно невооруженному глазу их влияние не заметно, а ведь нас в конечном счете интересуют не абстрактные теории, выдвинутые сотрудниками мелкософта, а его программные продукты. Кстати абстрактных теорий в открытой печати пока тоже не видно.
17 апр 04, 05:20    [634239]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Green2
Member

Откуда: skype: green2x2
Сообщений: 13748
Вот, наобсуждали тут, кто же лучше...

Так кто же лучше?

Oracle - MS SQL ?

А может они одинаковые?
17 апр 04, 12:19    [634313]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Merle
Guest
Это таки была шутка.
Ну, таки надо смайлики ставить.. ;)

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

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

Вот я и просил рассказать, чему Кодд научился на этих книгах
Ну, у Кодда уже к сожалению не спросишь.

Вы же тут не говорите, что они критику не выдерживают, Вы говорите что они будут два раза сканировать таблицу.
Ну не надо опять передергивать.
И Оракл и ДБ2 будут два раза сканировать таблицу. Подозреваю, что и все остальные тоже ввиду того, что они еще хуже.
А фраза "не выдерживают критики" относилась ко всем кроме MSSQL, DB2, Oracle, Inormix, Sybase.

А я ничего о двух сканированиях не утверждал, это Ваше утверждение, Вы и выкручивайтесь. Признайтесь честно: Вы этот запрос в оракле или ДБ2 не проверяли.
Признаюсь, проверял. Могу утвердить еще раз: и БД2 и Оракл сканируют таблицу два раза.
Примерный план, как помню, я Вам написал, точный, к сожалению, привести не могу. Каких еще подробностей Вы хотите?

Чтоб сравнить не "в лоб" необходимо посмотреть внутренние алгоритмы и процедуры, в которые разворачивается запрос при исполнении, а они по разным причинам скрыты от пользователя.
Не так уж они и скрыты, если покопаться. Я копался - план MS выгоднее. Можете верить, можете не верить.
Косвенным доказательством моих слов может служить то, что в Оракле запрос select * from Departments where rownum<2 order by salary desc;
Являющийся полностью эквивалентным первому, с подзапросом, выполняется по плану очень напоминающему MSSQL'евский, естественно более оптимальному.

А поподробнее? Для меня, например, цифра 4 не очевидна.
Да куда подробнее-то? Глазам своим не верите?
Tbale scan - 80%, Sort - 20% стоимости запроса.

В этой ситуации можно использовать select distinct, а можно select top 1, но в первом случае если (b,d) не уникально то возникнет ошибка.
Что-то я не понимаю смысла этого примера. Если (b,d) не уникально, то должно иметь значение, какой именно (b,d) вернулся, а значит нужна сортировка. Иначе это явно какая-то дырка в проектировании.

Так я вам верю, более того, одного мы даже нашли.
Ёу!

Но это мало что меняет: по продуктам мелкософта и по тому что доступно невооруженному глазу их влияние не заметно, а ведь нас в конечном счете интересуют не абстрактные теории, выдвинутые сотрудниками мелкософта, а его программные продукты.
Ну не знаю, может Вы куда-то не туда смотрите? Мне как раз прогресс MSSQL'я и их влияние очень заметно. И сам по себе прогресс, и в сравнении с другими серверами.
18 апр 04, 18:40    [634901]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
c127
Guest
2 Merle

>Из этой книги я получил очень много и практической и теоретической информации, и считаю этого достаточным аргументом в пользу превосходства Бернстайна над большинством других авторов в данной области.

Тут спорить не с чем, так бы сразу и сказали. Раз Merle учился на книгах Бернстайна, то Бернстайн конечно, умнее большинства других авторов.

Похоже у нас празные понятия об аргументах, возможно потому Вы их в "сравнении SQL серверов" и не видите.

>Ну, у Кодда уже к сожалению не спросишь.

Не переводите стрелки, Кодд не утверждал, что он учился на тех книгах, это Вы утверждали, что Кодд учился на книгах Бернстайна и Грея, Вам и отвечать.

>Примерный план, как помню, я Вам написал,

Когда? Не помню. Цитатку.

>Каких еще подробностей Вы хотите?

План хочу. Сколько можно повторять. Хотя бы примерный, от оракла и ДБ2 и желатетльно всех остальных известных Вам SQL серверов. Это хоть как-то подтвердит Ваши слова, а пока они висят в воздухе.

>Не так уж они и скрыты, если покопаться. Я копался - план MS выгоднее.

Вот и расскажите нам, как именно, только не на уровне "верю-не верю", а хоть с какими-нибудь деталями.

>Что-то я не понимаю смысла этого примера. Если (b,d) не уникально, то должно иметь значение, какой именно (b,d) вернулся, а значит нужна сортировка. Иначе это явно какая-то дырка в проектировании.

Смысл - получить одну строку, не больше. Если Вы программировали с использованием embedded SQL, например в C, то знаете, что возврат более одного элемента вызывает ошибку. А если все записи равны, то нас вообще не интересует какую именно мы получим, важно чтоб она была одна.

>Да куда подробнее-то? Глазам своим не верите?
Tbale scan - 80%, Sort - 20% стоимости запроса.


Откуда цифры? Я их впервые вижу, в прведенном плане их вроде не было, может пропустил. Ссыку.

>Косвенным доказательством моих слов может служить то, что в Оракле запрос select * from Departments where rownum<2 order by salary desc;
Являющийся полностью эквивалентным первому, с подзапросом, выполняется по плану очень напоминающему MSSQL'евский, естественно более оптимальному.


Похоже нашли очередную причину недоразумений. Дело в том, что запрос "select * from Departments where rownum<2 order by salary desc;" не является эквивалентным приведенному Вами. Поэтому вопрос: а сколько записей вернет

select * from Departments where salary=
(select min(salary) from Departments D2
where D2.dept=Departments.dept)

в Вашем примере на тех данных?
20 апр 04, 02:21    [636994]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Я и ёжик
Member

Откуда: СПб
Сообщений: 1815
c127
План хочу. Сколько можно повторять. Хотя бы примерный, от оракла

А Вам, что самому не посмотреть план?
Держите план от Oracle (8.1.7.4):

-- это что бы показать разммер таблички

SQL> select t.blocks, t.num_rows
2 from user_tables t
3 where t.table_name = 'TEST_DEP'
4 ;

BLOCKS NUM_ROWS
---------- ----------

9 1675


SQL> set autotrace traceonly
SQL> set timing on
-- теперь собственно запрос

SQL> select * from test_Dep where salary=
2 (select min(salary) from test_Dep D2
3 where D2.dept=test_Dep.dept);
>10 rows selected.

Elapsed: 00:00:03.34

Execution Plan
----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=2 Bytes=42)
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'TEST_DEP' (Cost=2 Card=2 Bytes
2)

3 1 SORT (AGGREGATE)
4 3 TABLE ACCESS (FULL) OF 'TEST_DEP' (Cost=2 Card=168 B
es=1008)


Statistics
----------------------------------------------------------

0 recursive calls
44 db block gets
100 consistent gets
0 physical reads
0 redo size
798 bytes sent via SQL*Net to client
315 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
10 rows processed


100 логических чтений! В данной ситуации оптимизатор Oracle вообще повел себя очень полохо, по сути он выполнил не 2 как обещал Merle :) а все 10 full scan, т.е. по сути для каждого dept был выполнен отдельный подзапрос с full scan и агрегацией.

Ситуацию можно несколько исправить переписав запрос:

SQL> select * from test_Dep where (dept,salary) in
2 (select dept,min(salary) from test_Dep D2
3 group by D2.dept );
>10 rows selected.

Elapsed: 00:00:06.89

Execution Plan
----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=18 Card=1 Bytes=47)
1 0 HASH JOIN (Cost=18 Card=1 Bytes=47)
2 1 VIEW OF 'VW_NSO_1' (Cost=15 Card=10 Bytes=260)
3 2 SORT (GROUP BY) (Cost=15 Card=10 Bytes=60)
4 3 TABLE ACCESS (FULL) OF 'TEST_DEP' (Cost=2 Card=1675
Bytes=10050)

5 1 TABLE ACCESS (FULL) OF 'TEST_DEP' (Cost=2 Card=1675 Byte
s=35175)


Statistics
----------------------------------------------------------

0 recursive calls
8 db block gets
19 consistent gets
0 physical reads
0 redo size
798 bytes sent via SQL*Net to client
315 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
10 rows processed

Уже 19 логических чтений. И уже действительно 2 full-scan а.

План аналогичный микрософтовскому в Oracle можно получить используя "фунции окна" (analitycal function), т.е. практически напрямую указав оптимизатору алгориитм действий:

SQL> select dept, salary, name
2 from (
3 select t.dept, t.salary, t.name, min(salary) over ( partition by dept ) min_salary
4 from test_dep t
5 ) where salary = min_salary;
>10 rows selected.

Elapsed: 00:00:02.44

Execution Plan
----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=12 Card=1675 Bytes=1
75875)

1 0 VIEW (Cost=12 Card=1675 Bytes=175875)
2 1 WINDOW (SORT)
3 2 TABLE ACCESS (FULL) OF 'TEST_DEP' (Cost=2 Card=1675 By
tes=35175)

Statistics
----------------------------------------------------------

0 recursive calls
4 db block gets
9 consistent gets
0 physical reads
0 redo size
798 bytes sent via SQL*Net to client
315 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
10 rows processed

9 логический чтений против 100 изначальных.

Вообще говоря это мало , что доказывает, кроме того что в конкретной ситуции микрософтовский оптимизатор поступает лучше, тем более что возможно , что 9 или 10 Oracle ведут себя по другому, хотя 9-ка врят ли.
20 апр 04, 11:36    [637493]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Merle
Guest
Мдяяя... Как все-таки тяжко признавать очевидные, но неприятные факты. ;)))
Вместо того, чтобы предъявлять кучу мелких придирок, взяли бы да сами проверили, если интересно..
Ладно, последняя попытка.

Тут спорить не с чем, так бы сразу и сказали. Раз Merle учился на книгах Бернстайна, то Бернстайн конечно, умнее большинства других авторов.
Опять передергиваете. Я учился не только на книгах Бернстайна, но книги и статьи Бернстайна оказались одними из самых полезных.

Похоже у нас празные понятия об аргументах
Это точно.

План хочу. Сколько можно повторять. Хотя бы примерный, от оракла и ДБ2 и желатетльно всех остальных известных Вам SQL серверов. Это хоть как-то подтвердит Ваши слова, а пока они висят в воздухе
Ok.
Oracle, для первого запроса:
FILTER

FULL ACCESS
SORT (!!)
FULL ACCESS


Oracle для запроса "select * from Departments where rownum<2 order by salary;"

FILTER
SORT
FULL ACCESS


MS, для первоначального запроса:

TOP (стоимость 0%)
FILTER (стоимость 0%)
SORT (стоимость 20%)
TABLE SCAN (стоимость 80% запроса)


MS, для запроса "select top 1 * from Departments order by salary"

TOP (стоимость 0%)
SORT (стоимость 20%)
TABLE SCAN (стоимость 80% запроса)

Как нетрудно догадаться, MS сумел свести первый запрос ко второму, в отличии от Оракла.

Откуда цифры? Я их впервые вижу, в прведенном плане их вроде не было, может пропустил. Ссыку.
План. ;)
В QA, в графическом представлении плана запроса, видна относительная стоимость каждого логического оператора.

А если все записи равны, то нас вообще не интересует какую именно мы получим, важно чтоб она была одна
Тогда работает distinct. Который, кстати, тоже является вопиющим нарушением реляционной теории.

Поэтому вопрос: а сколько записей вернет
<...>
в Вашем примере на тех данных?

Одну. ;)
Подозреваю, что возникнет вопрос, а как поступти SQL Server в случае, если min(Salary) не является уникальной записью.
Ответ таков, SQL Server сведет запрос к вот такому:
"select top 1 with ties * from Departments order by salary"
Что означает вывести не только первую запись, но и все записи с точно таким же salary.
При этом сервер по прежнему будет выполнять одно сканирование с последующей сортировкой.
20 апр 04, 12:28    [637711]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Leonid
Member [заблокирован]

Откуда: From nowhere
Сообщений: 743
Молодец Merle, уел таки ораклистов! :) Одобрямс!

Кстати, чем Oracle стоит гордится так это Database Resource Manager.
Ума не приложу, как это можно реализовать на MSSQL.
Очень удобно выделить, скажем, минимум 15% CPU на пересчет себестоимости или другой фоновый процесс.
Не слышал, чтобы что-нибудь подобное планировалось в Yukon. Хотя кто знает...

С пламенным приветом,
анонимная артель "кухарок"(tm) и злобных wizard-истов :)
20 апр 04, 13:20    [637884]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Я и ёжик
Member

Откуда: СПб
Сообщений: 1815
Чего то мне кажется, что Merle не стал бы тратить столько времени за ради идиотской цели кого то уесть....
20 апр 04, 14:04    [638046]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
xz321
Guest
2Leonid: ERM Oraсle тоже не уникален и возможно не рулит по сравнению с DB2 Governor и QueryPatroller.

2Merle: Дорогой друг ты помоему слегка передергиваешь, на основе одного rewrite делаешь выводы о превосходстве. Извини но пример помоему не очень жизненный, хотя хороший. Я подумаю что можно будет предложить для обсуждения.

P.S. Покажи IO Cost для этого запроса на MS SQL
P.P.S Я не понял ты индексы создавал???
20 апр 04, 20:17    [639126]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Markelenkov
Member

Откуда:
Сообщений: 2312
Ежи
9 или 10 Oracle ведут себя по другому, хотя 9-ка врят ли.

На 9-ке то же самое.

Leonid
Молодец Merle, уел таки ораклистов! :) Одобрямс!

Смешно
20 апр 04, 20:53    [639161]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
c127
Guest
2 Merle
>Мдяяя... Как все-таки тяжко признавать очевидные, но неприятные факты. ;)))
Вместо того, чтобы предъявлять кучу мелких придирок, взяли бы да сами проверили, если интересно..


Расскажите заодно, как это можно проверить самому, не имея под рукой ни MSSQL сервера ни QA. Или Вы считаете что MSSQL сервер является обязательным для каждого SQL программиста?

И оракла у меня кстати нет под рукой, он ведь тоже не пока не обязателен.

Кстати Вы почему-то забыли рассказать о технологии сравнения планов не "в лоб". Иначе, согласно Вам же, их сравнение бессмысленно и тут я согласен (Merle> Я имел вииду как раз обратное, что не смотря на то что в лоб сравнивать по большому счету действительно нельзя, сравнивая не в лоб план MS гораздо уачнее.).

>Опять передергиваете. Я учился не только на книгах Бернстайна, но книги и статьи Бернстайна оказались одними из самых полезных.

Не передергиваю: я нигде не говорил, что Вы учились ТОЛЬКО на книгах Бернстайна. Читайте оппонентов внимательнее. По-прежнему жду цитатку из Кодда о том, как он учился на книгах Бернстайна и Грея.

>Тогда работает distinct. Который, кстати, тоже является вопиющим нарушением реляционной теории.

Какой дистинкт, где ты его видел в моем примере? Я говорил, что он может работать, но в примере написано select top 1. Дистинкт как раз не является нарушением реляционной теории, это Вам теорию множеств нужно подучить. Наоборот, он как раз восстанавливает список записей до множества, где повторяющихся элементов нет.

c127>Поэтому вопрос: а сколько записей вернет
<...>
в Вашем примере на тех данных?

Merle>Одну. ;)


Ого. Я только теперь понял, почему Вы говорили: "MS овскому же оптимизатору хватает ума понять, что если внутренний запрос применить ко внешнему, то результат не изменится, ...". Так вот результат изменится и даже очень сильно.

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

На всякий случай сообщаю: в приведенном запросе вернется по одной записи для каждого департмента, поскольку salary уникальна. Кстати из плана оракла это тоже видно. Но если таблицу заполнять, например, так:

insert into Departments (dept,name,salary)
select mod(id,10), name, REMAINDER(id,6) from sysobjects;

то записей на каждый департмент будет уже несколько. Оракловский запрос "select * from Departments where rownum<2 order by salary;", который Вы приводите как альтернативу своему исходному, ему НЕ ЭКВИВАЛЕНТЕН. Почитайте все-таки Дейта, у него такие элементарные вещи с подзапросами хорошо изложены, а также многие менее элементарные. И в следующий раз не торопитесь голословно называть мальчиком и дешевым популяризатором человека, по книгам которого учится и работает весь мир. Кроме Вас, конечно.

>Подозреваю, что возникнет вопрос, а как поступти SQL Server в случае, если min(Salary) не является уникальной записью.

Такй вопрос может возникнуть только у домохозяек, и то не у всех, по причинам изложенным выше. Учите матчасть.




Теперь пару слов о плане. Специалисты по ораклу пусть поправят, если я ошибся. Если мне не изменяет память, у Оракла 8 было 2 оптимизатора: rule based и cost based. Сейчас их наверное не меньше. cost based строит план исходя из количества записей в таблицах, наличия индексов и пр. Какой оптимизатор использовался при построении приведенного плана? Если cost based, то на таблице из 10 записей, даже при наличии индекса, гораздо выгоднее несколько раз просканировать ее полностью чем сортировать или индексировать или применять другие относительно сложные алгоритмы, и оптимизатор это учел. Таблица из 10 записей это промежуточная виртуальная таблица по-видимому построенная при выполнении внутреннего запроса. Даже если использовался rule based, то оптимизатор в по-видимому учел, что в промежуточной таблице всего 10 записей и решить (и это решение по-видимому правильное) что перебор выгоднее.

Еще раз повторяю: сравнивать совершенство оптимизаторов разных SQL серверов на основании сравнения планов некорректно. Каждый SQL сервер строит лучший план для себя, а что лучше для одного SQL сервера то может быть хуже для другого.
21 апр 04, 02:14    [639318]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Merle
Guest
Чего то мне кажется, что Merle не стал бы тратить столько времени за ради идиотской цели кого то уесть....
Да сам себе поражаюсь.. ;)

Вообще говоря это мало , что доказывает, кроме того что в конкретной ситуции микрософтовский оптимизатор поступает лучше, тем более что возможно , что 9 или 10 Oracle ведут себя по другому, хотя 9-ка врят ли.
Девятка ведет себя точно так же, десятка - не знаю. Просто просили конкретных примеров, я и привел. Сходу могу припомнить еще парочку, например, на сколько я помню, только MS оптимизатор, да еще кажется DB2, при наличии индекса по какому-то полю в состоянии догадаться, что поле будет отсортировано даже при вычитании/добавлении константы. Не бог весть какая оптимизация, но на некоторых запросах выигрыш просто офигительный.
Причем еще семерка так не умела.
Это конечно тоже мало что доказывает, но тем не менее...
Вообще, как я уже говорил, на мой взгляд самым весомым аргументом в пользу превосходства одного оптимизатора над другим является количество хинтов на запрос. И это соотношение у MS одно из самых удачных, что говорит о том, что разработчики сиквела хлеб свой едят не зря.

Дорогой друг ты помоему слегка передергиваешь, на основе одного rewrite делаешь выводы о превосходстве. Извини но пример помоему не очень жизненный, хотя хороший. Я подумаю что можно будет предложить для обсуждения.
Ну выводы о превосходстве я делаю немного не из этого, см. выше, просто настоятельно требовали конкретных примеров. Авторство, примера, кстати, не мое.. ;)

P.S. Покажи IO Cost для этого запроса на MS SQL
P.P.S Я не понял ты индексы создавал???

С IO cost чуть-попозже, а индексы - нет, не создавал, так нагляднее..

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

Довольно сомнительная функциональность.. Дело в том, что в БД основной ресурс - это данные, причем ввиду требований изолированности и согласованности частенько этим ресурсом неоходимо владеть монопольно.
CPU здесь играет второстепенную роль.
Таким образом, если мы заставляем какой-то запрос или группу запросов выполняться медленнее, то остальные запросы начинают упираться в этот медленный запрос и тормозить в свою очередь.
В виду того, что Оракл отчасти версионник, ReadOnly транзакции в таком режиме еще имеют право на существование, хотя это и приводит к более интенсивной нагрузке на диск, ввиду необходимости реконструировать более старые версии данных для медленного запроса, а в пределе вообще можно нарваться на внезапно кончившийся rollback сегмент.
Для RW же транзакций все вообще гораздо более печально, так как подобный запрос в прилично нагруженной системе вообще может выполняться бесконечно из-за постоянных откатов ввиду конфликта версий.
В БД даже системы с инверсией приоритетов (когда остальные процессы отдают одному медленному все ресурсы, чтобы он быстрее выполнился и не тормозил систему в целом) работают далеко не идеально.
Так что эта задача совсем не тривиальна.

Я подозреваю, что Вы не знаете даже основ SQL-я, по-видимому сказывается влияние обучения по Бернстайну
Ну если при отсутствии аргументов Вы начинаете хамить, то я не ощущаю необходимости общаться с Вами в дальнейшем. Хотя все-таки рекомендовал бы Вам почитать реляционную теорию в чистом виде, хотя бы у любимого Дейта и понять, почему необходимость наличия distinct (и не только) в SQL'е является свидетельством того, что SQL совсем не удовлетворяет стогой реляционной теории не смотря на все усилия стандартизирующих организаций.
21 апр 04, 11:22    [639903]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Я и ёжик
Member

Откуда: СПб
Сообщений: 1815
c127
Какой оптимизатор использовался при построении приведенного плана?

Для каждого шага плана указана оцениваемая оптимизатором его стоимость (cost), число записей на выходе (card), показана ожидаемая стоимость запроса, какой же использовался оптимизатор? ( Правильный ответ cost based optimizer)

c127

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

Выгода или стоимость обычно оценивается оптимизаторами в величине ожидаемых физических или логических операций ввода/вывода ( В Oracle логических). В данном случае он выбрал план который привел к 100 логическим чтениям, когда можно было обойтись 9-ю. Т.е. там по сути не было сделано логическое преобразование запроса к более выгодному логическому плану. Оптимизатор рассмотрел только выполнение запроса в лоб. Для получения более эффективного плана пришлось переписывать запрос, т.е. выполнять работу оптимизатора.
c127

Таблица из 10 записей это промежуточная виртуальная таблица по-видимому построенная при выполнении внутреннего запроса. Даже если использовался rule based, то оптимизатор в по-видимому учел, что в промежуточной таблице всего 10 записей и решить (и это решение по-видимому правильное) что перебор выгоднее.
Ну да 100 логических чтений вместо 9 решение несомненно правильное и более выгодное :).
21 апр 04, 11:50    [640006]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Leonid
Member [заблокирован]

Откуда: From nowhere
Сообщений: 743
с127
Оказывается Вы вообще не разобрались с запросом, план которого тут обсуждаете а лезете туда же - ругать оракл. Я подозреваю, что Вы не знаете даже основ SQL-я, по-видимому сказывается влияние обучения по Бернстайну. Впрочем это типично для воспитанников мелкософта и громкое победное улюлюканье из лагеря мышевозов есть тому подтверждение: они тоже ничего не поняли. Выполните полностью приведенный Вами же пример и, как Вы тут говорили, Вы будете приятно удивлены. Не забудьте выложить сюда результат.

Хочу Вас огорчить, в лагере "мышевозов" все поняли :)
Откуда столько презрения к "мышевозам"? ;) Еще один "психологический аспект нигилизма"? ;)
"Мы" Oracle не ругаем, "мы" не понимаем, почему oracle - круто, а MSSQL - отстой. Только потому, что это MS? ;) И почему oracle по вашему непогрешим?

c127
На всякий случай сообщаю: в приведенном запросе вернется по одной записи для каждого департмента, поскольку salary уникальна. Кстати из плана оракла это тоже видно. Но если таблицу заполнять, например, так:
insert into Departments (dept,name,salary)
select mod(id,10), name, REMAINDER(id,6) from sysobjects;

На каком SQL диалекте это написано? Я в oracle REMAINDER не нашел. А по смыслу mod и remainder, разве не одно и то же? Если нет, тогда поясните...

Короче, я сделал, как Вы предлагаете:
insert into Departments (dept, name, salary) 

select id%10, name, id%6 from master.dbo.sysobjects

Затем запустил все тот же SELECT план у MS как и в первом случае:
Top (Cost 12%)

Segment (Cost 0%)
Filter (Cost 0%)
Sort (Cost 38%)
Table Scan (Cost 50%)

Перевел эту таблицу на Oracle. При том же запросе план:
FILTER

TABLE ACCESS FULL
SORT AGGREGATE
TABLE ACCESS FULL

То есть, те же два сканирования таблицы.
21 апр 04, 13:14    [640343]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Leonid
Member [заблокирован]

Откуда: From nowhere
Сообщений: 743
Merle
Довольно сомнительная функциональность.. Дело в том, что в БД основной ресурс - это данные, причем ввиду требований изолированности и согласованности частенько этим ресурсом неоходимо владеть монопольно.
CPU здесь играет второстепенную роль
...
Для RW же транзакций все вообще гораздо более печально, так как подобный запрос в прилично нагруженной системе вообще может выполняться бесконечно из-за постоянных откатов ввиду конфликта версий
...
Так что эта задача совсем не тривиальна.

Да, наверно...
Но если предположить, что некоторые транзакции не делят одни и те же данные и уж тем более не по RW.
Все таки такая функциональность была бы полезна. Скажем, для определенной группы пользователей и запросов она бы гарантировала определенное время отклика сервера.
Я за то, чтобы что-нибудь подобное было в MS. А поскольку snapshot-ы в Yukon-е все же удачнее будут, чем то, что сейчас в oracle, то это внушает надежду, что и этот механизм они продумают с учетом ошибок других.
21 апр 04, 13:30    [640416]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Gt.
Guest
ууу нафлеймили и все без меня. сморим что у нас на практике:


select * from Departments where (dept,salary) in
(select dept,min(salary) from Departments D2
group by D2.dept );


7797 rows selected.


Elapsed: 00:00:01.04

Execution Plan
----------------------------------------------------------

0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=222 Card=3 Bytes=1
32)

1 0 HASH JOIN (RIGHT SEMI) (Cost=222 Card=3 Bytes=132)
2 1 VIEW OF 'VW_NSO_1' (VIEW) (Cost=120 Card=209 Bytes=5434)
3 2 SORT (GROUP BY) (Cost=120 Card=209 Bytes=1045)
4 3 TABLE ACCESS (FULL) OF 'DEPARTMENTS' (TABLE) (Cost=1
00 Card=119547 Bytes=597735)

5 1 TABLE ACCESS (FULL) OF 'DEPARTMENTS' (TABLE) (Cost=101 C
ard=20096 Bytes=361728)





Statistics
----------------------------------------------------------

0 recursive calls
0 db block gets
1392 consistent gets
0 physical reads
0 redo size
145912 bytes sent via SQL*Net to client
6221 bytes received via SQL*Net from client
521 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
7797 rows processed



а теперь MS вариант

select dept, salary, name
from (
select t.dept, t.salary, t.name, min(salary) over ( partition by dept ) min_salary
from Departments t
) where salary = min_salary


>7797 rows selected.


Elapsed: 00:00:04.18

Execution Plan
----------------------------------------------------------

0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=802 Card=119547 By
tes=7890102)

1 0 VIEW (Cost=802 Card=119547 Bytes=7890102)
2 1 WINDOW (SORT) (Cost=802 Card=119547 Bytes=2151846)
3 2 TABLE ACCESS (FULL) OF 'DEPARTMENTS' (TABLE) (Cost=100
Card=119547 Bytes=2151846)





Statistics
----------------------------------------------------------

4 recursive calls
10 db block gets
436 consistent gets
1204 physical reads
0 redo size
112652 bytes sent via SQL*Net to client
6221 bytes received via SQL*Net from client
521 SQL*Net roundtrips to/from client
0 sorts (memory)
1 sorts (disk)
7797 rows processed


итак MS вариант в 4 раза медленее, причем что забавно именно из-за 1204 physical reads, которые при таком плане присутствуют всегда, т.е. по какой-то причине оно не кеширется сколько раз не прогоняй запрос.
21 апр 04, 14:07    [640563]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше? Оракул9i или MS SQL2000? И чем?  [new]
Gt.
Guest
ЗЫ. у
select * from Departments where salary=
(select min(salary) from Departments D2
where D2.dept=Departments.dept)

тот же план что и у

select * from Departments where (dept,salary) in
(select dept,min(salary) from Departments D2
group by D2.dept );

тестил на 10ке, как ежики добиись другого плана не знаю ... у меня 9ка после analyze table сразу такой план дает.
21 апр 04, 14:18    [640617]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 11 12 13 14 15 16 17 [18] 19 20   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить