Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

fast_forward vc forward_only   Найти похожие ветки 

 
Bless ©   (2004-09-03 11:40) [0]

Насколько я понял из book online fast_forward-курсоры соптимизированы для быстрого чтения.
Для проверки в query analizer сделал два batch-а, отличающихся только одним словом:

declare @nzs int, @nzz int
set @counter=1
declare tmp cursor
local
FAST_FORWARD (во втором - FORWARD_ONLY)
for
select nzz from pozib
set @counter=0
open tmp
fetch next from tmp into @nzz
while (@@fetch_status=0) and (@counter<=1000)
begin
fetch next from tmp into @nzz
print @nzz
set @counter=@counter+1
end
close tmp

В результате профайлер после нескольких прогонок обеих batch-ей
показал, что во ВСЕХ случаях forward_only - курсор быстрее fast_forward - курсора!

Я неправильно понял справку?
Не обеспечил чистоту эксперимента?
Или в чем тогда фишка fast_forward-а


 
Nikolay M. ©   (2004-09-03 13:15) [1]

Интересно.
DEALLOCATE tmp
еще добавь. О результатах напиши.


 
Bless ©   (2004-09-03 15:09) [2]

Nikolay M.[1]>

Похоже, я все-таки не обеспечил чистоту эксперимента. :)
Во-первых,
я писал тексты двух батчей в разных окнах и по очереди и в разной последовательности их запускал.  На переключение между окнами уходило какое-то время, в течение которого могло что-то поменяться.
Во-вторых, я потом заметил, что на экран выводятся РАЗНЫЕ результаты, хотя тексты батчей отличаются только одним словом.
Поэтому я внес такие изменения:
1)Теперь написал оба батча в одном окне, разделив их go.
Запустил несколько раз. Потом поменял местами и еще позапускал.

2)Поменял в обоих батчах строку "select nzz from pozib"
на "select nzz from pozib order by nzz" (чтоб результаты были одинаковыми)

Результаты получились довольно близкими, причем с незначительным перевесом то в одну, то в другую сторону по параметру CPU, но с постоянным перевесом по reads (в смысле, это значение было всегда меньше) в пользу fast_forward.  Поменяв в запросе @counter<=1000 на @counter<=10000 получил более убедительную картину. fast_forward все-таки быстрее оказался (где-то на 25-30 процентов).

Добавление строки DEALLOCATE tmp никак на распределение результатов вроде бы не повлияло.


 
Ega23 ©   (2004-09-03 15:16) [3]

Добавление строки DEALLOCATE tmp никак на распределение результатов вроде бы не повлияло.

На результат оно и не должно было, по идее, повлиять. Это ты курсор освобождаешь таким образом. Короче, типа Free у объекта в Delphi.


 
Nikolay M. ©   (2004-09-03 16:09) [4]


> Добавление строки DEALLOCATE tmp никак на распределение
> результатов вроде бы не повлияло.

Исключительно для чистоты эксперимента. Я же на знал, при каких прочих условиях ты тестируешь.


> fast_forward все-таки быстрее оказался (где-то на 25-30
> процентов).

О чем БОЛ и говорит:

FAST_FORWARD

Specifies a FORWARD_ONLY, READ_ONLY cursor with optimizations enabled. FAST_FORWARD cannot be specified if SCROLL is also specified. FAST_FORWARD and FORWARD_ONLY are mutually exclusive, if one is specified the other cannot be specified.


 
Bless ©   (2004-09-03 16:35) [5]

Nikolay M.[4]>
>Specifies a FORWARD_ONLY, READ_ONLY cursor with performance
>optimizations enabled

Тьфу ты. И чем я только смотрел? Почему-то именно эти строчки проскочили мимо моего сознания. Аж досадно, блин.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.427 c
1-1095527219
Виньдовьсь 95
2004-09-18 21:06
2004.10.03
Приостановка программы


14-1095295675
Soft
2004-09-16 04:47
2004.10.03
Там они пообедали фруктами, посмотрели кино и застрелились.


1-1095404017
sesh
2004-09-17 10:53
2004.10.03
Командная строка


14-1095146447
KSergey
2004-09-14 11:20
2004.10.03
Win2k и autoexec.bat


3-1094223672
}|{yk
2004-09-03 19:01
2004.10.03
Вот проблема встала...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский