SQL Server 2016 향상된 In Memory 테이블

 

  • Version : SQL Server 2016

 

SQL Server 2016에서 향상된 In Memory 테이블 기능에 대해서 살펴본다. 현재 버전은 CTP2 (13.0.200)이다.

 

Feature/Limit

SQL Server 2014

SQL Server 2016

Maximum size of durable table

256 GB

2 TB

LOB (varbinary(max), [n]varchar(max))

Not supported

Supported*

Transparent Data Encryption (TDE)

Not supported

Supported

Offline Checkpoint Threads

1

1 per container

ALTER PROCEDURE / sp_recompile

Not supported

Supported (fully online)

Nested native procedure calls

Not supported

Supported

Natively-compiled scalar UDFs

Not supported

Supported

ALTER TABLE

Not supported

(DROP / re-CREATE)

Partially supported

(offline – details below)

DML triggers

Not supported

Partially supported

(AFTER, natively compiled)

Indexes on NULLable columns

Not supported

Supported

Non-BIN2 collations in index key columns

Not supported

Supported

Non-Latin codepages for [var]char columns

Not supported

Supported

Non-BIN2 comparison / sorting in native modules

Not supported

Supported

Foreign Keys

Not supported

Supported

Check/Unique Constraints

Not supported

Supported

Parallelism

Not supported

Supported

OUTER JOIN, OR, NOT, UNION [ALL], DISTINCT, EXISTS, IN

Not supported

Supported

Multiple Active Result Sets (MARS)

(Means better Entity Framework support.)

Not supported

Supported

SSMS Table Designer

Not supported

Supported

 

 

ALTER TABLE은 오프라인 작업으로 컬럼, 인덱스, 제약조건을 추가/삭제를 지원한다. (리빌드 작업의 경우 2배의 메모리가 필요하다.)

ALTER TABLE dbo.InMemoryTable

    ALTER INDEX IX_NC_Hash

    REBUILD WITH (BUCKET_COUNT = 1048576);

 

용량 및 기능 향상 외에 성능 향상도 있다. 예를 들면 디스크 기반 또는 메모리 테이블 기반의 업데이트, 넌클러스터 컬럼스토어 인덱스 추가 등이 있다. 그리고 행을 삭제하는 프로세스도 단순화 했다. (SQL 2014에서는 File Stream 사용, SQL 2016에서는 이 단계를 스킵했다.) 또한 마이그레이션 어드바이저와 BPA(Best Practices Analyzer)가 개선되었다.

 

이러한 변경 사항중 제한사항이 몇가지 있다. TDE를 예를 들면 데이터베이스를 업그레이드할 때 추가 단계가 필요하다.

 

[참고자료]

http://sqlperformance.com/2015/05/sql-server-2016/in-memory-oltp-enhancements

 

2015-06-22 / 강성욱 / http://sqlmvp.kr

 

 

 

SQL Server 2016, SQL 2016, MSSQL, SQLSERVER, 데이터베이스, Microsoft DB, In Memory Table, SQL Memory Table

백업 확장이벤트로 백업 진행 과정과 소요되는 시간 확인

 

  • Version : SQL Server 2016

 

SQL Server 2016에서 추가된 새로운 확장 이벤트 sqlserver.backup_restore_progress_trace

를 사용하여 백업과정과 각 과정에서 소요되는 시간을 확인할 수 있다.

 

실습을 위해 확장이벤트를 생성한다.

CREATE EVENT SESSION [Backup progress] ON SERVER

ADD EVENT sqlserver.backup_restore_progress_trace

(

ACTION(package0.event_sequence)

 

-- to only capture backup operations:

--WHERE [operation_type] = 0

 

-- to only capture restore operations:

--WHERE [operation_type] = 1

)

ADD TARGET package0.event_file

(

SET filename = N'C:\SQL_Backup\BackupProgress.xel'

); -- default options are probably ok

GO

 

