powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем Oracle отличается от SQL Server
23 сообщений из 248, страница 10 из 10
Чем Oracle отличается от SQL Server
    #35604080
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!теперь 5 часов е"@мся с кривыми утилитами sqlcmd и osql, понимаем что в одной транзакции запихнуть миллион записей ими не реально, запускаем скрипт наночь.

Залилось примерно за 50 минут, без "е"@мся".
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604083
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longraw AI Я бы вам поверил, если бы с Ораклом поменьше ковырялся. Т.е у вас 1 (одна) таблица 1.5 Тб? Огласите хинт. Учтите, массу хинтов CBО игнорирует, не ошибитесь :) Если у вас 1 таблица 1.5 Тб, то у вас массив тоже за 200Мб/с рандомного чтения. В самом печальном для вас случае. Это самое начало мид-рендж. Вообще таких контор штук 30 в России, ну или совсем дикие, плохо понимают что делают.

Я где-то написал, что таблица одна? Слова "промежуточная обработка" как раз и должна была натолкнуть на мысль, что несколько таблиц должны дать большой объем на каком-то шаге выполнения запроса. Я также нигде не написал, что запрос "у меня", наоборот "я созерцал"...

Я уж молчу о Вашем рассуждении насчет "начала мид-ренджа".

Поэтому не надо домыслов и лишней патетики.

А хинт был совсем вроде безобидный - first_rows. Этот хинт в запросе был единственным и синтаксически верным, так что не проигнорировался. Самое страшное во всем этом было то, что занят был только один процессор. Распараллелить эту байду не представлялось возможным, да и решение было примитивным - выкинуть хинт.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604087
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
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 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 1 ms.
SQL Server parse and compile time: 
   CPU time = 437 ms, elapsed time = 450 ms.

(1 row(s) affected)
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'emp'. Scan count 1, logical reads 5704, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'dept'. Scan count 1, logical reads 6, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
   CPU time = 813 ms,  elapsed time = 853 ms.

-------------------------
There’s no silver bullet!
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604091
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
dbcc dropcleanbuffers
dbcc freeproccache
go
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 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

SQL Server Execution Times:
   CPU time = 15 ms,  elapsed time = 42 ms.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

SQL Server Execution Times:
   CPU time = 63 ms,  elapsed time = 62 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

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

SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 1 ms.
SQL Server parse and compile time: 
   CPU time = 15 ms, elapsed time = 31 ms.

(1 row(s) affected)
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'emp'. Scan count 1, logical reads 5704, physical reads 3, read-ahead reads 5598, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'dept'. Scan count 1, logical reads 6, physical reads 1, read-ahead reads 4, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
   CPU time = 875 ms,  elapsed time = 1234 ms.
-------------------------
There’s no silver bullet!
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604107
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2locky
а теперь можно с планом:
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)

за 50 минут залился именно мой файлик с GO после каждого инсерта ? sqlcmd ?
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604118
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!2locky
а теперь можно с планом:
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)

за 50 минут залился именно мой файлик с GO после каждого инсерта ? sqlcmd ?
план - чуть позже, после митинга :(
за 50 минут - да, тот самый, разве что вместо set что-то там я поставил set nocount on
заливал через sqlcmd, на локальный сервер.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604135
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все выполнялось на персоналке.

Код: plaintext
1.
2.
3.
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'emp'. Scan count 1, logical reads 5704, physical reads 2, read-ahead reads 3933, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'dept'. Scan count 1, logical reads 6, physical reads 0, read-ahead reads 2, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
   CPU time = 1469 ms,  elapsed time = 2347 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

Вопрос, почему индекс скан был, да потому, что диапазон deptno большой. Если так:

Код: plaintext
1.
2.
3.
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

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


Код: plaintext
1.
2.
3.
4.
5.
6.
Table 'emp'. Scan count 3, logical reads 9281, physical reads 3, read-ahead reads 22, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'dept'. Scan count 1, logical reads 2, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
   CPU time = 62 ms,  elapsed time = 73 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

Код: plaintext
1.
2.
3.
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

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 )

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'emp'. Scan count 1, logical reads 5704, physical reads 2, read-ahead reads 3933, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'dept'. Scan count 1, logical reads 8, physical reads 0, read-ahead reads 10, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
   CPU time = 469 ms,  elapsed time = 1799 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

