Решил вынести из темы
MSSQL. великие гуру, избавьте от deadlockАвтор: Mikst
Дата: 20.10.05
.
Напомню:
имеем таблицу
create table test (i numeric identity, v numeric);
у меня в ней 5242880 записей.
далее открываем две окна Query Analyzer
в первом пишем:
begin tran
select sum(v) from test;
commit;
begin tran
select sum(v) from test;
commit;
...
begin tran
select sum(v) from test;
commit;
вобщем побольше
а во втором соответственно
begin tran
update test set v=1000;
commit;
begin tran
update test set v=v+1 where i in (4,2621440,151345,2343543,3,2620000);
commit;
...
begin tran
update test set v=1000;
commit;
begin tran
update test set v=v+1 where i in (4,2621440,151345,2343543,3,2620000);
commit;
тоже много раз.
запускаем оба и смотрим на результаты select'ов.
сперва я получил такие данные:
5242880000
5242880006
5242880000
5242880006
5242880004
Ужаснулся, но действительно при IZOLATION LEVEL READ COMMITTED такое вполне возможно и это нормально (хоть и печально).
но! выполняя этот тест раз за разом стал получать более удивительные числа, например 52428800
72.
Вот тут уж точно ничего не понимаю. Кто отгадает загадку?