SQL Server/SQL Server Tip

SQL Server In-Memory OLTP에 ASP.NET 세션 상태 저장하기

SungWookKang 2019. 3. 25. 05:28
반응형

SQL Server In-Memory OLTP ASP.NET 세션 상태 저장하기

 

·         Version : SQL Server, ASP.NET

 

SQL Server In-Memory OLTP ASP.NET 세션 상태를 저장하는 방법에 대해서 알아본다. ASP.NET 에서 세션 상태를 사용하면 사용자가 응용 프로그램을 구성하는 다른 ASP.NET 페이지를 탐색할때, 사용자 값을 저장하고 검색할 있다. 현재 ASP.NET에는 Microsoft ASP.NET 세션 상태  모듈과 세션 상태 데이터 원본 간의 인터페이스를 제공하는 가지 세션 공급자가 있다.

·         InProcSesstionStateStore  : ASP.NET 작업자 프로세스의 메모리에서 세션 상태를 저장

·         OutOfProcSesstionSaateStore : 외부 서버 프로세스의 메모리에 세션 상태를 저장

·         SqlSessionStateStore : Microsoft SQL Server 데이터베이스에 세션 상태를 저장

 

이번 포스트에서는 SqlSesstionStateStore 공급자를 다루며 세션 데이터 저장소 옵션으로 SQL Server In-Memory OLTP 사용하도록 구성하는 방법에 대해서 살펴 본다. SqlSesstionStateStore 구성하기 위해서는  최신의 ASP.NET Async 버전의 Session State provider사용 하거나 이전 버전의 공급자 환경에서 사용할 있도록 Github 저장소에서 In-Memory OLTP SQL 다운로드하여 script 구성할 있다.

 

[최신의 ASP.NET async SQL Session State provider]

Microsoft ASP.NET 팀은 SQL Server 세션데이터 저장소로 사용할 있도록  비동기를 지원하는 SqlSessionState provider 출시 했다. 버전의 공급자에는 기본적으로 재시도 로직이 추가되어 제공되며, In-Memory OLTP 일반적인 Disk 테이블을 지원한다. 아래 단계에 따라 공급자를 설치하고 SQL Server In-Memory OLTP 사용하도록 구성할 있다.

1.       Nuget에서 최신 Microsoft ASP.NET Async SqlSessionState Provider 설치한다. 프로젝트의 .NET framework 4.6.2 이상 버전 이어야 한다.

 

2.       프로젝트의 Web.config 파일에서 SqlSessionStateProviderAsync 요소에 다음 특성을 추가하여 In-Memory OLTP 사용하고 재시도 횟수와 재시도 간격(ms) 설정한다.

·         UseInMemoryTable : In-Memory OLPT 경우 값을 true 설정하고 디스크 기반의 테이블 경우 false 설정한다.

·         RetryInterval : 재시도 간격 시간(ms) 설정한다.

 

3.       세션 상태를 저장하는데 사용중인 SQL Server 데이터베이스에 대해 다음 T-SQL명령을 실행하여 데이터베이스 격리 수준을 스냅숏으로 설정한다.

ALTER DATABASE CURRENT SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;

 

참고로 UseInMemoryTable, ReteryInterval MaxRetryNumber 특성값을 설정하지않은 경우 공급자는 RetryInterval MaxRetryNumber 기본값을 아래 값으로 설정한다.

SQL Server Option

ReteryInterval (ms)

MaxRetryNumber

In-Memory OLTP

1

10

Disk based table

1000

10

 

 

[이전 버전의 ASP.NET Session State provider 사용]

최신 버전의 SqlSessionStateStore 공급자로 업그레이드 없는 경우 아래 단계를 수행하여 In-Memory OLTP 사용하도록 이번 버전의 ASP.NET 세션 상태 공급자를 구성 있다.

1.       Github에서 aspstate_sql2016(no retry logic : https://github.com/Microsoft/sql-server-samples/blob/master/samples/applications/aspnet-session-state/aspstate_sql2016_with_retry.sql) 또는 aspnet_sql2016(with retry login : https://github.com/Microsoft/sql-server-samples/blob/master/samples/applications/aspnet-session-state/aspstate_sql2016_with_retry.sql) 하나를 다운로드하여 실행 한다.

 

2.       프로젝트의 .NET framework 버전을 4.5 이상으로 설정한다.

 

3.       Web.config에서 sql 세션 상태 공급자를 사용하도록 수정한다.

·         Mode : SQL Server 설정하여 세션 상태가 SQL Server 저장되었음을 나타낸다.

·         SQL Server 대한 연결 문자열을 지정하도록 SqlConnectionString 설정한다.

 

 

 

[참고자료]

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/11/28/asp-net-session-state-with-sql-server-in-memory-oltp/

 

 

 

 

2018-06-18 / Sungwook Kang / http://sqlmvp.kr

 

SQL Server, ASP.NET, In-Memory OLPT, Session State, SqlSessionStateProviderAsync, SqlSesstionStateStore, 세션 상태 저장, MS SQL


반응형