해석된 Transact-SQL을 사용하여 메모리 액세스에 최적화된 테이블에 액세스

적용 대상: SQL Server Azure SQL Database Not supported. Azure Synapse Analytics Not supported. Analytics Platform System(PDW)

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

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

SQL Server 2016(13.x)부터 해석된 Transact-SQL의 쿼리는 직렬 모드가 아닌 메모리 최적화 테이블을 병렬로 검색할 수 있습니다.

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

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

  • 임시 쿼리 및 관리 태스크

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

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

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

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

영역 지원되지 않음
테이블에 대한 액세스 TRUNCATE TABLE

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

동적 및 키 집합 커서(자동으로 정적 커서로 강등됨)

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

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

데이터베이스 간 트랜잭션

연결된 서버

테이블 힌트

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

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

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = 정수

XLOCK

NOWAIT

READPAST

TABLOCK

해석된 Transact-SQL을 사용하여 명시적 또는 암시적 트랜잭션에서 메모리 최적화 테이블에 액세스하는 경우 다음 중 하나 이상을 수행해야 합니다.

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

참고 항목

메모리 내 OLTP에 대한 Transact-SQL 지원

메모리 내 OLTP로 마이그레이션