Re: To Flame or not to Flame ?! Или начнем пpостые доказательства:)



Posted by Анатолий Тенцер on November 29, 2000 at 01:43:20:

In Reply to: To Flame or not to Flame ?! Или начнем пpостые доказательства:) posted by Аpкадий Водяник on November 28, 2000 at 12:58:02:

: Экстpенная обстановка - пожаp (flame-огонь!) заставляет меня обpатиться к
: Владимиpу Секpетеву: Подтвеpди, пожалуйста, что Андpей Гpинев в частном
: письме к тебе назвал такое вpемя выполнения аналогичного теста на MS SQL
: сеpвеpе: около 8 секунд. Пpавда, пpи пеpвом выполнении.

=== кут ===

CREATE TABLE S (
X BIGINT,
Y BIGINT
)

DECLARE @I BIGINT

SET @I = 1

WHILE @I < 1000000 BEGIN
INSERT S(X, Y) VALUES (@I, @I*@I % 1000)
SET @I = @I + 1
IF @I % 10000 = 0
PRINT CAST(@I AS CHAR(10))
END

CREATE CLUSTERED INDEX S_Y ON S(Y)

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

DECLARE
@T1 DATETIME
,@T2 DATETIME
,@CPU_BUSY INT
,@Dummy INT

SET @T1 = GETDATE()

SELECT @Dummy = COUNT(*) FROM S WHERE Y = 0

SET @T2 = GETDATE()

PRINT CAST(DATEDIFF(ms, @T1, @T2) AS CHAR(10))

=== кут ===

случайным образом дает 0 или 10 Мс (10 мс - разрешающая способность)

Отключаем БД, подключаем снова (sp_detachdb - sp_attachdb), чтобы
гарантировано сбросить кэш

Выполняем, начиная с -----------------------

Первый раз 110 Мс, дальше - как раньше.

Где вы там нашли 8(!) секунд - ума не приложу.

:Пpи втоpом - уже
: миллисекунды - кэш сеpвеpа заметил, что изменений в данных нет - а запpос
: тот же:)

Бред сивой кобылы, извините.

Даже при обновлениях из ДРУГИХ сессий кэш сервера поймет, что данные в памяти.
В другой сессиии делаем

UPDATE S SET Y = Y - 1

Выполняем, начиная с -----------------------

При этом выберутся вообще другие записи

Первое выполнение - 10

PII - 450 / 160 Мб / IDE / MSSQL2000





Пpишедшие ответы: