스냅 샷 격리 란 무엇입니까?
스냅 샷 격리는 트랜잭션 처리 및 데이터베이스의 속성으로 트랜잭션에서 작성된 모든 읽기가 동일한 데이터베이스 "스냅 샷"을 볼 수 있도록합니다. 즉, 업데이트가 다른 동시 업데이트와 충돌하지 않으면 트랜잭션이 요청을 성공적으로 처리하기 위해 커밋합니다. 스냅 샷 격리는 동시성에서 일반적으로 발생하는 문제를 피하는 격리 수준을 제공하는 다중 버전 동시성에 대한 제어 알고리즘입니다. 이러한 격리는 최소한의 직렬화 이상으로 작동하는 여러 가지 다른 SQL (Structured Query Language) 서버에 의해 구현되었습니다. 그러나 스냅 샷 격리는 서버에서 완전한 직렬화 기능을 보장하지 않습니다.
많은 주요 데이터 관리 시스템에는 직렬화 할 수없는 기본 격리 수준이 포함되어 있으며 스냅 샷 격리없이 직렬화 이상이 발생할 수 있습니다. 이로 인해 매일 큰 시스템에 많은 수의 격리 오류가 발생하여 데이터가 손상 될 수 있으며, 특히 데이터의웨어 하우스 응용 프로그램에서 발견 될 수 있습니다. 시스템이이 상태에서 작동하는 이유는 더 낮은 격리 수준에서 실행되는 응용 프로그램이 심각한 오류가 발생하지 않으면 효율성을 향상시킬 수 있기 때문입니다. 시스템에 스냅 샷 격리를 포함하면 이러한 이상 현상이 줄어들고 작업 시간과 발생하는 오류 양을 고려할 때 효율성이 더욱 높아집니다.
일부 데이터베이스는 전체 직렬화와 달리 스냅 샷 격리를 제공하지만 이러한 유형의 격리를 사용하여 데이터베이스 내에서 발생할 수있는 예외가 있습니다. 일관성을 유지하는 트랜잭션이 인터리브되거나 교번 계층으로 배열되므로 이러한 예외로 인해 데이터 일관성 위반이 발생할 수 있습니다. 문제를 해결하고 이와 같은 이상을 방지하는 한 가지 방법은 인공 잠금 및 충돌 업데이트를 도입하여 모든 트랜잭션 쌍 간의 충돌을 분석하여 응용 프로그램을 조작하는 것입니다. 그러나 이러한 이상을 해결하는 다른 방법은 데이터베이스 시스템의 동시성 제어 알고리즘을 수정하여 런타임시 스냅 샷 격리의 이상을 자동으로 감지하고 예방하는 것입니다. 중요하거나 임의의 응용 프로그램에 대해 수행 할 수 있지만 직렬화 가능한 격리를 제공합니다.
최신 SQL Server는 특정 응용 프로그램의 동시성을 향상시키기 위해 새로운 수준의 격리와 새로운 수준의 스냅 숏 격리를 도입 할 수있었습니다. 초기 버전의 SQL Server가 동시성을위한 기초로 잠금을 사용한 경우 스냅 샷 격리는 성능 향상을위한 행 버전 관리의 향상에 따라 달라집니다. 읽기 또는 쓰기 차단이있는 시나리오가 발생하지 않는 경우이 성능을 향상시킵니다.