Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 5 6 7 8 9 [10] 11 12 13 14 .. 31   вперед  Ctrl
 Re: MS SQL > Oracle = True?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
WatcomSQL:

// Создаем табличку
CREATE TABLE "DBA"."Tree" (
	"Node_id" integer NOT NULL DEFAULT autoincrement,
	"Parent_id" integer NULL,
	PRIMARY KEY CLUSTERED ( "Node_id" ),
	PCTFREE 0
);

// Связываем ноду с родительской
ALTER TABLE "DBA"."Tree" ADD FOREIGN KEY "Tree" ( "Parent_id" )
  REFERENCES "DBA"."Tree" ( "Node_id" ) CHECK ON COMMIT;

// Заполняем табличку на 100 000 записей
BEGIN
  DECLARE @Count int;
  SET @Count = 1;

  INSERT INTO Tree (Parent_id)
  VALUES (NULL);

  WHILE @Count < 100000
  LOOP
    INSERT INTO Tree (Parent_id)
    VALUES (@@IDENTITY);

    SET @Count = @Count + 1;
  END LOOP;
END;
COMMIT;
-- Execution time: 6.141 seconds

// Проверяем кол-во
SELECT Count(*)
FROM Tree;
-- Execution time: 0.125 seconds
Count(*)
100000

// Разрешаем кол-во вложенных итераций
SET TEMPORARY OPTION MAX_RECURSIVE_ITERATIONS = 100010;

/* 
  Считаем кол-во дочерних элементов и уровень вложенности,
  для первого узла дерева (который равен NULL)
*/
WITH RECURSIVE t (Parent_id, Node_id, Level) AS (
  SELECT Parent_id, Node_id, CONVERT(int, 1) AS Level
  FROM Tree
  WHERE Parent_id IS NULL
  UNION ALL
  SELECT Tree.Parent_id, Tree.Node_id, t.Level + 1 AS Level
  FROM Tree
    INNER JOIN t ON t.Node_id = Tree.Parent_id
)
SELECT Count(*) AS Count_Record, Max(Level) AS Max_Level
FROM t;
-- Execution time: 2.032 seconds
Count_RecordMax_Level
100000100000

План запроса:
( Plan [ Total Cost Estimate: 5.449945E-5 ] 
( SingleRowGroupBy
( WorkTable
( RecursiveUnion
( IndexScan Tree Tree )
( RecursiveHashJoin*
( RecursiveTable RT )
( TableScan Tree )
)
)
)
)
)
В кратце план говорит о том, что оптимизатор пропер по таблице сканом, организовав хэш-карту значений и соединяя по индексу Parent_id (который был автоматом на Foreign Key создан), быстренько вычислил общее кол-во дочерних записей для родителя и максимальное кол-во уровней вложенностей. Ни о каких полчаса при уровне вложенности 100000 конечно же быть и речи не может :)

Использовалась ASA 9 Developer Edition, ОС XP, проц Intel 2.4, всего на тачке 1 гиг памяти, под кэш ASA разрешалось использовать от 64 метра, реально она использовала на все про все 24 метра.
23 дек 04, 13:02    [1203907]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
To ASCRUS:
Попробую на Oracle. Ответ будет готов на следующей неделе.
23 дек 04, 13:30    [1204099]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
segun
Member

Откуда: Москва
Сообщений: 504
автор (конец октября)
Я не специалист по MySQL и никогда раньше им не занимался...

автор
Как выяснилось MySQL и MS SQL находятся примерно в одинаковых весовых категориях. Поэтому теперь выбираю из Oracle, Informix и Sybase.
ЗЫ: Хочу познакомится с такой СУБД на которой можно реализовать хранилище данных на 2 -3 Tb.

автор
Господа, я не спец ни по Ораклу, ни по МССКЛ, но вот что скажу...
вопрос: зачем в этом случае что-либо говорить в форуме сравнение СУБД?
23 дек 04, 14:44    [1204566]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11373
Господа, Вы, прежде чем секундами меряться, сравнили бы заодно и "железо"...
23 дек 04, 15:06    [1204728]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
segun
автор (конец октября)
Я не специалист по MySQL и никогда раньше им не занимался...

