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



출처: https://sqlmvp.tistory.com/1256?category=618825 [Database Lab]
No. Subject Author Date Views
Notice [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 125
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 25
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
2143 SQL Server 2016 대용량 데이터 로드시 최소 로깅(minimal logging) 과Batch Size jevida(강성욱) 2019.03.25 359
2142 SQL Server 설치시 발생하는 1638 오류 jevida(강성욱) 2019.03.25 550
2141 SQL Server 666코드의 고유 식별자 오류 jevida(강성욱) 2019.03.25 323
2140 SQL Server AlwaysOn synchronous-commit 환경에서 동기화 레이턴시 트러블슈팅 jevida(강성욱) 2019.03.25 384
2139 SQL Server Scheduling and Yielding 트러블슈팅 jevida(강성욱) 2019.03.25 393
2138 SQL Server 2016 Tempdb 경합(contention) 최적화 jevida(강성욱) 2019.03.25 500
2137 XEvent를 사용하여 Auto tuning 작업 모니터링 jevida(강성욱) 2019.03.25 511
» SQL Server In-Memory OLTP에 ASP.NET 세션 상태 저장하기 jevida(강성욱) 2019.03.25 397
2135 SQL Server에서 JSON 데이터 저장하기 jevida(강성욱) 2019.03.25 506
2134 Azure SQL에서 네트워크를 구성하는 방법 jevida(강성욱) 2019.03.25 260
2133 SQL Server 네이티브 컴파일된 저장 프로시저 성능 모니터링 jevida(강성욱) 2019.03.25 500
2132 SQL Server 2017 소규모 시스템에서 향상된 리소스 사용 jevida(강성욱) 2019.03.25 288
2131 클러스터 컬럼스토어 인덱스(Clusterd Columnstore Index)에서 대량 인서트 작업시 발생하는 래치 경합 최소화 트릭 jevida(강성욱) 2019.03.25 438
2130 클러스터 컬럼스토어 인덱스(Clusterd Columnstore Index)에서 대량 인서트 작업시 발생하는 래치 경합 최소화 트릭 jevida(강성욱) 2019.03.25 421
2129 SQL Server 2016 향상된 복제 기능 – 배포 데이터베이스 클린업 향상 jevida(강성욱) 2019.03.25 319
2128 SQL Server 2017향상된 복제 기능 – 배포 데이터베이스의 AG 지원 jevida(강성욱) 2019.03.25 479
2127 SQL Server 2017 향상된 복제 기능 - 복제에이전트 프로필 매개변수의 동적 새로 고침 jevida(강성욱) 2019.03.25 521
2126 SQL Server update on Docker jevida(강성욱) 2019.03.25 413
2125 SQL Server 2017에서 향상된 UDF 실행 계획 jevida(강성욱) 2019.03.25 384
2124 ETL data error with MariaDB ODBC 3.0 (from Aurora to MS SQL) jevida(강성욱) 2019.03.25 540





XE Login

테스트 팝업
Close