План:

StmtText
Код: plaintext
1.
2.
3.
  |--Stream Aggregate(DEFINE:([Expr1004]=MAX([Test1].[dbo].[emp].[mgr] as [e].[mgr]), [Expr1005]=MAX([Test1].[dbo].[emp].[ename] as [e].[ename]), [Expr1006]=MAX([Test1].[dbo].[dept].[dname] as [d].[dname])))
       |--Hash Match(Inner Join, HASH:([d].[deptno])=([e].[deptno]), RESIDUAL:([Test1].[dbo].[emp].[deptno] as [e].[deptno]=[Test1].[dbo].[dept].[deptno] as [d].[deptno]))
            |--Clustered Index Seek(OBJECT:([Test1].[dbo].[dept].[PK__dept__0DAF0CB0] AS [d]), SEEK:([d].[deptno] >= (15) AND [d].[deptno] <= (955)) ORDERED FORWARD)
            |--Clustered Index Scan(OBJECT:([Test1].[dbo].[emp].[PK__emp__0F975522] AS [e]), WHERE:([Test1].[dbo].[emp].[deptno] as [e].[deptno]=( 15 ) OR [Test1].[dbo].[emp].[deptno] as [e].[deptno]=( 100 ) OR [Test1].[dbo].[emp].[deptno] as [e].[deptno]=( 400 ) OR [Test1].[dbo].[emp].[deptno] as [e].[deptno]=( 700 ) OR [Test1].[dbo].[emp].[deptno] as [e].[deptno]=( 850 ) OR [Test1].[dbo].[emp].[deptno] as [e].[deptno]=( 955 )))
(4 row(s) affected)
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604174
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в первом запросе - согласен, а вот во втором странно, у меня и второй запрос стабильно ошибочно сканирует весь индекс. думаю локи сейчас подтвердит.
но собственно то, что я хотел - показал, оракл уложился в 2576 physical reads, мсскл чуть меньше 4000. как я полнимаю у обоих размер блока 8К, т.е. можно сравнивать в лоб.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604189
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!в первом запросе - согласен, а вот во втором странно, у меня и второй запрос стабильно ошибочно сканирует весь индекс. думаю локи сейчас подтвердит.
но собственно то, что я хотел - показал, оракл уложился в 2576 physical reads, мсскл чуть меньше 4000. как я полнимаю у обоих размер блока 8К, т.е. можно сравнивать в лоб.

Вот план от запроса:

Код: plaintext
select max(mgr), max(ename), max(dname) from emp e, dept d where e.deptno=d.deptno and d.deptno between  300  and  302 

Код: plaintext
1.
2.
3.
4.
5.
  |--Stream Aggregate(DEFINE:([Expr1004]=MAX([Test1].[dbo].[emp].[mgr] as [e].[mgr]), [Expr1005]=MAX([Test1].[dbo].[emp].[ename] as [e].[ename]), [Expr1006]=MAX([Test1].[dbo].[dept].[dname] as [d].[dname])))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[empno], [Expr1010]) OPTIMIZED WITH UNORDERED PREFETCH)
            |--Nested Loops(Inner Join, OUTER REFERENCES:([d].[deptno]) OPTIMIZED)
            |    |--Clustered Index Seek(OBJECT:([Test1].[dbo].[dept].[PK__dept__0DAF0CB0] AS [d]), SEEK:([d].[deptno] >= (300) AND [d].[deptno] <= (302)) ORDERED FORWARD)
            |    |--Index Seek(OBJECT:([Test1].[dbo].[emp].[IX_emp_deptno] AS [e]), SEEK:([e].[deptno]=[Test1].[dbo].[dept].[deptno] as [d].[deptno]),  WHERE:([Test1].[dbo].[emp].[deptno] as [e].[deptno]>=(300) AND [Test1].[dbo].[emp].[deptno] as [e].[deptno]<=(302)) ORDERED FORWARD)
            |--Clustered Index Seek(OBJECT:([Test1].[dbo].[emp].[PK__emp__0F975522] AS [e]), SEEK:([e].[empno]=[Test1].[dbo].[emp].[empno] as [e].[empno]) LOOKUP ORDERED FORWARD)
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604204
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но если сказать вот так:

