SET ALLOW_SNAPSHOT_ISOLATION ON
인 SQL Server 2008 데이터베이스와 열 ID (기본 키) 및 SSN (클러스터되지 않은 고유 인덱스)이있는 개인 테이블이 있습니다.SQL Server에서 스냅 숏 격리가 켜져있을 때 클러스터 된 인덱스는 어떻게 업데이트됩니까?
데이터베이스의 행 중 하나는 ID = 1, SSN = 776-56-4453입니다.
는 하나 개의 연결이 발생 하나 :
set transaction isolation level snapshot
begin transaction snapshot
while (1 = 1) select * from person where SSN = '777-77-7777'
을 그리고 또 다른 연결 :
예상대로update person set SSN = '555-55-5555' where ID = 1
는, 첫 번째 연결도 '777-77-7777'로 SSN을 계속 표시 두 번째 연결이 실행을 마친 후에 첫 번째 연결에 대한 실행 계획에는 SSN에서 'clustered index seek'이 표시되지만 다른 연결에서 인덱스 키가 업데이트 된 경우 어떻게 첫 번째 연결에서 인덱스를 계속 사용할 수 있습니까?
SQL 서버는 여러 버전의 색인을 유지하기 위해 특별한 조치를 취합니까?
스냅 샷 격리 수준의 성능 특성을 이해하려고하므로 SQL Server가 행의 이전 버전에서 부실 데이터를 검색 할 때도 기존 인덱스를 사용할 정도로 똑똑하다는 것을 확인하고자합니다.
스냅 샷 격리를 사용하면 SQL Server가 수정되는 데이터의 '스냅 샷'을 'tempDB'에 넣고 다른 연결은 거기에서 읽을 것입니다. 첫 번째 연결은 'tempDB'에서 스냅 샷 복사본과 관련된 값과 모든 관련 인덱스를 읽는 것입니다. –