SQL server 2005 row versioning

Zveřejněno 29 listopadu 05 11:19 dop.

SQL Server 2005 obsahuje mimo jiných vylepšení oproti verzi 2000 i Row versioning. Row versioning řeší problém blokování uživatelů, kteří chtějí přečíst záznam, který byl změněn jiným uživatelem. Ve verzi SQL 2000, WRITER, který modifikoval záznam v rámci nějaké dlouhé transakce blokoval ostatní READERy, kteří chtěli záznam načíst. V praxi to znamenalo, že pokud jste měli nastaven ISOLATION LEVEL na READ COMMITED což je default hodnota, uživatel, který aktualizoval záznam v tabulce T v rámci své dlouhé transakce blokoval uživatele, kteří chtěli záznam z tabulky T číst.

Tento problém řeší Row versioning, který při UPDATE záznamu v tabulce uchovává původní hodnoty záznamu v databázi TempDB do doby dokončení transakce. Tyto původní hodnoty, které ještě nejsou potvrzené (COMMIT)mohou READEŘI číst, takže nemusejí čekat na dokončení transakce WRITERa. 

Více na

http://www.databasejournal.com/features/mssql/article.php/3524891

 

by opis

Komentář

# Robert Vejvoda said on listopadu 30, 2005 13:02:
Ja myslim, ze pokud se ctou stare zaznamy a znovna probiha update, tak je to stejne, jako by se cetli zaznamy uz nove vlozene, ale nepotvrzene. Stejne funkcnosti lze zajistit i na SQL 2000 pouzitim (nolock) na tabulce. Rozdil je zrejme v tom, ze v pripade row versioning dostanete data stara, zatimco pri pouziti nolock data nova jeste nepotvrzena. Pokud ale zalezi na integrite dat, tak v kazdem pripade musi reader pockat na dokonceni transakce.
# opis said on listopadu 30, 2005 14:47:
Ano v zasade mate pravdu, ale tahle volba je nebezpecna ( data jsou nekonzistentni )

Pokud writer presunuje napriklad penize z uctu na ucet v jedne tabulce ( sloupec zustatek )
Predstavte si situlaci kdy z prvniho uctu writer odebere 10milionu - vy prectete zaznamy a pote writer teprve zapise 10milionu na jiny ucet. Razem dostavate celkovou sumu vsech zustatku o 10mil mensi. Pokud tahle situlace readerovi nevadi, muze se pouzit spinave cteni.
Row versioning neni spinave cteni - v tom je ta vyhoda.
# Michael Jurek said on prosince 1, 2005 12:16:
2Robert: "Pokud ale zalezi na integrite dat, tak v kazdem pripade musi reader pockat na dokonceni transakce." - to prave neni pravda, reader neni nijak omezen. Reader ma k dispozici snapshot konzistentnich (commitnutych) dat v dobe, kdy zahajil svoji transakci (pod urovni izolace SNAPSHOT).
Neregistrovaní uživatele nemužou přidávat komentáře.
Vyvojar.cz na prodej!