Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 [8] 9 10   вперед  Ctrl      все
 Re: Чем Oracle отличается от SQL Server  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Угу. Вопрос остается в силе. Помнится на мой вопрос, точнее опрос, кто их на практике юзал, откликнулось не более одного человека. :)


Оооо так ВАШ вопрос в этом ? А все таки не в том как эти фичи будут влиять на план ???
Ну я использовал, что дальше ???

Вы не переживайте, году так в 2023 эти фичи добавят в MS SQL и эти фичи как по волбшеству станут востребованными и жизненно необходимыми
17 окт 08, 09:46    [6318938]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
Ну я использовал, что дальше ???


Уже говорилось:

pkarklin
Вот я и просил привести различия в планах и IO с и без кластером, ведь раз Вы выдвигаете это как "сильно влияющий фактор", то провести эксперимент не составит труда.
17 окт 08, 09:49    [6318961]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Gluk (Kazan)
Ну я использовал, что дальше ???


Уже говорилось:

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


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

P.S. а шо це таке за выровненные индексы ??? ссылочка в BOL меня вполне устроит
17 окт 08, 10:01    [6319042]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
P.S. а шо це таке за выровненные индексы ??? ссылочка в BOL меня вполне устроит


Вот так, понятней, IMHO, будет:

https://www.sql.ru/articles/mssql/2005/073102PartitionedTablesAndIndexes.shtml после Рис. 2
17 окт 08, 10:17    [6319160]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Gluk (Kazan)
P.S. а шо це таке за выровненные индексы ??? ссылочка в BOL меня вполне устроит


Вот так, понятней, IMHO, будет:

https://www.sql.ru/articles/mssql/2005/073102PartitionedTablesAndIndexes.shtml после Рис. 2


понятно, спасибо
17 окт 08, 10:52    [6319436]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
pkarklin
Gluk (Kazan)
IOT, Cluster ???


IOT в Oracle = Clustered Index в MS SQL.

Cluster - отсутствует. Но хотелось бы узнать, каким образом наличие\отсутствие оного повлияет на план выполнения\IO в классической схеме "звезда". Если это будут реальные примеры - здорово.


1) Причем тут звезда и почему именно звезда, а не снежинка?
2) Наличие\отсутствие оного (по краней мере в Оракл) влияет как на план, так и на ввод-вывод в зависимости от...много чего.

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

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

P.S. Мне все это напоминает наш прошлый диалог о контрольных точках при аттаче\детаче базы в MS SQL, когда вы меня пытались убедить, что все там происходит мнгновенно и бесплатно, а в итоге выяснилось, что вы сами не до конца понимаете механизмы этого процесса.
17 окт 08, 11:15    [6319678]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Apex
1) Причем тут звезда и почему именно звезда, а не снежинка?


При том, что связь одной таблицы с несколькими в запросе называют "звездой" и это один из тестов производительности серверов СУБД. Вам не известна такая схема?

Apex
2) Наличие\отсутствие оного (по краней мере в Оракл) влияет как на план, так и на ввод-вывод в зависимости от...много чего.


Блеск!!! Я знаю, но не скажу?

Apex
В смысле вы хотите посмотреть на план с обычной таблицей и план с кластером? Или на план с IOT и кластером? Или что вы вообще хотите?


Гм... Разве можно неоднозначно трактовать:

pkarklin
Вот я и просил привести различия в планах и IO с и без кластером


???

Apex
Вы вообще понимаете, что данные в этих структурах организованы по-разному?


Да, понимаю!

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


Простите, кто на ком стоял? Можно, все-таки, вместо "бла-бла-бла", привести именно различия в плане и\или IO. Если нет, то лучше не писАть.
17 окт 08, 12:58    [6320778]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
pkarklin
При том, что связь одной таблицы с несколькими в запросе называют "звездой"

Вот даже как... А если связь есть, а звезды как таковой нет, как быть?

pkarklin
это один из тестов производительности серверов СУБД.

