다음을 통해 공유


해석된 Transact-SQL 사용하여 Memory-Optimized 테이블에 액세스

몇 가지 예외를 제외하고 Transact-SQL 쿼리 또는 DML 작업(SELECT, INSERT, UPDATE 또는 DELETE), 임시 일괄 처리 및 저장 프로시저, 테이블 값 함수, 트리거 및 뷰와 같은 SQL 모듈을 사용하여 메모리 최적화 테이블에 액세스할 수 있습니다.

해석된 Transact-SQL 고유하게 컴파일된 저장 프로시저 이외의 Transact-SQL 일괄 처리 또는 저장 프로시저를 나타냅니다. 메모리 최적화 테이블에 대한 해석된 Transact-SQL 액세스를 interop 액세스라고 합니다.

메모리 최적화 테이블은 고유하게 컴파일된 저장 프로시저를 사용하여 액세스할 수도 있습니다. 성능에 중요한 OLTP 작업에는 고유하게 컴파일된 저장 프로시저를 사용하는 것이 좋습니다.

해석된 Transact-SQL 액세스는 다음 시나리오에 권장됩니다.

  • 임시 쿼리 및 관리 작업.

  • 보고 쿼리는 일반적으로 고유하게 컴파일된 저장 프로시저(예: 창 함수)에서 사용할 수 없는 구문을 사용합니다.

  • 애플리케이션 코드 변경을 최소화(또는 아니요)하여 애플리케이션의 성능에 중요한 부분을 메모리 최적화 테이블로 마이그레이션합니다. 테이블 마이그레이션에서 성능이 향상될 수 있습니다. 그런 다음 저장 프로시저를 고유하게 컴파일된 저장 프로시저로 마이그레이션하는 경우 추가 성능이 향상될 수 있습니다.

  • 고유하게 컴파일된 저장 프로시저에 Transact-SQL 문을 사용할 수 없는 경우

다음 Transact-SQL 구문은 메모리 최적화 테이블의 데이터에 액세스하는 해석된 Transact-SQL 저장 프로시저에서 지원되지 않습니다.

지역 지원되지 않음
테이블에 대한 액세스 테이블 비우기

MERGE(메모리 최적화 테이블을 대상으로)

동적 및 키 집합 커서(자동으로 정적으로 저하됨).

컨텍스트 연결을 사용하여 CLR 모듈에서 액세스합니다.

인덱싱된 뷰에서 메모리 최적화 테이블을 참조합니다.
데이터베이스 간 데이터베이스 간 쿼리

데이터베이스 간 트랜잭션

연결된 서버

테이블 힌트

테이블 힌트에 대한 자세한 내용은 다음을 참조하세요. 테이블 힌트(Transact-SQL). In-Memory OLTP를 지원하기 위해 SNAPSHOT 격리가 추가되었습니다.

다음 표 힌트는 해석된 Transact-SQL을 사용하여 메모리 최적화 테이블에 액세스할 때 지원되지 않습니다.

홀드록 제약조건_무시하기 트리거 무시 NOWAIT
PAGLOCK READCOMMITTED (읽기 전용 커밋) READCOMMITTEDLOCK 리드패스트
READUNCOMMITTED (읽지 않은 커밋) ROWLOCK SPATIAL_WINDOW_MAX_CELLS = 정수 TABLOCK
TABLOCKXX UPDLOCK XLOCK

명시적 또는 암시적 트랜잭션에서 해석된 Transact-SQL를 사용하여 메모리 최적화 테이블에 액세스할 때는 반드시 격리 수준 테이블 힌트인 SNAPSHOT, REPEATABLEREAD 또는 SERIALIZABLE을 포함하거나 MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT을 사용할 수 있습니다. 자세한 내용은 Memory-Optimized 테이블 및 ALTER DATABASE SET 옵션(Transact-SQL)을 사용하여 트랜잭션 격리 수준에 대한 지침을 참조하세요.

비고

자동 커밋 모드에서 실행되는 쿼리에서 액세스하는 메모리 최적화 테이블에는 격리 수준 테이블 힌트가 필요하지 않습니다.

또한 참조하십시오

메모리 내 OLTP에 대한 Transact-SQL 지원
메모리 내 OLTP로 마이그레이션