SQLServer 2005ããã¹ãããã·ã§ããåé¢ã¬ãã«ã¨ããåé¢ã¬ãã«ã追å ãããã
ããã¯ãOracleã®ãããªããã¯ã®
ããã¦ã¼ã¶ã¼ã«ããããã¯ä¸ã«ãå¥ã®ã¦ã¼ã¶ã¼ãããã¯å¯¾è±¡ãèªã¿åããã¨ããã¨ãã«ã
ãããã¯åã®ã¹ãããã·ã§ãããè¦ããããã¨ã§ããããã¯ããã¦ãã¾ããã¨ãé²ãã¨ãããã®ã ã
ãã®ä»çµã¿ãçè§£ããã®ã«ã¯ã以ä¸ã®èª¬æãé常ã«ãããããã
æä»ããã¯ã«ãããã¯ãããªãèªã¿åãã®å®ç¾ãREAD_COMMITTED_SNAPSHOTãã¨ãã¹ãããã·ã§ããåé¢ã¬ãã«ã
ãREAD COMMITTED SNAPSHOTãã¨ãã¹ãããã·ã§ããåé¢ã¬ãã«ãã¯ãæä»ããã¯ã«ãããã¯ãããªãèªã¿åããå¯è½ã¨ãã SQL Server 2005 ããã®æ°æ©è½ã§ããããã«ããããã¼ãã« ã¹ãã£ã³ã«ããããã¯å¾ ã¡ãåé¿ã§ããããã«ãªãã¾ããå ·ä½çã«ã¯ã次ã®ãããªåä½ãå¯è½ã«ãªãã¾ãã
å é¨çã«ãã¼ãã« ã¹ãã£ã³ãçºçãã¦ããæä»ããã¯ã«ãããã¯ãããã«èªã¿åããå¯è½ã«ãªãã¾ãã
æ¡å¤§å³ãè¦ãREAD_COMMITTED_SNAPSHOT ã¹ãããã·ã§ããåé¢ã¬ãã«ã¯ãæ£ããã¯ãèªã¿åãä¸è²«æ§ããæä¾ããæ©è½ã§ããæä»ããã¯ã®ããã£ã¦ããæ´æ°ä¸ã®ãã¼ã¿ã¯ãã¾ã 確å®ãã¦ããªãæªã³ãããã®ãã¼ã¿ã§ããããããåç §ãããªãããã«ããæ´æ°åã®ãã¼ã¿ (ãã®æç¹ã§ã®æ£ãããã¼ã¿) ãåç §ããããã¨ã§ä¸è²«æ§ãä¿ã¡ã¾ãã
■SQL Server 2005 Tips and Tips 第 2 回 排他ロックにブロックされない読み取りの実現
Snapshotåé¢ã¬ãã«ã使ãããã«ãALLOW_SNAPSHOT_ISOLATIONããONã«è¨å®ããå¿
è¦ãããã
ALTER DATABASE MYDB SET ALLOW_SNAPSHOT_ISOLATION ON
ãã ãããã®ããã«è¨å®ããå ´åããã¹ã¦ã®ãã©ã³ã¶ã¯ã·ã§ã³å¦çã®éå§æã«
tempdbã«ã¹ãããã·ã§ãããåãããããããµã¤ãºã«ã¯æ°ãã¤ããªãã¦ã¯ãããªãã
ããããç¨ã®ã¯ã¨ãªãæµãã¦ã¿ãã
ããã¯ããå´
set transaction isolation level serializable; begin tran select * from MYDB.dbo.tbl update dbo.tbl set col1 = 'aa1' where col1 ='aaa';
èªã¿åãå´
set transaction isolation level snapshot begin tran select * from MYDB.dbo.tbl
çµæã®æ·»ä»ã¯ãé¢åãªã®ã§å²æãããã©ã
èªã¿åãå´ã®ã¯ã¨ãªã§ãããã¯åã®ãã¼ãã«ãèªã¿åããã
