|
|
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Yo.!теперь 5 часов е"@мся с кривыми утилитами sqlcmd и osql, понимаем что в одной транзакции запихнуть миллион записей ими не реально, запускаем скрипт наночь. Залилось примерно за 50 минут, без "е"@мся". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:04 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
longraw AI Я бы вам поверил, если бы с Ораклом поменьше ковырялся. Т.е у вас 1 (одна) таблица 1.5 Тб? Огласите хинт. Учтите, массу хинтов CBО игнорирует, не ошибитесь :) Если у вас 1 таблица 1.5 Тб, то у вас массив тоже за 200Мб/с рандомного чтения. В самом печальном для вас случае. Это самое начало мид-рендж. Вообще таких контор штук 30 в России, ну или совсем дикие, плохо понимают что делают. Я где-то написал, что таблица одна? Слова "промежуточная обработка" как раз и должна была натолкнуть на мысль, что несколько таблиц должны дать большой объем на каком-то шаге выполнения запроса. Я также нигде не написал, что запрос "у меня", наоборот "я созерцал"... Я уж молчу о Вашем рассуждении насчет "начала мид-ренджа". Поэтому не надо домыслов и лишней патетики. А хинт был совсем вроде безобидный - first_rows. Этот хинт в запросе был единственным и синтаксически верным, так что не проигнорировался. Самое страшное во всем этом было то, что занят был только один процессор. Распараллелить эту байду не представлялось возможным, да и решение было примитивным - выкинуть хинт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:05 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:06 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: 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. There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:07 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:14 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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, на локальный сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:17 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Все выполнялось на персоналке. Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Вопрос, почему индекс скан был, да потому, что диапазон deptno большой. Если так: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. План: StmtText Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:23 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
в первом запросе - согласен, а вот во втором странно, у меня и второй запрос стабильно ошибочно сканирует весь индекс. думаю локи сейчас подтвердит. но собственно то, что я хотел - показал, оракл уложился в 2576 physical reads, мсскл чуть меньше 4000. как я полнимаю у обоих размер блока 8К, т.е. можно сравнивать в лоб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:35 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Yo.!в первом запросе - согласен, а вот во втором странно, у меня и второй запрос стабильно ошибочно сканирует весь индекс. думаю локи сейчас подтвердит. но собственно то, что я хотел - показал, оракл уложился в 2576 physical reads, мсскл чуть меньше 4000. как я полнимаю у обоих размер блока 8К, т.е. можно сравнивать в лоб. Вот план от запроса: Код: plaintext Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:38 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Но если сказать вот так: Код: plaintext 1. 2. 3. то: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:42 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Yo.!в первом запросе - согласен, а вот во втором странно, у меня и второй запрос стабильно ошибочно сканирует весь индекс. думаю локи сейчас подтвердит. Плано второго запроса у меня совпадает с pkarklin - hash join between index seek and index scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 13:48 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
о, действительно - с хинтом на порядок быстрее с хинтом мсскл перестает пытатся параллелить и вот, что получается у меня: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:20 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Вывод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: лично у меня мсскл совершенно не адекватно пытется параллелить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:45 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Yo.!Вывод1: оптимизатор мсскл оказался не на высоте и без хинта тупит генерит на порядок более затратный план. далеко не всегда менее затратный план является лучшим с т.з. скорости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:47 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:55 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:12 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
2pkarklin в нашем случае не важно я умудрился попасть с размером кластера так что в оракле было всего 13 read-ahead (scattered read на оракловом языке) чтений. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. к стате, в оракле я могу сам задвать размер scattered read alter session set db_file_multiblock_read_count = 16 ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:48 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
Yo.!read-ahead (scattered read на оракловом языке)Упреждающее чтение и мультиблочное чтение в набор не последовательных буферов - совсем не одно и тоже (ща начнётся) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 17:42 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 17:49 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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 (хотя, конечно, тогда он будет не так эффективен), так понятнее ? Из того, что А часто используется в Б, не следует, что А == Б, так понятнее ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 18:20 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 19:44 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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, это разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 21:37 |
|
||
|
Чем Oracle отличается от SQL Server
|
|||
|---|---|---|---|
|
#18+
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." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2008, 02:28 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=35605418&tid=1553037]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
106ms |
get tp. blocked users: |
1ms |
| others: | 21ms |
| total: | 191ms |

| 0 / 0 |
