In-Memory 최적화 파일 경로 변경
- Version : SQL Server 2014, 2016
SQL Server 2014이상에서는 인 메모리 OLTP 기능과 메모리 최적화 테이블을 만들 수 있다.
- In-Memory OLTP (In-Memory Optimization)
https://msdn.microsoft.com/en-us/library/Dn133186(v=SQL.120).aspx
이 기능을 사용하면 SQL Server는 실제로 성능을 최적화하는 네이티브 코드를 생성한다. 그 결과 DLL, PDB 파일과 중간 파일이 생성된다.
메모리 최적화는 각 저장 프로시저 또는 테이블이 별도로 파일이 생성될 수 있도록 설정을 해야 한다. 일반적인 상황의 경우 기본 경로를 사용하므로 사용자가 설정하지 않아도 된다. 하지만 해당 경로에 대한 디스크 공간이 부족할 때 경로를 변경해주어야 한다.
다음 오류는 메모리 최적화를 사용한 경로의 디스크 공간 부족 오류이다.
"Msg 41322, Level 16, State 13, Line 0 MAT/PIT export/import encountered a failure for memory optimized table or natively compiled stored procedure with object ID 214291823 in database ID 6. The error code was 0x80030070". |
0x80030070은 ERROR_DISK_FULL로 디스크 공간 부족에 대한 시스템 오류이다. 이 원인은 메모리 최적화된 오브젝트(테이블 및 저장 프로시저)를 많이 가지고 있어 파일이 많이 생성되어 발생한 것이다.
메모리 최적화 파일은 서버 인스턴스에 대한 데이터베이스 파일의 기본 위치에 저장된다.
로드된 네이티브 DLL을 조회하는 방법으로는 sys.dm_os_loaded_modules을 사용할 수 있다.
이러한 파일은 다음의 조건일 때 삭제되고 다시 생성된다.
- SQL Server 재시작
- 데이터베이스 Offline/Online
- 테이블 삭제 후 재생성 또는 프로시저 삭제 후 재생성
디스크 공간이 부족하여 최적화 파일을 재배치 해야 한다면 모든 기본 데이터 파일 위치를 변경하여 해결할 수 있다. SSMS에서 서버 속성에서 변경할 수 있다.
해당 설정 변경 후에는 SQL Server를 재시작해야 적용되며 인메모리 관련 파일을 새로운 경로에 생성됨을 확인할 수 있다.
[참고자료]
강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp