MSSQL я в восторге :)
От: Mikst  
Дата: 21.10.05 08:35
Оценка:
Решил вынести из темы 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 такое вполне возможно и это нормально (хоть и печально).

но! выполняя этот тест раз за разом стал получать более удивительные числа, например 5242880072.

Вот тут уж точно ничего не понимаю. Кто отгадает загадку?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.