автор
Как выяснилось MySQL и MS SQL находятся примерно в одинаковых весовых категориях. Поэтому теперь выбираю из Oracle, Informix и Sybase.
ЗЫ: Хочу познакомится с такой СУБД на которой можно реализовать хранилище данных на 2 -3 Tb.

автор
Господа, я не спец ни по Ораклу, ни по МССКЛ, но вот что скажу...
вопрос: зачем в этом случае что-либо говорить в форуме сравнение СУБД?

Я, например, тоже не считаю спецом в Oracle. Но высказываю свое мнение. А почему собственно нет? Это же форум, здесь идет обсуждение. Хотите подтвержденную информацию, читайте документацию и крутые книги (например "Тома")
23 дек 04, 15:16    [1204785]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
ChA
Господа, Вы, прежде чем секундами меряться, сравнили бы заодно и "железо"...

Ладно. Господа, давайте помериимся пипи****, тьфу серверами :)
По данным админа:
Проц Xeon 2x 2.8 ГГц. Память 4 ГБ. 10 винчестеров скази
Red Had Linux 9
В среднем 120 пользователей в один и тот же момент времени
Если надо, могут дать более детальную информацию о загрузке сервера...
23 дек 04, 15:45    [1204985]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Гы - я вообще просто на своей рабочей тачке эти несчастные 100 тысяч прогнал, причем тут тачки то - просто показали, что штатная поддержка рекурсии самой СУБД не такая уж плохая штука, а главное скоростная по сравнению с обычным разбором дерева стандартным ANSISQL :)
23 дек 04, 15:50    [1205013]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
что-то на элементе 309158 у меня выдает только 91 запись, вот они, проверь, их ли ты имел ввиду.




210222
212306
212310
213156
213208
214861
214863
214865
214867
214868
214880
214907
214909
214912
218764
219045
220164
224095
224097
224100
224101
224321
225114
225270
226015
226016
226018
226021
226024
226026
226182
226186
226188
227443
228661
228662
228663
228664
228667
228668
228670
228671
228673
228675
228677
228679
228681
228685
228689
228691
228693
228695
228698
228699
228702
228703
228704
228746
228747
228754
228758
228761
229306
229815
230100
230104
230171
230278
230303
230613
230647
230728
230732
230803
230814
231128
231411
231417
231443
231493
231572
231851
231988
278522
300746
309158
376396
387660
387661
388853
388854


такого навороченного сервера как у тебя, у нас нету ;) Вот сейчас, когда я прогонял эту задачу на своем домашнем
компе, на нее ушло 120 мс., но комп у меня Duron 1.2 МГц, 128 оперативки. У меня даже вчера не получилось
присланный тобой файл загрузить, говорил что мало памяти и посылал в ж. Только на работе его в таблицу загнал.
Наш рабочий сервак - Р-III 1.7 МГц, 1 Гиг памяти. Так что как видишь, напрямую время сравнить неполучиться,
но думаю на равноценных серверах время будет примерно одинаковым, но никак ни "гораздо медленнее" (цитата из твоего
поста)
23 дек 04, 17:42    [1205694]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
StalkerS
что-то на элементе 309158 у меня выдает только 91 запись, вот они, проверь, их ли ты имел ввиду.
такого навороченного сервера как у тебя, у нас нету ;) Вот сейчас, когда я прогонял эту задачу на своем домашнем
компе, на нее ушло 120 мс., но комп у меня Duron 1.2 МГц, 128 оперативки. У меня даже вчера не получилось
присланный тобой файл загрузить, говорил что мало памяти и посылал в ж. Только на работе его в таблицу загнал.
Наш рабочий сервак - Р-III 1.7 МГц, 1 Гиг памяти. Так что как видишь, напрямую время сравнить неполучиться,
но думаю на равноценных серверах время будет примерно одинаковым, но никак ни "гораздо медленнее" (цитата из твоего
поста)

Вершина не берется:
CHILD_	PARENT_	LEVEL

228661	309158	1
228662	309158	1
214865	309158	1
214867	214865	2
228695	214867	3
228664	214865	2
228747	214865	2
229306	214865	2
228675	214865	2
387661	214865	2
228691	214865	2
226186	214865	2
224321	214865	2
214861	309158	1
214863	214861	2
228693	214863	3
228746	214861	2
228671	214861	2
228754	214861	2
228758	214861	2
228703	214861	2
230814	214861	2
228663	309158	1
227443	309158	1
228670	309158	1
214907	309158	1
228667	214907	2
228681	214907	2
387660	214907	2
228699	214907	2
278522	309158	1
213208	309158	1
226015	213208	2
226016	213208	2
226018	213208	2
231443	213208	2
230647	213208	2
226021	213208	2
226024	213208	2
226026	213208	2
228698	309158	1
231572	309158	1
214868	309158	1
229815	214868	2
228761	214868	2
228704	214868	2
230732	214868	2
212310	214868	2
224100	212310	3
224095	212310	3
231417	214868	2
230104	214868	2
230728	309158	1
214909	309158	1
214912	214909	2
228685	214912	3
214880	214909	2
228677	214880	3
228679	214880	3
228691	214880	3
224321	214880	3
228673	214909	2
228668	214909	2
228689	214909	2
228702	214909	2
388853	214909	2
388854	214909	2
230303	309158	1
212306	309158	1
224097	212306	2
224101	212306	2
226182	309158	1
213156	309158	1
226188	309158	1
230171	309158	1
231493	309158	1
230613	309158	1
376396	309158	1
231851	309158	1
231128	309158	1
230803	309158	1
231411	309158	1
219045	309158	1
230278	309158	1
220164	309158	1
231988	309158	1
210222	309158	1
225270	210222	2
225114	210222	2
218764	210222	2
300746	309158	1
230803	300746	2
228761	300746	2
231411	300746	2
231128	300746	2
230278	300746	2
230100	309158	1
По-моему,15 мс и 120 мс это 8 раз. Или я ошибаюсь? Много это где-то 2-3 раза. Если разница 5-10%, тогда ничего. У нас этот файл в MS SQL грузился тоже черт знает сколько... Насчет сервера, говорю еще раз испытывали не на холостом ходу, он был загружен другими запросами (120 пользователей), хотя конечно не к этой таблице. Если увеличить тестовые данные, то разница будет еще больше, если устроить многопользовательское тестирование разница будет еще больше. В принципе видно, что сервер выполняет запрос, не напрягаясь и имея запас, скорее всего он и 200-300 вытащит примерно за то же время, а может и больше.
24 дек 04, 08:42    [1206446]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
Ответ ASCRUS:

SQL*Plus: Release 8.1.7.0.0 - Production on Птн Дек 24 08:50:04 2004

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> set timing on
SQL> set autotrace on
SQL> drop table test;

Table dropped.

Elapsed: 00:00:00.62
SQL> drop sequence sq_test;

Sequence dropped.

Elapsed: 00:00:00.16
SQL> create table test
  2  (
  3  parent_ int not null
  4  , child_ int not null
  5  );

Table created.

Elapsed: 00:00:00.32
SQL> create index ind_test on test (parent_);

Index created.

Elapsed: 00:00:00.15
SQL> create sequence sq_test;

Sequence created.

Elapsed: 00:00:00.16
SQL> begin
  2  for i in 1..100000
  3  loop
  4   insert into test values(sq_test.currval-1, sq_test.nextval); 
  5  end loop;
  6  end;
  7  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:16.16
SQL> select count(*) from test;

  COUNT(*)
----------
    100000

Elapsed: 00:00:00.96

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (FULL) OF 'TEST'




Statistics
----------------------------------------------------------
          2  recursive calls
          1  db block gets
        252  consistent gets
          0  physical reads
        120  redo size
        295  bytes sent via SQL*Net to client
        421  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> commit;

