해석된 Transact-SQL을 사용하여 메모리 액세스에 최적화된 테이블에 액세스
적용 대상: SQL Server Azure SQL Database Azure Synapse Analytics 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을 사용하여 명시적 또는 암시적 트랜잭션에서 메모리 최적화 테이블에 액세스하는 경우 다음 중 하나 이상을 수행해야 합니다.
SNAPSHOT, REPEATABLEREAD 또는 SERIALIZABLE과 같은 격리 수준 테이블 힌트를 지정합니다.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT 데이터베이스 옵션을 ON으로 설정합니다.
자동 커밋 모드에서 실행되는 쿼리에서 액세스하는 메모리 최적화 테이블에는 격리 수준 테이블 힌트가 필요하지 않습니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기