분류없음2014.06.30 11:43

 

 

[설명]

   

SQL Server 2014에서는 Buffer Pool의 영역을 RAM 뿐만 아니라 디스크의 영역 까지 넓혔습니다.

해당 기능은 두 가지 정도의 이점을 얻을 수 있습니다.

  1. 기존 데이터를 가져오는 방식의 step을 줄일 수 있습니다.(메모리->디스크->메모리)
  2. Standard Edition의 경우에는 지원하는 Memory가 제한이 되어 있는 데, 이러한 부분에 대한 고민을 해소 시켜 줄수 있을 것입니다.

단, 주의 사항이 있습니다. 이러한 Buffer Pool을 SSD와 같이 I/O가 높은 디스크에 구성을 해주셔야 원하는 Buffer Pool 성능을 낼 수 있습니다. 그리고 이 기능을 적용 했다가, Disable을 할 경우에는 인스턴스를 재시작 해야하기 때문에 반드시 운영 환경을 고려하고 적용하길 권고 드립니다.

   

   

[구성]

   

--테스트를 위해, 메모리 적절하게 설정을 합니다.

EXEC sp_configure 'show advanced options', 1

reconfigure

   

EXEC sp_configure 'max server memory (MB)', 1024;

EXEC sp_configure 'min server memory (MB)', 1024;

GO

RECONFIGURE;

GO

   

   

--C:\ BPoolEx 폴더를 생성합니다.

   

--buffer pool Extension 적용합니다.

ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION

ON (FILENAME = 'C:\BPoolEx\BPEFILE.BPE', SIZE = 4 GB);

GO

 

 

 

--BPE 상태 확인

select * from sys.dm_os_buffer_pool_extension_configuration

   

   

--테스트 테이블 생성

SELECT * into dbo.FactResellerSales_BP FROM FactResellerSales WHERE 1=0 --테스트 테이블 생성

GO

   

--DMV 확인하면서, 테스트 데이터를 입력합니다.

INSERT INTO dbo.FactResellerSales_BP WITH(TABLOCK)

SELECT * FROM dbo.FactResellerSales

GO 20

   

   

-- sys.dm_os_buffer_descriptors 새로 추가된 컬럼으로 buffer pool Extension 있는 페이지를 확인할 있습니다.

select * from sys.dm_os_buffer_descriptors where is_in_bpool_extension = 1

   

   

--메모리를 다시 원상 복구 합니다.

EXEC sp_configure 'max server memory (MB)', 2048;

EXEC sp_configure 'min server memory (MB)', 2048;

GO

RECONFIGURE;

GO

   

   

[참고]

   

http://msdn.microsoft.com/en-us/library/dn133176.aspx

   

   

 

신고
Posted by TM ~ing
MS SQL2014.04.28 09:21

 

 

[내용]

   

최근 보안에 대한 이슈가 대두되고 있는 가운데, SQL Server 2014에서는 Backup Encryption 기능이 생겼습니다. 백업을 받을 때, 암호화를 통하여 백업 파일을 보호 할 수 있는 기능이 바로 Backup Encryption 기능입니다. 해당 기능에 대해 알아 보도록 하겠습니다.

   

   

[환경]

   

OS: Windows Server 2012 R2 Ent

Product: SQL Server 2014 RTM

   


[Test]

   

--master key 생성합니다.

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@ssw0rd';

   

--백업 암호화를 위한 인증서 생성합니다.

CREATE CERTIFICATE BackupEncryptCert

WITH SUBJECT = 'Backup Encryption Certificate';

GO

   

   

--테스트를 위한 데이터베이스를 생성합니다.

CREATE DATABASE EncTestDB

GO

   

USE EncTestDB

GO

   

CREATE TABLE t1 (id INT PRIMARY KEY IDENTITY, strA VARCHAR(1000))

GO

   

SET NOCOUNT ON

INSERT INTO t1 VALUES(REPLICATE('a', 1000))

GO 10000

   

   

-- 테스트 데이터베이스 정보를 확인 합니다.

sp_helpdb EncTestDB

go

   

   

--암호화 백업을 진행합니다.

BACKUP DATABASE EncTestDB

TO DISK = N'C:\Backup\EncTestDB_enc.bak'

WITH

ENCRYPTION

(ALGORITHM = AES_256, SERVER CERTIFICATE = BackupEncryptCert )

GO

   

   

   

--테스트 DB를 삭제합니다.

USE MASTER

GO

   

DROP DATABASE EncTestDB