Commit complete.

Elapsed: 00:00:00.00
SQL> select count(*)
  2  from test
  3  connect by parent_ = prior child_
  4  start with parent_ =0;

  COUNT(*)
----------
    100000

Elapsed: 00:00:14.00

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   SORT (AGGREGATE)
   2    1     CONNECT BY (WITH FILTERING)
   3    2       NESTED LOOPS
   4    3         INDEX (RANGE SCAN) OF 'IND_TEST' (NON-UNIQUE)
   5    3         TABLE ACCESS (BY USER ROWID) OF 'TEST'
   6    2       NESTED LOOPS
   7    6         BUFFER (SORT)
   8    7           CONNECT BY PUMP
   9    6         TABLE ACCESS (BY INDEX ROWID) OF 'TEST'
  10    9           INDEX (RANGE SCAN) OF 'IND_TEST' (NON-UNIQUE)




Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
     300200  consistent gets
          0  physical reads
          0  redo size
        295  bytes sent via SQL*Net to client
        421  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
     200001  sorts (memory)
          0  sorts (disk)
          1  rows processed
Здесь проигрыш очевиден ... Но не полчаса же!
24 дек 04, 09:04    [1206500]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
понятно, почему у тебя строк больше, ты вывел детей вместе с родителями, поэтому некоторые у тебя дублируются,
а я выводил distinct child.

>>По-моему,15 мс и 120 мс это 8 раз. Или я ошибаюсь? Много это где-то 2-3 раза. Если разница 5-10%, тогда ничего

Ты на разницу в конфигурация обратил внимание - "Duron 1.2 МГц, 128 оперативки" и "Проц Xeon 2x 2.8 ГГц. Память 4 ГБ" ?

Если запустить мой запрос на таком серваке, результат будет тоже в районе 10-20 мс., а там сравнивать эти миллисекунды
бессмысленно, т.к. это уже находиться в пределах погрешности.
То, что там у вас пользователи висят, не оказывает серьезного влияния, сам-же написал, что
"сервер выполняет запрос, не напрягаясь и имея запас". Следовательно, даже если сервер будет выполнять только твой
запрос, время выполнения не уменьшиться.

>>Если увеличить тестовые данные, то разница будет еще больше, если устроить многопользовательское тестирование разница будет еще больше

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


В общем, уважаемые, этот топик хорошо демонстрирует необоснованность заявлений ораклистов о лучшей производительности их сервера,
вот даже цитата от автора топика :

"Но! К глубокой скорби поклонников MS SQL это не дает никаких шансов в схватке с ORACLE при наличии больших древовидных таблиц в базе.
Повторяю, НИКАКИХ!"

Как мы видим, шансы есть. А ведь MSSQL уже 4-х летней давности, скоро выходит новая версия, так что ораклу придется тяжко, я прямо
вижу, как в недалеком будущем, на углах улиц будут стоять люди плакатами в руках : "Will programm PL/SQL for food" ;)
24 дек 04, 12:27    [1207294]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
StalkerS
понятно, почему у тебя строк больше, ты вывел детей вместе с родителями, поэтому некоторые у тебя дублируются,
а я выводил distinct child.

>>По-моему,15 мс и 120 мс это 8 раз. Или я ошибаюсь? Много это где-то 2-3 раза. Если разница 5-10%, тогда ничего

Ты на разницу в конфигурация обратил внимание - "Duron 1.2 МГц, 128 оперативки" и "Проц Xeon 2x 2.8 ГГц. Память 4 ГБ" ?

Если запустить мой запрос на таком серваке, результат будет тоже в районе 10-20 мс., а там сравнивать эти миллисекунды
бессмысленно, т.к. это уже находиться в пределах погрешности.
То, что там у вас пользователи висят, не оказывает серьезного влияния, сам-же написал, что
"сервер выполняет запрос, не напрягаясь и имея запас". Следовательно, даже если сервер будет выполнять только твой
запрос, время выполнения не уменьшиться.