Если вы намекаете на те, что перечислены на tpc.org (TPC-H\E), то скажу вам вот что: схема звезда сама по себе не является никаким тестом или джойном, это просто типовая структура организации реляционных таблиц в многомерном проектировании хранилищ данных.

pkarklin
Вам не известна такая схема?

Схема "звезда"
Джойн (в т.ч. и нескольких таблиц)
pkarklin

Блеск!!! Я знаю, но не скажу?

Давайте конкретней: что вы хотите увидеть, как от изменения способа хранения и организации данных меняется план? Так?

pkarklin

Apex
В смысле вы хотите посмотреть на план с обычной таблицей и план с кластером? Или на план с IOT и кластером? Или что вы вообще хотите?


Гм... Разве можно неоднозначно трактовать:
pkarklin
Вот я и просил привести различия в планах и IO с и без кластером

???

без кластером - может быть: просто таблица, индекс-организованная таблица. Речь ведь шла о различиях IOT'ов и Cluster'ов? Или вы серьезно хотите увидеть разницу между обычной таблицей и кластером?

pkarklin

Простите, кто на ком стоял? Можно, все-таки, вместо "бла-бла-бла", привести именно различия в плане и\или IO. Если нет, то лучше не писАть.

Я не до конца понял, что с чем сравниваем. Давайте конкретно, такие-то таблицы, такие-то структуры, покажите планы. Опять же, в кластер можно объединить не только две таблицы заголовок-деталь, можно и одну таблицу так организовать, и это не будет IOT.
17 окт 08, 14:17    [6321634]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
2 Apex

автор
Вот даже как... А если связь есть, а звезды как таковой нет, как быть?


Эээ... Вы о чем? "Как быть" когда?

автор
Если вы намекаете на те, что перечислены на tpc.org (TPC-H\E), то скажу вам вот что: схема звезда сама по себе не является никаким тестом или джойном, это просто типовая структура организации реляционных таблиц в многомерном проектировании хранилищ данных.


Угу, но эта же структура организации "отображается" и в запрос. Не правда ли?

автор
Давайте конкретней: что вы хотите увидеть, как от изменения способа хранения и организации данных меняется план? Так?


Еще раз. Я хочу узнать что менятеся (план, IO) и меняется ли?

автор
Речь ведь шла о различиях IOT'ов и Cluster'ов?


С чего Вы взяли?

автор
Или вы серьезно хотите увидеть разницу между обычной таблицей и кластером?


Уже на протяжении 3ей страницы.

автор
Я не до конца понял, что с чем сравниваем. Давайте конкретно, такие-то таблицы, такие-то структуры, покажите планы.


Я Вам что-то должен показывать??? Увольте, не я тут размахиваю Кайтом в качестве аргументации увеличения производительности "на порядок" ((с) Yo.! ) при наличие кластера.

автор
Опять же, в кластер можно объединить не только две таблицы заголовок-деталь, можно и одну таблицу так организовать, и это не будет IOT.


... а если бы у бабушки были яйца...

Покажите результат сравнения с кластером\без кластера хотя бы для двух таблиц master\detail, умоляю, в конце то концов. ;)
17 окт 08, 14:28    [6321748]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
MGR
Member

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

Хотя, надо помнить, что я в Оракле был совсем новичок (да и щас такой), так что может в этом дело.
17 окт 08, 15:41    [6322370]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
>Я Вам что-то должен показывать??? Увольте, не я тут размахиваю Кайтом в качестве аргументации увеличения производительности "на порядок" ((с) Yo.! ) при наличие кластера.

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

для нашего тестика есть у меня идентичные машинки поставил заливатся в мсскл2005 1М данных из скл скрипта, за 10 минут 50К записей, т.е. даже к утру не закончит. это с чем может быть связано ? может он датафайл на каждую вставку увеличивает на пару байт ??
17 окт 08, 16:13    [6322644]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
блин, дошло этот sqlcmd автокомитит, как отключить автокомит ?
поставил в начала скрипта SET AUTO COMMIT OFF - ноль внимания.
17 окт 08, 17:01    [6323025]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
longraw
Member

Откуда:
Сообщений: 87
MGR
Вообще Оракл требует наличия грамотного DBA для своей работы. Если такой DBA есть - оптимизатор там хорошо работает. Если такого DBA нет - все будет зверски тормозить. Поймите простую вещь - у Оракла ВСЕ настраивается руками при создании инстанса. Тш что там выставляется по умолчанию - это бред и ересь. В вашем случае нормальный DBA должен был запланировать снятие полной статистики на вашей схеме на ночь, часиков так в 12 ночи, а также настроить инстанс по человечески, и было бы вам счастье. Причем с гистограммами индексами и прочей требухой. Тогда оптимизатор мог бы хоть немного чего то оптимизировать. Он не зря называется CBO-Cost based optimizer, он в общем достаточно сложный внутри и для работы ему как минимум надо с приличной достоверностью знать сколько у вас чего где и как, чтобы вычислять стоимости операций. Кроме того он все варианты не перебирает тупо, это слишком долго. Кстати в 10g он значительно менее кривой чем в 9 версии, 9 старенькая уже, ее некорректно сравнивать с 2005 серваком.
17 окт 08, 17:23    [6323157]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
Да пожалуйста.
Кластер создал от балды, не сильно замарачиваясь параметрами хранения. Срез реальных данных документ\спецификация:
Execution Plan
----------------------------------------------------------
Plan hash value: 1279483583

