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의 성능 향상이 가장 큰 시나리오에 대한 자세한 내용은 In-Memory OLTP - 일반적인 워크로드 패턴 및 마이그레이션 고려 사항을 참조하세요.
In-Memory OLTP는 짧은 실행 트랜잭션을 사용하여 OLTP의 성능을 가장 향상시킵니다.
OLTP를 In-Memory 향상되는 프로그래밍 패턴에는 동시성 시나리오, 지점 조회, 삽입 및 업데이트가 많은 워크로드 및 저장 프로시저의 비즈니스 논리가 포함됩니다.
SQL Server와 통합하면 메모리 최적화 테이블과 디스크 기반 테이블이 모두 동일한 데이터베이스에 있고 두 유형의 테이블에서 쿼리할 수 있습니다.
SQL Server 2014(12.x)에는 In-Memory OLTP에 대해 지원되는 Transact-SQL 노출 영역에 제한이 있습니다.
In-Memory OLTP는 다음을 사용하여 상당한 성능 및 확장성 향상을 달성합니다.
메모리 상주 데이터에 액세스하는 데 최적화된 알고리즘입니다.
논리적 잠금을 제거하는 낙관적 동시성 제어입니다.
모든 물리적 잠금 및 래치를 제거하는 잠금 해제 개체입니다. 트랜잭션 작업을 수행하는 스레드는 동시성 제어에 잠금 또는 래치를 사용하지 않습니다.
메모리 최적화 테이블에 액세스할 때 해석된 저장 프로시저보다 성능이 훨씬 뛰어난 고유하게 컴파일된 저장 프로시저입니다.
중요합니다
In-Memory OLTP를 사용하려면 테이블 및 저장 프로시저에 대한 일부 구문 변경이 필요합니다. 자세한 내용은 In-Memory OLTP로 마이그레이션을 참조하세요. 디스크 기반 테이블을 메모리 최적화 테이블로 마이그레이션하기 전에 테이블 또는 저장 프로시저가 In-Memory OLTP로 이식되어야 하는지 결정하기를 읽고 In-Memory OLTP가 어떤 테이블과 저장 프로시저에 이점을 줄 수 있는지 확인하십시오.
이 부분에서는
이 섹션에서는 다음 개념에 대한 정보를 제공합니다.
| 주제 | 설명 |
|---|---|
| 메모리 액세스에 최적화된 테이블 사용을 위한 요구 사항 | 메모리 최적화 테이블을 사용하기 위한 하드웨어 및 소프트웨어 요구 사항 및 지침에 대해 설명합니다. |
| VM 환경에서 In-Memory OLTP 사용 | 가상화된 환경에서 In-Memory OLTP 사용을 다룹니다. |
| OLTP 코드 샘플In-Memory | 메모리 최적화 테이블을 만들고 사용하는 방법을 보여 주는 코드 샘플을 포함합니다. |
| 메모리 최적화 테이블 | 메모리 최적화 테이블을 소개합니다. |
| Memory-Optimized 테이블 변수 | 기존 테이블 변수 대신 메모리 최적화 테이블 변수를 사용하여 tempdb 사용을 줄이는 방법을 보여 주는 코드 예제입니다. |
| Memory-Optimized 테이블의 인덱스 | 메모리 최적화 인덱스를 소개합니다. |
| 고유하게 컴파일된 저장 프로시저 | 고유하게 컴파일된 저장 프로시저를 소개합니다. |
| 메모리 내 OLTP에 대한 메모리 관리 | 시스템의 메모리 사용량 이해 및 관리 |
| 메모리 최적화 개체에 대한 스토리지 생성 및 관리 | 메모리 최적화 테이블에 트랜잭션에 대한 정보를 저장하는 데이터 및 델타 파일에 대해 설명합니다. |
| 메모리 최적화 테이블의 백업, 복원 및 복구 | 메모리 최적화 테이블의 백업, 복원 및 복구에 대해 설명합니다. |
| 메모리 내 OLTP에 대한 Transact-SQL 지원 | In-Memory OLTP에 대한 Transact-SQL 지원에 대해 설명합니다. |
| In-Memory OLTP 데이터베이스에 대한 고가용성 지원 | In-Memory OLTP의 가용성 그룹 및 장애 조치(failover) 클러스터링에 대해 설명합니다. |
| In-Memory OLTP에 대한 SQL Server 지원 | 메모리 최적화 테이블을 지원하는 새로운 및 업데이트된 구문 및 기능을 나열합니다. |
| 메모리 내 OLTP로 마이그레이션 | 디스크 기반 테이블을 메모리 최적화 테이블로 마이그레이션하는 방법에 대해 설명합니다. |
In-Memory OLTP에 대한 자세한 내용은 다음에서 확인할 수 있습니다.