>>Если увеличить тестовые данные, то разница будет еще больше, если устроить многопользовательское тестирование разница будет еще больше

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


В общем, уважаемые, этот топик хорошо демонстрирует необоснованность заявлений ораклистов о лучшей производительности их сервера,
вот даже цитата от автора топика :

"Но! К глубокой скорби поклонников MS SQL это не дает никаких шансов в схватке с ORACLE при наличии больших древовидных таблиц в базе.
Повторяю, НИКАКИХ!"

Как мы видим, шансы есть. А ведь MSSQL уже 4-х летней давности, скоро выходит новая версия, так что ораклу придется тяжко, я прямо
вижу, как в недалеком будущем, на углах улиц будут стоять люди плакатами в руках : "Will programm PL/SQL for food" ;)

Весело ты расскажываешь...
Я же написал сейчас разница 8 раз. Неужели ты думаешь этот запрос жрет 4 Гб памяти, или использует два проца? Хотя конечно та машина, где ты тестировал
автор
Наш рабочий сервак - Р-III 1.7 МГц, 1 Гиг памяти.

Это чья фраза?
За 10 мс на MS SQL не пройдет, даи за 20 мс навряд ли. А вот за 40-50 мс может. Разница в 3 раза. Неужели ни у кого из поклонников MS SQL нет "нормальных" серверов? Про вложенность 100 000 ты я вижу уже забыл... У тебя было полчаса!
Как я и думал MS SQL-исты прикрываются слабенькими серверами, разницой в 20 мс (это по их мнению мало при базовой 15 мс).
24 дек 04, 12:55    [1207418]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
У меня есть "нормальный" сервер (и есть еще лучше :) - скиньте данные и запрос, посмотрим чего получится

-- Tygra's --
24 дек 04, 13:24    [1207565]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
alex-ls
В принципе видно, что сервер выполняет запрос, не напрягаясь и имея запас, скорее всего он и 200-300 вытащит примерно за то же время, а может и больше.

Подтверждаю свои слова! Данных мало, чтобы Oracle показал свою силу...
SQL> set timing on
SQL> select count(*)
  2  from elsi_omptest.tree
  3  connect by parent_ = prior child_
  4  start with parent_ in (309158, 210758, 209117, 304391);

  COUNT(*)
----------
       292

Elapsed: 00:00:00.15
Можно еще добавить, если MS SQL будет сопротивляться!
tygra
У меня есть "нормальный" сервер (и есть еще лучше :) - скиньте данные и запрос, посмотрим чего получится

Сейчас вышлю. А насчет запроса посмотри ответы andsm и StalkerS.
24 дек 04, 13:36    [1207630]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
что-бы окончательно разобраться с неясностями, раскладываю все по полочкам:

1) твои данные для элемента 309158 мой запрос обрабатывает 120 мс. на моей домашней машине "Duron 1.2 МГц, 128 оперативки"

2) на рабочем сервере "Р-III 1.7 МГц, 1 Гиг памяти" я вообще твои данные не тестировал, т.к. он стоит в другом здании, сеткой
с моим рабочим местом не соединен, и тащить туда твои данные и загружать его лишней работай нехочется. Я о нем написал,
что-бы подчеркнуть, что даже если я проведу тест на нем, время работы сравнить все равно не получиться из-за большой
разницы в конфигурациях.
3) тестовая таблица с 100000 записей, где идет последовательная вложенность, для подсчета детей 1 элемента занимает
полчаса на моей рабочей машине "Р-III 700 МГц, 524 RAM".
Я после этого протестировал этот запрос дома на "Duron 1.2 МГц, 128 оперативки", так на это ушло уже 16 мин., я сам
честно говоря не ожидал такой большой разницы, думал, будет в районе 20-25 мин.

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

>>За 10 мс на MS SQL не пройдет, даи за 20 мс навряд ли. А вот за 40-50 мс может. Разница в 3 раза.

ну а это уже вообще ни в какие ворота не лезет. Такие заявления и я могу делать, внимание:

"Запрос на поиск детей 100000 элемента на MSSQL займет 3 сек., разница - в 5 раз, MSSQL рулит !"
24 дек 04, 13:40    [1207648]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
В начале топика разговор шел об обычной иерархии - о структурах вида ID, ParentID. Потом выяснилось что автор говорил о многосвязных графах, для которых у меня готового решения пока нет. Для той таблицы все-же чего-нибудь придумаю, но после следующих выходных. А почему бы нам не сравнить скорости и для обычных деревьев?
24 дек 04, 14:27    [1207859]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
andsm
В начале топика разговор шел об обычной иерархии - о структурах вида ID, ParentID. Потом выяснилось что автор говорил о многосвязных графах, для которых у меня готового решения пока нет. Для той таблицы все-же чего-нибудь придумаю, но после следующих выходных. А почему бы нам не сравнить скорости и для обычных деревьев?

Сравним и по обычным деревьям. Пример бери у ASCRUS. Он все ясно расписал. Я ему ответил. Ждем также твоего ответа по графам...
24 дек 04, 14:58    [1208069]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
nik_x
Member

Откуда:
Сообщений: 1887
А тут, есть опять про Orcale:
http://www.securitylab.ru/25175.html
Наверное пора начинать смотреть в сторону DB2...
25 дек 04, 10:43    [1209541]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
Вот по поводу производительности, я нашел крайне интересные данные. На сайте организации TCP, занимающейся тестированием
производительности различных СУБД на различных платформах, вывешена обобщенная информация за несколько лет. Там
эта самая производительность измеряется в единицах TpmC.

Вот по этой ссылке http://www.tpc.org/tpcc/results/tpccadvanced3.asp, там в поле SORT укажите "system" (т.е. сортировать
по платформам, т.к. сравнивать производительность на различных платформах бессмысленно) и жмите пимпу "submit".

В полученной таблице, на строках 21,22,23 можно увидеть сравнение oracle 10g и mssql 2000 на платформе HP Integrity Superdome .
Видно, что oracle 10g опережает mssql 2000 на 12%.

На строках 136 и 137 сравниваются oracle 10g и mssql 2000 на платформе Unisys ES7000 Aries 420 Enterprise Server .
Здесь уже mssql 2000 опережает oracle 10g на 7%.

Получается, что лидерство зависит от платформы, а ни как ни от СУБД. Более того, не стоит забывать, что 10g появилась в этом
году, а mssql 2000 - 4 года назад, и в то время, если не ошибаюсь, небыло даже 9i, а только 8i.
К сожалению, здесь отсутствуют прямые сравнения на одинаковых платформах oracle 9i и mssql 2000 (про 8i я вообще молчу), зато
можно сравнить косвенно.
Вот на строках 19 и 20 сравниваются oracle 9i и oracle 10g на платформе HP 9000 Superdome Enterprise Server. Разница в производительности
28% !
Поэтому, если отобрать у 10g 28% производительности, то 9i оказывается далеко позади sql server'a.

Кстати, в соседней колонке указана относительная цена в $, советую поглядеть.

Так-то вот, господа, ждем появления Yukon, и тогда все споры о производительности отпадут сами собой, за очевидностью ситуации :)

Про безопасность, советую почитать www.securityfocus.com, там есть обобщенный список дыр обоих систем, здесь ситуация очевидна уже сейчас
26 дек 04, 12:29    [1210085]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
nik_x
Member