Код: plaintext
1.
2.
3.
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

select max(mgr), max(ename), max(dname) from emp e WITH (INDEX = IX_emp_deptno) , dept d where e.deptno=d.deptno and e.deptno in ( 100 ,  400 ,  700 ,  850 ,  15 ,  955 )

то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'emp'. Scan count 6, logical reads 18487, physical reads 20, read-ahead reads 40, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'dept'. Scan count 1, logical reads 8, physical reads 1, read-ahead reads 8, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
   CPU time = 63 ms,  elapsed time = 451 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 1 ms.

Код: plaintext
1.
2.
3.
4.
5.
6.
  |--Stream Aggregate(DEFINE:([Expr1004]=MAX([Test1].[dbo].[emp].[mgr] as [e].[mgr]), [Expr1005]=MAX([Test1].[dbo].[emp].[ename] as [e].[ename]), [Expr1006]=MAX([Test1].[dbo].[dept].[dname] as [d].[dname])))
       |--Hash Match(Inner Join, HASH:([d].[deptno])=([e].[deptno]))
            |--Clustered Index Seek(OBJECT:([Test1].[dbo].[dept].[PK__dept__0DAF0CB0] AS [d]), SEEK:([d].[deptno] >= (15) AND [d].[deptno] <= (955)) ORDERED FORWARD)
            |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[empno], [Expr1010]) WITH UNORDERED PREFETCH)
                 |--Sort(ORDER BY:([e].[empno] ASC))
                 |    |--Index Seek(OBJECT:([Test1].[dbo].[emp].[IX_emp_deptno] AS [e]), SEEK:([e].[deptno]=(15) OR [e].[deptno]=(100) OR [e].[deptno]=(400) OR [e].[deptno]=(700) OR [e].[deptno]=(850) OR [e].[deptno]=(955)) ORDERED FORWARD)
                 |--Clustered Index Seek(OBJECT:([Test1].[dbo].[emp].[PK__emp__0F975522] AS [e]), SEEK:([e].[empno]=[Test1].[dbo].[emp].[empno] as [e].[empno]) LOOKUP ORDERED FORWARD)
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604224
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!в первом запросе - согласен, а вот во втором странно, у меня и второй запрос стабильно ошибочно сканирует весь индекс. думаю локи сейчас подтвердит.

Плано второго запроса у меня совпадает с pkarklin - hash join between index seek and index scan.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604520
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
о, действительно - с хинтом на порядок быстрее с хинтом мсскл перестает пытатся параллелить и вот, что получается у меня:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
( 1  row(s) affected)
Таблица "emp". Число просмотров  6 , логических чтений  19675 , физических чтений  36 , упреждающих чтений  34 , lob логических чтений  0 , lob физических чтений  0 , lob упреждающих чтений  0 .
Таблица "dept". Число просмотров  1 , логических чтений  8 , физических чтений  1 , упреждающих чтений  6 , lob логических чтений  0 , lob физических чтений  0 , lob упреждающих чтений  0 .

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