ALTER EVENT SESSION [Backup progress] ON SERVER STATE = START;

GO

 

데이터베이스를 생성하고 데이터를 입력한다.

create database SW_Test

go

 

SELECT s1.* INTO SW_Test.dbo.what

FROM sys.all_objects AS s1

CROSS JOIN sys.all_objects;

GO

 

백업과 복원을 실행한다.

BACKUP DATABASE SW_Test TO DISK = 'c:\SQL_Backup\SW_Test.bak'

WITH INIT, COMPRESSION, STATS = 30;

GO

 

DROP DATABASE SW_Test;

GO

 

RESTORE DATABASE SW_Test FROM DISK = 'c:\SQL_Backup\SW_Test.bak'

WITH REPLACE, RECOVERY;

 

 

수집된 데이터를 조회한다. Duration 단위는 밀리세컨드이다.

;WITH x AS

(

SELECT ts,op,db,msg,es

FROM

(

SELECT

ts = x.value(N'(event/@timestamp)[1]', N'datetime2'),

op = x.value(N'(event/data[@name="operation_type"]/text)[1]', N'nvarchar(32)'),

db = x.value(N'(event/data[@name="database_name"])[1]', N'nvarchar(128)'),

msg = x.value(N'(event/data[@name="trace_message"])[1]', N'nvarchar(max)'),

es = x.value(N'(event/action[@name="event_sequence"])[1]', N'int')

FROM

(

SELECT x = CONVERT(XML, event_data)

FROM sys.fn_xe_file_target_read_file

(N'c:\SQL_Backup\BackupProgress*.xel', NULL, NULL, NULL)

) AS y

) AS x

WHERE op = N'Backup' -- N'Restore'

AND db = N'SW_Test'

AND ts > CONVERT(DATE, SYSDATETIME())

)

SELECT x.db, x.op, x.ts,

[Message] = x.msg,

Duration = COALESCE(DATEDIFF(MILLISECOND, x.ts,

LEAD(x.ts, 1) OVER(ORDER BY es)),0)

FROM x

ORDER BY es;

 

 

 

[참고자료]

http://sqlperformance.com/2015/06/extended-events/t-sql-tuesday-67-backup-restore

 

 

2015-06-16 / 강성욱 / http://sqlmvp.kr

 

Sqlserver 2016, mssql, sqlserver, DBA, Backup, 백업, 데이터베이스 백업, 확장이벤트, XEvent, sqlserver.backup_restore_progress_trace, 백업소요시간, SQL Backup

SQL Server 2016 설치

 

  • Version : SQL Server 2016

 

SQL Server 2016 버전이 정식 출시는 아니지만 프리뷰 버전이 공개되어 미리 설치하여보았다. 전체적인 설치 방법은 이전 SQL 버전과 거의 동일하다. 이전 버전과 설치에서 차이점은 [기능규칙] 검사에서 Oracle JRE 7 업데이트가 필요하다. 그러니 미리 Oracle JRE 7 업데이트 51 이상 설치 한다.

  • SQL Server 2016 Download

http://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016

  • Oracle JRE 7 Download

http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

 

설치 과정은 각 과정마다 스크린샷으로 알아본다. 다운로드 받은 SQL Server 2016 이미지 파일을 마운트 하고 실행한다. [설치]를 클릭한다.

 

 

[설치] 탭에서 [새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가]를 선택한다.

 

 

제품키 입력에서는 평가판을 사용중이므로 무료버전을 선택하고 다음을 클릭한다.

 

 

사용조건에 동의함을 선택한다. (필수) 두 번째 체크박스는 선택을 하지 않아도 된다.(선택사항) 두 번째 체크박스의 내용은 제품 설치과정에서 발생하는 정보를 Microsoft에 제공하겠다는 내용이다.

 

 

제품 설치전 업데이트 항목이 있는지 미리 검사해주는 항목이다. 굳이 선택을 하지 않아도 된다.

 

 

다운로드 받은 업데이트가 있는지 확인하고 설치하는 과정이 진행된다. 이전 단계에서 제품 업데이트를 받은 내역이 없으면 건너뜀으로 표시되고 설치 과정이 진행된다.

 

 

설치 규칙에서는 설치 과정에서 발생할 수 있는 잠재적인 문제를 식별한다. 실패 항목이 있으면 해당 내역을 확인 후 수정 후 다시 실행을 한다.

 

 

설치역할에서는 SQL Server 기능 설치를 선택 한다. 첫 번째 항목을 선택하면 다음 단계에서 필요한 서비스만 사용자가 선택하여 설치 할 수 있으며 두 번째 항목을 선택하면 기본적인 내용이 모두 자동으로 설치 된다.

 

 

기능선택에서 사용자에게 필요한 항목만 설치한다. 화면에서는 학습을 위한 목적으로 모두 선택하여 설치하였다.

 

 

이번 버전의 설치에 없었던 Oracle JRE 7 업데이트가 필요하다는 경고가 발생한다. 아래 주소에서 OS에 맞는 JRE를 다운로드하여 설치한다.

  • Oracle JRE 7 Download

http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

 

설치가 완료 되었으면 [다시 실행]을 선택하여 규칙검사를 완료한다.

 

 

SQL Server가 설치되어 있지 않은 PC라면 기본 인스턴스(MSSQLSERVER)를 사용하면 된다. 현재의 경우 SQL Server가 이미 설치되어 있어 동일한 이름으로 인스턴스를 설치할 수 없어 SQL2016 이라는 인스턴스 이름을 명명하였다.

 

 

서비스 계정과 시작유형을 확인한다. 특별히 수정할 내용 없이 [다음]을 클릭하여 진행 한다.

 

 

인증의 경우 Windows 인증 모드와 혼합 인증모드가 있는데 Windows 인증모드의 경우 SQL 계정으로는 접근이 불가능하다. 혼합 모드를 선택하여 SQL 계정으로도 접근할 수 있도록 한다. 현재 사용자를 추가하여 Windows 계정도 접근할 수 있도록 한다.

 

 

기능 선택에서 Analysis Services를 선택하였다면 AS 구성과정이 진행된다. 서버모드에 따라 기존의 큐브 형식의 다차원 및 데이터 마이닝모드, 테이블 형식 모드, PowerPivot 모드 3가지가 있다. SQL Server 2014에는 존재하지 않는 PowerPivot 모드가 추가되었다.

 

 

기능 선택에서 Report Services를 선택하였다면 RS 구성과정이 진행된다. 설치 및 구성을 선택하고 다음을 클릭한다.

 

 

Distribute Replay Controller 기능은 SQL Server 프로파일러와 마찬가지로 Distributed Replay를 사용하여 캡처된 추적을 업그레이드된 테스트 환경에 대해 재생할 수 있다.

 

 

컨트롤러의 이름 및 작업 디렉터리를 설정 한다. 기본값 그대로 사용 가능하다.

 

 

설정이 완료되면 설치 준비에 대한 요약 보고서와 함께 설치를 시작 할 수 있다. [설치] 버튼을 클릭하여 설치를 진행 한다

 

 

 

 

제품 설치가 완료 되면 설치결과에 대해 알려준다.

 

 

설치가 완료되고 SQL Server 2016 메뉴가 등록된 것을 확인 할 수 있다.

 

 

SQL Server 2016를 실행한 모습이다.

 

 

SSMS에서 데이터베이스 엔진의 버전을 확인해 보자. SQL Server 2016는 13버전으로 등록된 것을 확인할 수 있다.

 

 

2015-06-11 / 강성욱 / http://sqlmvp.kr

 

SQL Server 2016, SQL 2016, MSSQL, SQLSERVER, 데이터베이스, Microsoft DB, SQL 설치, DB설치, 데이터베이스 설치

+ Recent posts