GO

   

   

   

--인증서가 없는 경우 상황 재현을 위해서 미리 인증서 백업을 받습니다.

BACKUP CERTIFICATE BackupEncryptCert TO FILE = 'c:\BackupEncryptCert.cer'

WITH PRIVATE KEY (

FILE = 'c:\pk.key',

ENCRYPTION BY PASSWORD = 'Pa$$w0rd');

GO

   

--인증서 삭제

DROP CERTIFICATE BackupEncryptCert

GO

   

   

   

--데이터베이스 복원을 시도합니다.

RESTORE DATABASE EncTestDB FROM DISK = N'C:\Backup\EncTestDB_enc.bak'

GO

   

아래와 같이 인증서가 없기 때문에 실패 합니다.

   

   

--삭제한 인증서를 복원 합니다.

CREATE CERTIFICATE BackupEncryptCert

FROM FILE = 'C:\BackupEncryptCert.cer'

WITH PRIVATE KEY (

FILE = 'C:\pk.key'

, DECRYPTION BY PASSWORD = 'Pa$$w0rd'

)

GO

   

--이제 데이터베이스 복원을 시도합니다.

RESTORE DATABASE EncTestDB FROM DISK = N'C:\Backup\EncTestDB_enc.bak'

GO

   

아래와 같이 DB가 복원된 것을 확인할 수 있습니다.

   

   

[참고]

   

http://msdn.microsoft.com/ko-kr/library/dn449489(v=sql.120).aspx

   

   

신고
Posted by TM ~ing
MS SQL2014.04.24 09:20

 

 

[내용]

   

SQL Server 2012에서 부터 Columnstore 인덱스가 나오기 시작했습니다. 하지만 2012 버전에서는 Nonclustered Index만 지원을 했습니다. 2014 버전 부터는 Clustered Conlumnstore 인덱스를 지원하기 시작했습니다. 추가로, 2012에서는 데이터 변경이 불가능 했으나 2014부터는 데이터 변경이 가능하게 되었습니다. 그럼 Clustered Columnstore Index에 대해 좀 더 알아 보도록 하겠습니다.

   

   

[환경]

   

OS: Windows Server 2012 R2 Ent

Product: SQL Server 2014 RTM

   

   

[Test]

   

-- 데이터 베이스에 연결합니다.

USE AdventureWorksDW2012;

GO

   

--테스트용 테이블을 생성합니다.

SELECT *

INTO dbo.FactResellerSales_CCI

FROM dbo.FactResellerSales

GO

   

--인덱스 생성 전에 테이블 크기와 인덱스를 확인합니다.

exec sp_spaceused FactResellerSales_CCI

   

select * from sys.indexes where object_id = object_id('FactResellerSales_CCI')

   

--이제 Clustered Columnstore Index를 생성합니다.

CREATE CLUSTERED COLUMNSTORE INDEX CCI_FactResellerSales_CCI ON FactResellerSales_CCI

--인덱스 생성 후 테이블 크기와 인덱스를 확인합니다.

exec sp_spaceused FactResellerSales_CCI

   

select * from sys.indexes where object_id = object_id('FactResellerSales_CCI')

   

--테이블의 내용을 수정해 봅니다.

update FactResellerSales_CCI set UnitPrice = UnitPrice * 10

insert into FactResellerSales_CCI select top 1 * from FactResellerSales

   

--테스트 쿼리로 ColumnStoreindex를 잘 사용하는 확인해봅니다.

SELECT SalesTerritoryKey, SUM(ExtendedAmount) AS SalesByTerritory

FROM FactResellerSales_CCI

GROUP BY SalesTerritoryKey;

   

   

[참고]

   

http://msdn.microsoft.com/en-us/library/gg492088(v=sql.120).aspx

http://msdn.microsoft.com/en-us/library/gg492153(v=sql.120).aspx

 

 

신고
Posted by TM ~ing
MS SQL2014.04.22 10:30

 

   

[내용]

   

MSSQL Server 2014에서 가장 눈에 띄는 In-Memory OLTP라는 새로운 기능 외에도 다양한 기능들이 추가 되었습니다. 새롭게 등장한 기능들은 아래와 같이 있으며, 다음 글 부터 이러한 기능들을 사용하는 글을 블로깅 해보도록 하겠습니다.

   

   

[New Features]

   

   

   

[참고]

   

http://msdn.microsoft.com/en-us/library/bb510411(v=sql.120).aspx

   

신고
Posted by TM ~ing