|--Stream Aggregate(DEFINE:([Expr1004]=MAX([TESTDB].[dbo].[emp].[mgr] as [e].[mgr]), [Expr1005]=MAX([TESTDB].[dbo].[emp].[ename] as [e].[ename]), [Expr1006]=MAX([TESTDB].[dbo].[dept].[dname] as [d].[dname])))
       |--Merge Join(Inner Join, MERGE:([d].[deptno])=([e].[deptno]), RESIDUAL:([TESTDB].[dbo].[emp].[deptno] as [e].[deptno]=[TESTDB].[dbo].[dept].[deptno] as [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)
            |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[empno], [Expr1019]) WITH ORDERED PREFETCH)
                 |--Index Seek(OBJECT:([TESTDB].[dbo].[emp].[em_deptno_idx] AS [e]), SEEK:([e].[deptno]=(15.) OR [e].[deptno]=(100.) OR [e].[deptno]=(400.) OR [e].[deptno]=(700.) OR [e].[deptno]=(850.) OR [e].[deptno]=(955.)) ORDERED FORWARD)
                 |--Clustered Index Seek(OBJECT:([TESTDB].[dbo].[emp].[PK__emp__7E6CC920] AS [e]), SEEK:([e].[empno]=[TESTDB].[dbo].[emp].[empno] as [e].[empno]) LOOKUP ORDERED FORWARD)

выводы в отдельном посте, чтоб читать удобнее
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604605
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вывод1: оптимизатор мсскл оказался не на высоте и без хинта тупит генерит на порядок более затратный план.
(по цифиркам pkarklin
юез хинта: logical reads 5704, physical reads 2, read-ahead reads 3933
с хинтом: logical reads 18487, physical reads 20, read-ahead reads 40)

Вывод2:
Remember that read-ahead reads are physical disk reads that are 64 KB per read and physical reads refer to physical disk reads that are 8 KB per read.
http://msdn.microsoft.com/en-us/library/aa226172(SQL.70).aspx

т.е. без хинта - разрыв на порядок, а для моего запроса с хинтом в мсскл у нас получается:

SQL> select 36 + 34*8 +1 + 6*8 as pages from dual ;

PAGES
----------
357

т.е. пришлось поднять с диска 357 страницы по 8K, тот же запрос в оракле с кластерной табличкой:
104 physical reads
т.е. терминами мсскл 104 страницы по 8K.

Вывод3: лично у меня мсскл совершенно не адекватно пытется параллелить.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604616
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Вывод1: оптимизатор мсскл оказался не на высоте и без хинта тупит генерит на порядок более затратный план.

далеко не всегда менее затратный план является лучшим с т.з. скорости.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604649
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
далеко не всегда менее затратный план является лучшим с т.з. скорости.
имхо по цифрам pkarklin
SQL Server Execution Times:
CPU time = 469 ms, elapsed time = 1799 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.

выглядит медленней
SQL Server Execution Times:
CPU time = 63 ms, elapsed time = 451 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604709
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!т.е. пришлось поднять с диска 357 страницы по 8K,

На мой взгляд не совсем корректно умножать и складывать страницы поднятые по 8 штук упреждающим чтением. Точнее считать линейной зависимость скорости поднятия страниц с диска от кол-ва поднятых страниц. Ибо последовательное чтение (в порядке расположения страниц на диске) блоками большего размера может оказаться оптимальнее, чем "точная" выборка только необходимых страниц.

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

http://blogs.msdn.com/craigfr/archive/2008/09/23/sequential-read-ahead.aspx

На мой взгляд, ключевая фраза:

When SQL Server performs a sequential scan of a large table, the storage engine initiates the read ahead mechanism to ensure that pages are in memory and ready to scan before they are needed by the query processor .
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604821
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2pkarklin

в нашем случае не важно
я умудрился попасть с размером кластера так что в оракле было всего 13 read-ahead (scattered read на оракловом языке) чтений.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Rows     Row Source Operation
-------  ---------------------------------------------------
       1   SORT AGGREGATE (cr= 84  pr= 104  pw= 0  time= 8385  us)
    6000    HASH JOIN  (cr= 84  pr= 104  pw= 0  time= 15875  us)
       6     INLIST ITERATOR  (cr= 42  pr= 104  pw= 0  time= 4657  us)
       6      TABLE ACCESS CLUSTER DEPT (cr= 42  pr= 104  pw= 0  time= 3390  us)
       6       INDEX RANGE SCAN EMP_DEPT_CLUSTER_IDX (cr= 12  pr= 8  pw= 0  time= 509  us)(object id  56963 )
    6000     INLIST ITERATOR  (cr= 42  pr= 0  pw= 0  time= 6023  us)
    6000      TABLE ACCESS CLUSTER EMP (cr= 42  pr= 0  pw= 0  time= 69  us)
       6       INDEX RANGE SCAN EMP_DEPT_CLUSTER_IDX (cr= 12  pr= 0  pw= 0  time= 53  us)(object id  56963 )


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                        2          0 . 00            0 . 00 
  [color=yellow]db file scattered read                          13          0 . 00            0 . 00 [/color]
  SQL*Net message from client                      2          3 . 45            3 . 45 