--------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name             | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                  | 17406 |   645K|    86   (2)| 00:00:02 |
|   1 |  TABLE ACCESS BY INDEX ROWID  | DETAIL_TABLE     |   527 |  5797 |     5   (0)| 00:00:01 |
|   2 |   NESTED LOOPS                |                  | 17406 |   645K|    86   (2)| 00:00:02 |
|   3 |    TABLE ACCESS BY INDEX ROWID| MASTER_TABLE     |    33 |   891 |     4   (0)| 00:00:01 |
|*  4 |     INDEX RANGE SCAN          | DOCDATE_I        |    33 |       |     2   (0)| 00:00:01 |
|*  5 |    INDEX RANGE SCAN           | MASTER_DETAIL_FK |   528 |       |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("M"."DOCDATE">=TO_DATE(' 2007-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss')
              AND "M"."DOCDATE"<=TO_DATE(' 2007-06-03 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
   5 - access("M"."ID_OP"="D"."ID_OP")


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
        339  consistent gets
          0  physical reads
          0  redo size
      16339  bytes sent via SQL*Net to client
       1389  bytes received via SQL*Net from client
         98  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1446  rows processed


Execution Plan
----------------------------------------------------------
Plan hash value: 3811576779

-----------------------------------------------------------------------------------------------
| Id  | Operation                    | Name           | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |                | 18067 |   670K|    17   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |                | 18067 |   670K|    17   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID| MASTER_CLUSTER |    33 |   891 |    12   (0)| 00:00:01 |
|*  3 |    INDEX RANGE SCAN          | DOCDATE_CI     |    33 |       |     2   (0)| 00:00:01 |
|   4 |   TABLE ACCESS CLUSTER       | DETAIL_CLUSTER |   547 |  6017 |     1   (0)| 00:00:01 |
|*  5 |    INDEX UNIQUE SCAN         | IDX_CLSTR      |     1 |       |     0   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("M"."DOCDATE">=TO_DATE(' 2007-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss')
              AND "M"."DOCDATE"<=TO_DATE(' 2007-06-03 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
   5 - access("M"."ID_OP"="D"."ID_OP")


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
        239  consistent gets
          0  physical reads
          0  redo size
      16343  bytes sent via SQL*Net to client
       1389  bytes received via SQL*Net from client
         98  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1446  rows processed
17 окт 08, 18:04    [6323406]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
выглядит что загрузить в МС миллион записей из sql-файлика уже не тривиальная задача. management studio sql скрипты загрузить не способна, можно только с консольных утилит. в sqlcmd если insert стейтменты разделять командой go - отключить транзакции не возможно, выполнение растягивается на века, если обрамить в begin/commit tran - вываливается с Scripting error. разбивание на 4 части ситуацию не спасает. есть предложения как в МС сервер загрузить обычный SQL скрипт в 100мб ?

ЗЫ. этот же файлик в оракл вошел со свистом, т.е. синтаксически верен.
17 окт 08, 18:30    [6323510]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
скорее всего вы генерировали этот файлик. могу предложить заменить sql-конструкции на, скажем csv. тогда залить его можно будет, например, командой tsql - insert bulk. либо импортировать при помощи того же SSIS.

хочу отметить, в силу однопоточности процесса импорта, скорость будет ограничена либо процессором, либо диском.
17 окт 08, 21:19    [6323774]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
hvlad
Member

Откуда:
Сообщений: 11551
Yo.!
выглядит что загрузить в МС миллион записей из sql-файлика уже не тривиальная задача. management studio sql скрипты загрузить не способна, можно только с консольных утилит. в sqlcmd если insert стейтменты разделять командой go - отключить транзакции не возможно, выполнение растягивается на века, если обрамить в begin/commit tran - вываливается с Scripting error. разбивание на 4 части ситуацию не спасает. есть предложения как в МС сервер загрузить обычный SQL скрипт в 100мб ?

ЗЫ. этот же файлик в оракл вошел со свистом, т.е. синтаксически верен.
RTFM : SET IMPLICIT_TRANSACTIONS, bcp, BULK INSERT
17 окт 08, 21:58    [6323865]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
наконец удалось прогнать тестик и на mssql2005 sp2. выполнялось на двух идентичных IBM серверах, разница в кол-ве процев и памяти, у мсскл было 4 против 16гб оракла и 1 против 2х процев, но поскольку тест задействует лишь одно ядро и памяти хватало, то в принципе результаты можно сравнивать и в лоб:

create cluster emp_dept_cluster (deptno number(4)) size 8192 ;
/
create index emp_dept_cluster_idx on cluster emp_dept_cluster ;
/
create table dept (deptno number(4) primary key, dname varchar2 (14) , loc varchar2(13) ) cluster emp_dept_cluster (deptno) ;
/
create table emp (empno number primary key, ename varchar2(10) , job varchar2(9), mgr number, deptno number(4) references dept(deptno) ) cluster emp_dept_cluster(deptno) ;
/

теперь загружаем данные в таблички:
SQL>@/tmp/data.sql ;

SQL> set timing on;                                                                                                                           
SQL> set autotrace on;    

сбрасываем кеш:
SQL> alter system flush buffer_cache ;                                                              
System altered.

Elapsed: 00:00:00.65
SQL> select max(mgr), max(ename), max(dname) from emp e, dept d where e.deptno=d.deptno and e.deptno between 300 and 802 ;

  MAX(MGR) MAX(ENAME) MAX(DNAME)
---------- ---------- --------------
	 8 PPPIICGIFH PLPHFIMDHKILAE

Elapsed: 00:00:00.37

Execution Plan
----------------------------------------------------------
Plan hash value: 2433249631

------------------------------------------------------------------------------------------------

| Id  | Operation		| Name		       | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT	|		       |     1 |    37 |  1018 (1)| 00:00:13 |

|   1 |  SORT AGGREGATE 	|		       |     1 |    37 |    |	       |

|   2 |   MERGE JOIN		|		       |   253K|  9166K|  1018 (1)| 00:00:13 |

|   3 |    TABLE ACCESS CLUSTER | EMP		       |   502K|  8829K|   508 (0)| 00:00:07 |

|*  4 |     INDEX RANGE SCAN	| EMP_DEPT_CLUSTER_IDX |     1 |       |     3 (0)| 00:00:01 |

|*  5 |    SORT JOIN		|		       |   505 |  9595 |   509 (1)| 00:00:07 |

|   6 |     TABLE ACCESS CLUSTER| DEPT		       |   505 |  9595 |   508 (0)| 00:00:07 |

|*  7 |      INDEX RANGE SCAN	| EMP_DEPT_CLUSTER_IDX |     1 |       |     3 (0)| 00:00:01 |

------------------------------------------------------------------------------------------------


Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("E"."DEPTNO">=300 AND "E"."DEPTNO"<=802)
   5 - access("E"."DEPTNO"="D"."DEPTNO")
       filter("E"."DEPTNO"="D"."DEPTNO")
   7 - access("D"."DEPTNO">=300 AND "D"."DEPTNO"<=802)


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



Теперь SQL SERVER

create table dept (deptno numeric(4) primary key, dname varchar (14) , loc varchar(13) ) 

create table emp (empno int primary key, ename varchar(10) , job varchar(9), mgr int, deptno numeric(4) )

теперь 5 часов е"@мся с кривыми утилитами sqlcmd и osql, понимаем что в одной транзакции запихнуть миллион записей ими не реально, запускаем скрипт наночь.

create index em_deptno_idx on emp(deptno)

команды сброса кеша не знаем, делаем стоп/старт сервису мсскл.

SET STATISTICS TIME ON
GO

SET STATISTICS IO ON
GO

select max(mgr), max(ename), max(dname) from emp e, dept d where e.deptno=d.deptno and e.deptno between 300 and 802

Таблица "dept". Число просмотров 1, логических чтений 6, физических чтений 1, упреждающих чтений 4, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "emp". Число просмотров 5, логических чтений 5919, физических чтений 2, упреждающих чтений 5834, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

(1 row(s) affected)

Время выполнения SQL Server:
 Время ЦП = 1046 мс, истекшее время = 464 мс.
Время синтаксического анализа и компиляции SQL Server: 
 время ЦП = 0 мс, истекшее время = 1 мс.

Время выполнения SQL Server:
 Время ЦП = 0 мс, истекшее время = 1 мс.

18 окт 08, 14:43    [6324928]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
hvlad

ЗЫ. этот же файлик в оракл вошел со свистом, т.е. синтаксически верен.
RTFM : SET IMPLICIT_TRANSACTIONS, bcp, BULK INSERT[/quot]
я обрамил все инсерты конструкцией begin/commit tran, sqlcmd через несколько минут вываливается с Scripting error, osql три часа насилует проц и вываливается с каким-то сообщением на аброкадабре (мс когда нибудь проблему шрифтов решит ?). пытался разбить на четыре транзакции - тот же фифект.

бцп не осилил, может ли он обычный скрипт прогнать
C:\temp>bcp -i c:\temp\data-ms3.sql -e c:\temp\sql9.txt
Направление копирования должно иметь значение "in", "out" или "format".
18 окт 08, 14:59    [6324948]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
забыл прицепить файлики с данными:
http://triffids.googlepages.com/data-ms.rar
http://triffids.googlepages.com/data-oracle.rar

генерировались одним скриптом.
у обоих баз 8К страница (db_block_size), а вот с уникодом надо проверить, оракл AL32UTF8, непомню, английские символы в 2 байта хранит или в одном. у МС Cyrillic_General_CI_AS, как я понимаю не уникод.

вот, более впечатляющий отрыв:
select max(mgr), max(ename), max(dname) from emp e, dept d where e.deptno=d.deptno and e.deptno in (100, 400, 700, 850, 15, 955)

МССКЛ:
Таблица "dept". Число просмотров 1, логических чтений 8, физических чтений 1, упреждающих чтений 6, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "emp". Число просмотров 5, логических чтений 5919, физических чтений 1, упреждающих чтений 5835, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Таблица "Worktable". Число просмотров 0, логических чтений 0, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

(1 row(s) affected)

Время выполнения SQL Server:
Время ЦП = 357 мс, истекшее время = 351 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 1 мс.

Время выполнения SQL Server:
Время ЦП = 0 мс, истекшее время = 1 мс.

Оракл:
SQL> alter system flush buffer_cache ; System altered.
Elapsed: 00:00:00.47
SQL> select max(mgr), max(ename), max(dname) from emp e, dept d where e.deptno=d.deptno and e.deptno in (100, 400, 700, 850, 15, 955) ;

MAX(MGR) MAX(ENAME) MAX(DNAME)
---------- ---------- --------------
8 POHFDIFEHF MIELHJPBFNKJIN

Elapsed: 00:00:00.01

Execution Plan
----------------------------------------------------------
Plan hash value: 2351653054

--------------------------------------------------------------------------------
----------------

| Id | Operation | Name | Rows | Bytes | Cost (%
CPU)| Time |

--------------------------------------------------------------------------------
----------------

| 0 | SELECT STATEMENT | | 1 | 37 | 18
(6)| 00:00:01 |

| 1 | SORT AGGREGATE | | 1 | 37 |
| |

|* 2 | HASH JOIN | | 36 | 1332 | 18
(6)| 00:00:01 |

| 3 | INLIST ITERATOR | | | |
| |

| 4 | TABLE ACCESS CLUSTER| DEPT | 6 | 114 | 8
(0)| 00:00:01 |

|* 5 | INDEX RANGE SCAN | EMP_DEPT_CLUSTER_IDX | 1 | | 2
(0)| 00:00:01 |

| 6 | INLIST ITERATOR | | | |
| |

| 7 | TABLE ACCESS CLUSTER| EMP | 5980 | 105K| 9
(0)| 00:00:01 |

|* 8 | INDEX RANGE SCAN | EMP_DEPT_CLUSTER_IDX | 1 | | 2
(0)| 00:00:01 |

--------------------------------------------------------------------------------
----------------


Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("E"."DEPTNO"="D"."DEPTNO")
5 - access("D"."DEPTNO"=15 OR "D"."DEPTNO"=100 OR "D"."DEPTNO"=400 OR
"D"."DEPTNO"=700 OR "D"."DEPTNO"=850 OR "D"."DEPTNO"=955)
8 - access("E"."DEPTNO"=15 OR "E"."DEPTNO"=100 OR "E"."DEPTNO"=400 OR
"E"."DEPTNO"=700 OR "E"."DEPTNO"=850 OR "E"."DEPTNO"=955)


Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
84 consistent gets
104 physical reads
0 redo size
677 bytes sent via SQL*Net to client
492 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
18 окт 08, 16:37    [6325127]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
longraw
Member

Откуда:
Сообщений: 87
Yo.! Все ваши героические труды пропали даром. Совершенно неясно, что вы сравнили. И как. В вашем втором тесткейсе получается что Оракл некоторое количество блоков взял из кеша виндов, что он очень любит делать, и это ему огромный плюс. А Оракл зачитал с диска. При этом Оракл в 321 раз быстрее.
Не, ну я сам видел что Оракл процентов на 20 быстрее. Но не в 371 раз же.
Низачот по Ораклу.
Если pkarklin какие нибудь циферки приведет, будет интесно посмотреть насколько он знает MS SQL. Что-то мне подсказывает что примерно так же как Вы Оракл.
18 окт 08, 21:09    [6325525]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
2longraw

а какая разница что там в кеше виндов/контроллера ? смотрите кол-во физических чтений, которые понадобились обоим субд. причем, походу, получился красивый пример херовости оптимизатора мсскл, в оракле у меня даже без кластера на порядок меньше чтений выходит. подождем разьяснений pkarklin, план в мсскл получается такой:
select max(mgr), max(ename), max(dname) from emp e, dept d where e.deptno=d.deptno and e.deptno in (100, 400, 700, 850, 15, 955)

 |--Stream Aggregate(DEFINE:([Expr1004]=MAX([partialagg1007]), [Expr1005]=MAX([partialagg1008]), [Expr1006]=MAX([partialagg1009])))
|--Parallelism(Gather Streams)
|--Stream Aggregate(DEFINE:([partialagg1007]=MAX([TESTDB].[dbo].[emp].[mgr] as [e].[mgr]), [partialagg1008]=MAX([TESTDB].[dbo].[emp].[ename] as [e].[ename]), [partialagg1009]=MAX([TESTDB].[dbo].[dept].[dname] as [d].[dname])))
|--Hash Match(Inner Join, HASH:([d].[deptno])=([e].[deptno]), RESIDUAL:([TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=[TESTDB].[dbo].[dept].[deptno] as [d].[deptno]))
|--Parallelism(Distribute Streams, Hash Partitioning, PARTITION COLUMNS:([d].[deptno]))
| |--Nested Loops(Inner Join, OUTER REFERENCES:([Expr1016], [Expr1017], [Expr1018]))
| |--Merge Interval
| | |--Concatenation
| | |--Compute Scalar(DEFINE:(([Expr1011],[Expr1012],[Expr1010])=GetRangeWithMismatchedTypes((15.),NULL,(22))))
| | | |--Constant Scan
| | |--Compute Scalar(DEFINE:(([Expr1014],[Expr1015],[Expr1013])=GetRangeWithMismatchedTypes(NULL,(955.),(42))))
| | |--Constant Scan
| |--Clustered Index Seek(OBJECT:([TESTDB].[dbo].[dept].[PK__dept__7C8480AE] AS [d]), SEEK:([d].[deptno] > [Expr1016] AND [d].[deptno] < [Expr1017]) ORDERED FORWARD)
|--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([e].[deptno]))
|--Clustered Index Scan(OBJECT:([TESTDB].[dbo].[emp].[PK__emp__7E6CC920] AS [e]), WHERE:([TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=(15.) OR [TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=(100.) OR [TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=(400.) OR [TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=(700.) OR [TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=(850.) OR [TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=(955.)))
18 окт 08, 21:32    [6325587]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
longraw
Member

Откуда:
Сообщений: 87
Yo.! У Мелкософта я не вижу кластера вообще.
А так я Вас поздравляю - у Микрософта план распараллелился на несколько ядер, из-за настроек сервака. Вот когда Вы увидите у Оракла PX_COORDINATOR и вообще параллелизм без хинтов и энфорса - тогда и будем сравнивать. У мелкомягких он есть в этом примере, но видимо потому что кластера нет.
19 окт 08, 10:24    [6326112]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
longraw
Yo.! У Мелкософта я не вижу кластера вообще.

собственно эту нехитрую мысль мы и пытаемся донести, нет у МС аналога понятию кластера в оракле.

longraw

А так я Вас поздравляю - у Микрософта план распараллелился на несколько ядер, из-за настроек сервака. Вот когда Вы увидите у Оракла PX_COORDINATOR и вообще параллелизм без хинтов и энфорса - тогда и будем сравнивать. У мелкомягких он есть в этом примере, но видимо потому что кластера нет.

оракл справился с физическим чтением и джойном за 1мс, чего там параллелить, если в кластере уже джоинутые данные лежат ? по графическому плану затраты на паралелизм мсскл были 19%, при том что 80% сьела операция чтение индекса. т.е. 19% времени ушло на распараллеливание 1% запроса.
дальше, как я понял МС вместо range scan ошибочно применяет insex scan и читает весь индекс, откуда и взялось "упреждающих чтений 5835".

ЗЫ. к стате как получить стоимость операции в текстовом плане МС ?
19 окт 08, 13:40    [6326322]     Ответить | Цитировать Сообщить модератору
 Re: Чем Oracle отличается от SQL Server  [new]
Yo.!
Guest
файлики с данными на гугл чего-то не залились, переложил сюда:
http://rapidshare.com/files/155447716/data-ms.rar
http://rapidshare.com/files/155448427/data-oracle.rar
19 окт 08, 13:59    [6326341]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 [8] 9 10   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить