메모리 내 OLTP(메모리 내 최적화)
SQL Server 2014(12.x)의 새로운 In-Memory OLTP는 OLTP 데이터베이스 애플리케이션 성능을 크게 향상시킬 수 있습니다. In-Memory OLTP는 OLTP에 최적화된 SQL Server 엔진에 통합된 메모리 최적화 데이터베이스 엔진입니다.
SQL Server 2016을 사용해 보시겠나요? Microsoft Azure에 등록한 다음 여기로 이동하여 SQL Server 2016이 이미 설치된 Virtual Machine을 스핀업합니다. 완료되면 Virtual Machine을 삭제할 수 있습니다. |
In-Memory OLTP를 사용하려면 액세스가 많은 테이블을 메모리 최적화로 정의합니다. 메모리 최적화 테이블은 완전 트랜잭션, 지속성 및 디스크 기반 테이블과 동일한 방식으로 Transact-SQL을 사용하여 액세스됩니다. 쿼리는 메모리 최적화 테이블 및 디스크 기반 테이블을 모두 참조할 수 있습니다. 트랜잭션은 메모리 최적화 테이블 및 디스크 기반 테이블에서 데이터를 업데이트할 수 있습니다. 메모리 최적화 테이블만 참조하는 저장 프로시저는 성능 향상을 위해 기계어 코드에 고유하게 컴파일될 수 있습니다. In-Memory OLTP 엔진은 확장성이 높은 중간 계층에서 구동되는 OLTP 유형의 트랜잭션에 대해 매우 높은 세션 동시성을 위해 설계되었습니다. 이를 위해서 래치가 설정되지 않은 데이터 구조와 낙관적인 여러 버전의 동시성 제어를 사용합니다. 따라서 결과는 예측 가능하며, 지연 시간은 밀리초 미만으로 짧고, 처리량은 많으며 데이터베이스 트랜잭션을 위해 직선형으로 확장됩니다. 실제 성능 향상은 많은 요인에 따라 달라지지만 일반적으로 성능이 5 - 20배 향상됩니다.
다음 표에는 In-Memory OLTP를 사용하여 가장 많은 이점을 얻을 수 있는 워크로드 패턴이 요약되어 있습니다.
구현 시나리오 | 구현 시나리오 | In-Memory OLTP의 이점 |
---|---|---|
다중 동시 연결을 위한 높은 데이터 삽입률 | 기본적으로 방식만을 사용하는 저장소 삽입 작업을 처리할 수 없음 |
경합 제거 로깅 감소 |
성능을 읽고 정기적인 일괄 삽입 및 업데이트로 확장 | 많은 성능 읽기 작업, 특히 각 서버가 다중 읽기 작업을 수행하도록 요청하는 경우 확장 요구 사항을 충족할 수 없음 |
새로운 데이터 유입 시 경합 제거 데이터 검색 대기 시간 단축 코드 실행 시간 최소화 |
데이터베이스 서버의 집중적인 비즈니스 논리 처리 | 삽입, 업데이트 및 삭제 작업 저장 프로시저 내 계산 집중적인 작업 읽기 및 쓰기 경합 |
경합 제거 코드 실행 시간을 최소화하여 대기 시간 단축 및 처리량 향상 |
짧은 대기 시간 | 일반적인 데이터베이스 솔루션으로 구현할 수 없는 짧은 대기 시간 비즈니스 트랜잭션 필요 | 경합 제거 코드 실행 시간 최소화 코드 실행 대기 시간 단축 효율적인 데이터 검색 |
세션 상태 관리 | 삽입, 업데이트 및 지점 검색을 자주 수행 수많은 상태 비저장 웹 서버의 대규모 부하 |
경합 제거 효율적인 데이터 검색 내구성 없는 테이블을 사용할 경우 옵션 IO 절감 또는 제거 |
In-Memory OLTP로 인해 성능이 가장 큰 시나리오에 대한 자세한 내용은 메모리 내 OLTP - 일반적인 워크로드 패턴 및 마이그레이션 고려 사항을 참조하세요.
메모리 내 OLTP는 단기 실행 트랜잭션의 OLTP 성능을 최대로 높입니다.
OLTP를 In-Memory 개선될 프로그래밍 패턴에는 동시성 시나리오, 지점 조회, 많은 삽입 및 업데이트가 있는 워크로드, 저장 프로시저의 비즈니스 논리가 포함됩니다.
SQL Server 통합하면 메모리 최적화 테이블과 디스크 기반 테이블이 동일한 데이터베이스에 둘 다 있고 두 유형의 테이블에서 쿼리할 수 있습니다.
SQL Server 2014(12.x)에는 In-Memory OLTP에 지원되는 Transact-SQL 노출 영역에는 제한이 있습니다.
In-Memory OLTP는 다음을 사용하여 상당한 성능 및 확장성 향상을 달성합니다.
메모리 상주 데이터에 액세스할 수 있도록 최적화된 알고리즘
논리적 잠금을 제거하는 낙관적 동시성 제어.
모든 실제 잠금 및 래치를 제거하는 잠금 없는 개체. 트랜잭션 작업을 수행하는 스레드는 동시성 제어에 잠금 또는 래치를 사용하지 않습니다.
메모리 최적화 테이블에 액세스할 때 해석된 저장 프로시저보다 성능이 크게 향상된 기본적으로 컴파일된 저장 프로시저
중요
메모리 내 OLTP를 사용하려면 일부 구문을 테이블과 저장 프로시저로 변경해야 합니다. 자세한 내용은 메모리 내 OLTP로 마이그레이션을 참조하세요. 디스크 기반 테이블을 메모리 최적화 테이블로 마이그레이션하기 전에 테이블 또는 저장 프로시저를 In-Memory OLTP로 이식해야 하는지 여부를 확인하여 OLTP를 In-Memory 통해 어떤 테이블과 저장 프로시저를 활용할 수 있는지 확인합니다.
섹션 내용
이 섹션에서는 다음과 같은 개념에 대해 설명합니다.
항목 | Description |
---|---|
메모리 액세스에 최적화된 테이블 사용을 위한 요구 사항 | 하드웨어 및 소프트웨어 요구 사항과 메모리 최적화 테이블의 사용 지침에 대해 설명합니다. |
VM 환경에서 메모리 내 OLTP 사용 | 가상화된 환경에서 메모리 내 OLTP를 사용하는 방법에 대해 설명합니다. |
메모리 내 OLTP 코드 예제 | 메모리 최적화 테이블을 만들고 사용하는 방법을 보여 주는 코드 예제가 포함되어 있습니다. |
메모리 최적화 테이블 | 메모리 최적화 테이블을 소개합니다. |
메모리 액세스에 최적화된 테이블 변수 | 기존의 테이블 변수 대신 메모리 최적화 테이블 변수를 사용하여 tempdb 사용을 줄이는 방법을 보여주는 코드 예제입니다. |
메모리 액세스에 최적화된 테이블의 인덱스 | 메모리 최적화 인덱스를 소개합니다. |
고유하게 컴파일된 저장 프로시저 | 고유하게 컴파일된 저장 프로시저를 소개합니다. |
메모리 내 OLTP의 메모리 관리 | 시스템의 메모리 사용을 이해하고 관리하는 방법에 대해 설명합니다. |
메모리 최적화 개체에 대한 스토리지 만들기 및 관리 | 메모리 최적화 테이블의 트랜잭션에 대한 정보를 저장하는 데이터 및 델타 파일에 대해 설명합니다. |
메모리 액세스에 최적화된 테이블의 백업, 복원 및 복구 | 메모리 최적화 테이블의 백업, 복원 및 복구를 논의합니다. |
메모리 내 OLTP에 대한 Transact-SQL 지원 | In-Memory OLTP에 대한 Transact-SQL 지원에 대해 설명합니다. |
메모리 내 OLTP 데이터베이스에 대한 고가용성 지원 | In-Memory OLTP의 가용성 그룹 및 장애 조치(failover) 클러스터링 대해 설명합니다. |
메모리 내 OLTP에 대한 SQL Server 지원 | 메모리 최적화 테이블을 지원하는 새 구문/기능과 업데이트된 구문/기능을 나열합니다. |
메모리 내 OLTP로 마이그레이션 | 디스크 기반 테이블을 메모리 최적화 테이블로 마이그레이션하는 방법에 대해 설명합니다. |
메모리 내 OLTP에 대한 자세한 내용은 다음 위치에서도 찾아볼 수 있습니다.