к стате, в оракле я могу сам задвать размер scattered read
alter session set db_file_multiblock_read_count = 16 ;
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35604995
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!read-ahead (scattered read на оракловом языке)Упреждающее чтение и мультиблочное чтение в набор не последовательных буферов - совсем не одно и тоже

(ща начнётся)
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35605012
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladУпреждающее чтение и мультиблочное чтение в набор не последовательных буферов - совсем не одно и тоже

да ? а чего ж вы майкрософт не оповестили ?
(C) MSDNThe read-ahead mechanism allows the Database Engine to read up to 64 contiguous pages (512KB) from one file. The read is performed as a single scatter-gather read to the appropriate number of (probably non-contiguous) buffers in the buffer cache.
http://msdn.microsoft.com/en-us/library/ms191475.aspx
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35605113
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvladУпреждающее чтение и мультиблочное чтение в набор не последовательных буферов - совсем не одно и тоже

да ? а чего ж вы майкрософт не оповестили ?
(C) MSDNThe read-ahead mechanism allows the Database Engine to read up to 64 contiguous pages (512KB) from one file. The read is performed as a single scatter-gather read to the appropriate number of (probably non-contiguous) buffers in the buffer cache.Я же сказал - ща начнётся :)

Момент чтения и способ чтения данных - это не одно и тоже. Scattered read можно применять не только для read-ahead, и read-ahead не обязан применять scattered read (хотя, конечно, тогда он будет не так эффективен), так понятнее ?

Из того, что А часто используется в Б, не следует, что А == Б, так понятнее ?
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35605261
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
read-ahead не обязан применять scattered read

вы, эт ... завязывайте с эротическими фантазиями навеяными MySQL6, откройте наконец MSDN

SQL Server 2000 uses ReadFileScatter to perform read-ahead operations.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35605418
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvlad
read-ahead не обязан применять scattered read Не нужно выдирать половину утверждения и пеной у рта её опровергать.

Yo.!откройте наконец MSDN

SQL Server 2000 uses ReadFileScatter to perform read-ahead operations.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx Где там слово only или always ? Где сказано, что один блок нельзя прочитать с ReadFileScatter ?

там жеReadFileScatter

Primarily used by the buffer pool to read pages into the buffer pool. Can be used for single page requests as well as read-ahead requests. Ещё раз : read-ahead не есть scattered read, это разные вещи.
...
Рейтинг: 0 / 0
Чем Oracle отличается от SQL Server
    #35605599
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
SQL Server 2000 uses ReadFileScatter to perform read-ahead operations.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx Где там слово only или always ? Где сказано, что один блок нельзя прочитать с ReadFileScatter ?
[/quot]
- Суслика видишь ?
- Нет
- Я тоже, а он там есть
(C) ДМБ

раз уж видишь суслика (read-ahead использующий что-то кроме вызовов ReadFileScatter), то доказывать его существование будешь ты. ок ;) ?

hvladЕщё раз : read-ahead не есть scattered read, это разные вещи.
mssql read-ahead и scattered read в оракле одно и тоже, в мсскл семерке намертво было зашито чтение 8 страниц за один вызов ReadFileScatter, в оракле 8 - дефолтное значение db_file_multiblock_read_count. сейчас оракл при фулл скане умеет подправлять себе это значение, а мсскл "When a read-ahead is posted, it can be from 1 to 1,024 pages."
...
Рейтинг: 0 / 0
23 сообщений из 248, страница 10 из 10
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем Oracle отличается от SQL Server
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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