SQL Server 2016 16

QPI(Query Performance Insights) 라이브러리를 사용하여 Azure SQL Managed Instance의 로그쓰기 사용량 확인

QPI(Query Performance Insights) 라이브러리를 사용하여 Azure SQL Managed Instance의 로그쓰기 사용량 확인 · Version : Azure SQL Azure SQL Managed Instance는 Azure 클라우드에서 호스팅되는 완전히 관리되는 SQL Server 인스턴스이다. 관리형 인스턴스에는 최대 로그쓰기 처리량 성능에 일부 제한이 있어 워크로드 속도가 느려질 수 있다. 이번 포스트에서는 관리형 인스턴스에서 쓰기 로그 처리량 문제를 식별하는 방법에 대해서 살펴본다. Azure SQL Managed Instance에는 최대 로그 쓰기 속도와 같은 몇 가지 기본 제공 리소스 제한이 있다. 로그 쓰기 제한을 도입한 이유는 로그 백업이 들어오는 데이터를 포착할 ..

SQL Server 2016 JSON 형식을 일반 ROW 형식으로 반환하기

SQL Server 2016 JSON 형식을 일반 ROW 형식으로 반환하기 · Version : SQL Server 2016 SQL Server 2016 부터 지원되는 JSON 형식은 쿼리 결과를 JSON 형식으로 반환 할 수 있으며 JSON 형식의 데이터를 일반 ROW로 데이터를 반환할 수도 있다. 이번 포스트에서는 JSON 형식의 데이터를 일반 ROW형식으로 반환하는 방법에 대해서 알아본다. JSON 형식의 텍스트를 구문 분석하여 일반 ROW 형식으로 데이터를 반환하는 함수는 OPENJSON 이다. OPENJSON 함수를 사용하여 JSON 컬렉션을 행 집합으로 변환한 후 데이터에 대해서 SQL 쿼리를 실행하거나 SQL Server 테이블에 삽입할 수 있다. OPEN JSON 함수는 단일 JSON 개체..

In-Memory OLTP 사용시 메모리 할당량 초과 오류

In-Memory OLTP 사용시 메모리 할당량 초과 오류 · Version : SQL Server 2014, 2016 SQL Server 에서 In-Memory OLTP를 사용하는 환경에서 아래와 같은 오류가 에러로그에 기록되어 있다면 현재 적용되어 있는 In-Memory 용량을 초과한 것이다. [INFO] HkDatabaseTryAcquireUserMemory(): Database ID: [7]. Out of user memory quota: requested = 131200; available = 74641; quota = 34359738368; operation = 1. 오류 로그에 기록된 내용은 아래와 같다.· requested = 131200 : 요청된 바이트 수· available = 746..

Multisubnet환경의 AG 그룹에서 링크드 서버 사용시 주의점

Multisubnet환경의 AG 그룹에서 링크드 서버 사용시 주의점 · Version : SQL Server 2012, 2014, 2016 SQL Server 2012부터 도입된 가용성 그룹(AG)은 SQL Server에서 제공할 수 있는 최고의 가용성을 보장하지만 구성이 까다로울 수 있다. 특히 다중 서브넷 환경에서 장애 조치를 구성하는 경우 예상치 못한 문제를 많이 겪을 수 있다. 필자 또한 단일 서브넷에서의 AG 경험은 있었지만 다중 서브넷 환경에서 구성 및 운영은 처음이어서 (Cloud VM으로 다중 서브넷(Multi Region구성) 다양한 이슈를 겪고 있다.(기술적 이슈는 아님) 이번 이슈는 Multisubnet AG구성을 구성한 환경에서 링크드 서버를 구성할때, Native Client를 사..

메모리 최적화 테이블 변수 및 예상 행수

메모리 최적화 테이블 변수 및 예상 행수 · Version : SQL Server 2014, 2016 이번 포스팅에서 메모리 최적화 테이블은 배치 작업이 완료될 때 까지 메모리를 소비한다고 하였다.· 메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류) : http://sqlmvp.kr/220996905075 이번 포트스트는 메모리 최적화 테이블에서 예상 행수에 대해서 알아본다. 기본적으로 메모리 최적화 테이블 변수는 디스크 기반 테이블 변수와 동일한 방식으로 작동한다. 아래 스크립트를 실행하면 예상 행수가 1로 나타나는것을 확인할 수 있다. 실습용 데이터 베이스 및 기본 데이터 생성 create database IMOLTP go ALTER DATABASE imoltp AD..

In-Memory OLTP를 사용할 때 체크포인트 파일이 너무 많아 지는 이유

In-Memory OLTP를 사용할 때 체크포인트 파일이 너무 많아 지는 이유 · Version : SQL Server 2014, 2016 SQL Server에서 로그 백업은 매우 중요하다. 로그 백업을 수행하지 않으면 로그 증가와 체크포인트 파일 증가가 발생할 수 있다. 트랜잭션 로그 아키텍처에 관해서는 아래 링크를 참고 한다.· 트랜잭션 로그 논리 아키텍처 - http://sqlmvp.kr/140187294218· 트랜잭션 로그 물리 아키텍처 - http://sqlmvp.kr/140187358202· LDF 파일이 잘리지 않는 이유 - http://sqlmvp.kr/140194327713· 이번 케이스는 하나의 In-Memory 최적화 테이블이 있는 데이터베이스를 복원 후 해당 테이블을 삭제하였다. ..

메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류)

메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류) · Version : SQL Server 2014, 2016 메모리 최적화 테이블 변수에서 루프를 사용할 때 아래와 같은 메모리 부족 오류가 발생할 수 있다. 왜 이런 오류가 발생하는 것일까? Msg 701, Level 17, State 103, Line 11 There is insufficient system memory in resource pool ‘default’ to run this query. 이 오류는 메모리 최적화 테이블에서 의도된 디자인으로 발생한 오류이다. 메모리 액세스에 최적화된 테이블 변수에 관한 문서를 찾아보면 다음과 같은 설명이 있다. (https://technet.microsoft.com/ko-..

메모리 최적화 테이블에서 해시 인덱스 사용시 버킷 카운트의 중요성

메모리 최적화 테이블에서 해시 인덱스 사용시 버킷 카운트의 중요성 · Version : SQL Server 2014, 2016 SQL Server Memory optimized table(이하 메모리 최적화 테이블)은 기본적으로 메인 메모리에 상주한다. 메모리 최적화 테이블의 데이터는은 메모리에 상주하며 읽고 쓴다. 내구성의 목적으로 보조 복사본이 디스크에서 유지 관리 된다. 메모리 액세스에 최적화된 테이블의 데이터는 데이터베이스 복구중(또는 서버 재시작)에만 디스크에서 읽는다. 아래 스크립트는 메모리 최적화 테이블을 생성한다. CREATE TYPE [Sales].[SalesOrderDetailType_inmem] AS TABLE( [OrderQty] [smallint] NOT NULL, [Product..

SQL Server 2016 DBCC CHECK 작업 성능 향상

SQL Server 2016 DBCC CHECK 작업 성능 향상 Version : SQL Server 2016 대부분의 SQL Server (MULTI_OBJECT_SCANNER* base) 환경에서 DBCC CHECKS* (checkdb, checktable,…) 검사를 실행하는 동안 대기(wait)를 경험하게 된다. 내부적으로 DBCC CHECKS*를 실행하면 페이지 스캔 코디네이터 디자인(MultiObjectScanner)을 사용한다. SQL Server 2016 버전부터는 DBCC 작업시 이전보다 훨씬 더 확장 할 수 있도록 내부설계를 인모메리 최적화(Hekaton) 객체에 사용되는 것과 유사한 락(lock) 디자인을 적용하여 작업 성능을 향상 시켰다. 다음 차트는 동일한 1TB 데이터베이스의 테..

SSRS 2016 향상된 구독(Subscription) 기능

SSRS 2016 향상된 구독(Subscription) 기능 Version : SSRS 2016 SQL Server 2016 Reporting Service에서 몇 가지 향상된 기능이 추가 되었다. 그 중 구독(Subscription) 기능에 대해서 향상된 부분을 알아본다. [구독의 활성 및 비활성] SSRS를 운용할 때 일시적으로 특정 레포트의 구독을 중지 해야하는 경우가 발생한다. SSRS 2016에서는 다음과 같이 구독을 선택하고 활성 및 비활성 할 수 있다. 구독을 선택하고 비활성화 할 경우 Status 항목에 Disabled 라고 표시되며 녹색 동그라미 부분이 비활성 상태로 표시 된다. 구독을 활성활 할 경우 Status는 Ready 상태로 표시된다. [구독 소유자 변경] SSRS 2016에서 ..