Откуда:
Сообщений: 1887
Вот когда M$-Sql (а уж тем более Юкон) появится под линух, тогда и будем поглядывать в сторону M$. А пока, если просуумировать дыры Оракла и M$, то сравнение не в пользу Оракле. Но если просуммировать дыры в операционках (например *nix и Win 2000 (Xp), сравнение явно не в пользу 2000 (Xp).
Суммарно - пока Оракл более защищен - необходимую защиту обеспечивает операционка.
Более устойчивую работу обеспечивает связка *nix + DB2.
Да и портировать приложения/данные - признаться - проще Oracle <-> DB2.
26 дек 04, 13:02    [1210097]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Yo!
Guest
автор
На строках 136 и 137 сравниваются oracle 10g и mssql 2000 на платформе Unisys ES7000 Aries 420 Enterprise Server .
Здесь уже mssql 2000 опережает oracle 10g на 7%.

Получается, что лидерство зависит от платформы, а ни как ни от СУБД.


платформа тут совсем не причем :) хотя если присмотрется там и железо отличается, но тут дело в виндовсе - вот так вот оракл работает по виндовс, то что он под виндовс работает через задницу когда памяти больше 4гб и процентов на 10% мимнимум медленнее общеизвесный факт.

автор
Про безопасность, советую почитать www.securityfocus.com, там есть обобщенный список дыр обоих систем, здесь ситуация очевидна уже сейчас


оракл на данный момент имеет 17 сертификатов по безопасности, Oracle Label Security и т.п. sql server пока в этой области не сильно опережает mysql, хотя в некоторых моментах (slammer) ему равных нет.
26 дек 04, 14:06    [1210118]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
Сравнение скорости выборки подчиненных элементов.
Данные для заполнения таблицы в файле.
SQL Server 2000.
Запрос:
SET STATISTICS TIME on
select count(*) from TestTable sr
 join TestTable srIn on srIn.ID=46
  and sr.LeftPath between srIn.LeftPath and srIn.RightPath
Результат, после холодного рестарта SQL Server, чтобы исключить влияние кеширования:
  COUNT(*)
----------
       39

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 54 ms.

(1 row(s) affected)


SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 35 ms.
План выполнения:
  |--Bookmark Lookup(BOOKMARK:([Bmk1000]), OBJECT:([zest].[dbo].[TestTable] AS [sr]))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([srIn].[RightPath], [srIn].[LeftPath]))
            |--Clustered Index Seek(OBJECT:([zest].[dbo].[TestTable].[IX_TestTable] AS [srIn]), SEEK:([srIn].[ID]=46) ORDERED FORWARD)
            |--Index Seek(OBJECT:([zest].[dbo].[TestTable].[IX_TestTable_1] AS [sr]), SEEK:([sr].[LeftPath] >= [srIn].[LeftPath] AND [sr].[LeftPath] <= [srIn].[RightPath]) ORDERED FORWARD)
Кто на Oracle выполнит аналогичный запрос для тех же данных - выборка всех подчиненных элементов для ID=46, через connect by, быстрее?
О компьютере где тестировал: P4 2.4, 512 Мб ОЗУ, из них при тестировании было занято 1.2 Гб ОЗУ - работали одновременно MS SQL Server 2000, MS SQL Server 2005, Oracle 8.1.7, Query Analyzer, EM и PL/SQL Developer. IDE диск.

К сообщению приложен файл (TestData.rar - 69Kb) cкачать
26 дек 04, 14:37    [1210138]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
Если не делать выгрузку буферов и процедурного кеша, то получаемый результат:
  COUNT(*)
----------
       39

SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(1 row(s) affected)


SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
Кто выполнит быстрее в этом случае?
26 дек 04, 14:41    [1210140]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
Еще запрос, для тех же данных:
SET STATISTICS TIME on
select count(*) from TestTable sr
 join TestTable srIn on srIn.ID=8043
  and sr.LeftPath between srIn.LeftPath and srIn.RightPath
В этом запросе идет прохождение по иерархии глубиной в 120.
Результат:
  COUNT(*)
----------
       11122

SQL Server parse and compile time: 
   CPU time = 5 ms, elapsed time = 5 ms.

(1 row(s) affected)


SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
26 дек 04, 14:47    [1210142]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
>>Суммарно - пока Оракл более защищен - необходимую защиту обеспечивает операционка.

Интересно, если я рута через дыру в оракл получу и шел себе открою - какую такую защиту сможет обеспечить операционка?
26 дек 04, 15:20    [1210156]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 5 6 7 8 9 [10] 11 12 13 14 .. 31   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить