ms sql 50

SQL Server Statistics Update row sampling rate and histogram step

SQL Server Statistics Update row sampling rate and histogram step - 통계 업데이트 행 샘플링 비율과 히스토그램 단계 · Version : SQL Server SQL Server에서 통계(statistics)정보는 데이터를 조회할때 검색 조건에 따라 옵티마이저가 해당 컬럼으로 구성되는 인덱스를 사용할지 여부를 결정하는 중요한 참고 정보이다. 통계는 데이터가 있는 컬럼에 대해 인덱스가 만들어질 때 이 컬럼값의 히스토그램 및 관련정보를 이용해서 만들어 진다. · SQL Server Statistics : http://sqlmvp.kr/140165557766 통계에 대한 샘플링 비율이 높을 수록 통계 정보의 신뢰도는 높아진다. 그렇다면 통계에 대한 행 샘플링..

SSMS – AlwaysOn Group Latency report

SSMS – AlwaysOn Group Latency report · Version : SQL Server 2014 SP2 later, SSMS 17.4 later SQL Server에서 AlwaysOn가용성에 대한 Latency 분석을 하려면 XEvent(확장이벤트) 및 Performance Counter(성능 모니터)를 사용하여 데이터를 캡처하고 분석하는 과정이 필요했다. 이러한 작업은 설정에 많은 시간이 소요되었을 뿐만 아니라 XEvent에 대한 광범위한 지식이 필요하였다. SQL Server의 관리도구인 SQL Server Management Studio (SSMS) 17.4 버전 부터는AlwaysOn 가용성 그룹에 대한 Latency 대시보드 기능이 추가되었다. 이 대시보드에서는 데이터베이스 관..

model Database 손상시 발생하는 영향 및 복구 방법

model Database 손상시 발생하는 영향 및 복구 방법 · Version : SQL Server SQL Server에서 사용되는 system database에는 master, model, msdb, temp 4가지가 있다. master 경우 SQL Server에 대한 속성 정보를 가지고 있기 때문에 중요성에 대해서 많은 사람들이 인지하고 있다. 이번 시간에는 model 데이터베이스의 중요성에 대해서 알아보고 model 데이터베이스가 손상되었을때 어떤 영향이 있는지, 그리고 복구 방법에 대해서 알아본다. model 데이터베이스는 SQL Server 인스턴스에서 생성된 모든 사용자 데이터베이스의 템플릿으로 사용된다. 새로운 데이터베이스를 생성하면 데이터베이스 옵션을 포함하여 model 데이터베이스 전..

SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계

SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계 · Version : SQL Server 2014 SP2, 2016 SQL Server 2016에서 쿼리 성능 문제를 해결할 때 참고 할 수 있는 몇 가지 정보가 추가 되었다. 그 중 대표적인 것이 라이브 쿼리 통계 이다.· SQL Server 2016 라이브 쿼리 통계 : http://sqlmvp.kr/220453033961 하지만 아직도 많은 쿼리 성능 문제를 해결하기 위한 메트릭은 부족한 편이다. 이번에 소개하는 기능은 showplan XML을 활성화하고 쿼리를 실행하였을때 각 스레드(오퍼레이터)에서 실행한 결과를 확인할 수 있는 기능이다. 예를 들어 SQL Server2014까지는 쿼리 실행결과 행결과를 반환하지만 스..

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를 사..

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가 논리 및 물리 프로세서를 결정하는 방법

SQL Server가 논리 및 물리 프로세서를 결정하는 방법 Version : SQL Server SQL Server는 하드웨어 레이아웃 정보를 바탕으로 NUMA 노드를 구성한다. SQL Server 2016 부터는 레이아웃 정보를 바탕으로 자동으로 NUMA 노드를 구성을 한다.· SQL Server 2016 Automatic Soft NUMA : http://sqlmvp.kr/220806805474그렇다면 SQL Server가 Native(bare metal) 또는 VM 환경과 같이 가상화 환경에서 구성된다면 어떻게 노드를 구성할까. 이 과정의 핵심은getlogicalprocessorinformation (windows API) API이며 논리적으로는 bare metal과 VM 기반이 동일하다. VM(..

SQL Server 2016 향상된 업데이트 스케줄링 알고리즘

SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 Version : SQL Server 2016, Azure SQL Server SQL Server 2016에서는 업데이트 스케줄링에 대한 알고리즘이 향상되었다. 기존에는 큰 CPU 퀀텀 작업자(Large CPU Quantum)와 작은 작업자(Short CPU Quantum) 사이에서 스케줄링에 의해 자원 액세스에 대한 불균형이 발생할 수 있었다. 이 테스트는 SQL Server 2012 및 2014에서 백분위(percentile) 스케줄링 기반의 알고리즘에서 발견되었다. 다음 예제를 보면 작업자1(W1)은 읽기 및 인메모리 데이터베이스 페이지의 미리 읽기 등의 큰 작업을 하고 작업자2(W2)는 짧은 작업을 한다. 예를 들어 작업자1은 버퍼풀에..