분류 전체보기 1385

작업 관리자에서 디스크 성능 정보 표시하기

작업 관리자에서 디스크 성능 정보 표시하기 Windows Server 2012, 2012 R2 Windows Server 2012, 2012 R2 작업 관리자를 실행하였을 때 디스크 정보가 보이지 않는 경우가 있다. 작업 관리자에서 디스크 정보를 표시하기 위해서는 커맨드 명령 또는 파워쉘을 이용하여 간단한 명령으로 디스크 정보를 나타내도록 수정할 수 있다. Diskperf -Y 커맨드 명령을 완료하고 작업 관리자를 다시 실행해 보면 디스크 정보가 표시되는 것을 확인할 수 있다. 2016-02-02 / 강성욱 / http://sqlmvp.kr 작업 관리자, 디스크 정보, Diskperf, Task Manager, Disk Performance, Windows, Windows 2012, Windows Cou..

시스템 관리자 권한이 없는 특정 프로그램에서 Trace Flag 사용하기

시스템 관리자 권한이 없는 특정 프로그램에서 Trace Flag 사용하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 관리자 권한이 없는 계정을 사용하는 특정 어플리케이션이 실행될 때 예약된 추적 플래그를 실행하는 방법에 대해서 알아본다. 유사한 케이스로 프로파일러 사용법도 있다. 비관리자 계정으로 프로파일러 사용하기 : http://sqlmvp.kr/220322107960 시나리오는 다음과 같다. 특정 시스템에 추적 플래그를 설정 해야 한다. 하지만 서버에 추적 플래그를 설정하게 되면 다른 어플리케이션에 영향이 있다. 따라서 해당 어플리케이션이 실행될 때 추적플래그를 실행하고 싶다. 그런데 해당 어플리케이션을 사용하는 계정은 관리자 권한이 없다..

In-Memory OLTP 환경에서 체크포인트 작업과 디스크 부족 경고

In-Memory OLTP 환경에서 체크포인트 작업과 디스크 부족 경고 Version : SQL Server 2014, 2016 SQL Server 2014 버전부터 제공되는 인메모리 OLTP 기능을 사용하는 동안에도 여전히 충돌이나 재시작시 복구 시간을 줄일수 있는 방법이 필요하다. 디스크기반의 테이블 경우 체크포인트가 발생할때 디스크에 기록되지 않은 더티페이지가 디스크에 기록(플러시) 된다. 인메모리 OLTP의 경우에도 별도의 체크포인트 파일 세트가 있으며 체크포인트 파일은 MEMORY_OPTIMIZED_DATA 파일 그룹을 생성할 때 지정한 디렉토리에 생성된다. 인메모리 테이블에서 체크포인트시 디스크가 부족할 경우 데이터베이스는 온라인 상태로 유지되지만 아래와 같은 오류메시지가 나타난다. 2015-..

DeadLock(교착상태) 모니터 하기

DeadLock(교착상태) 모니터 하기 DeadLock(교착상태)? 한 태스크에서 잠근 리소스를 다른 태스크에서 잠그려고 하여 둘 이상의 태스크가 서로 영구적으로 차단하는 현상. (서로 맞물린 상태의 차단) 순환 교착(cycle DeadLock) : 서로 다른 개체를 차단할 때 발생 변환 교착(Conversion DeadLock) : 같은 대상에 대해 둘 이상의 세션이 동시에 잠금을 변경하려고 할 때 발생 교착 상태를 일으킬 수 있는 리소스 잠금 : 개체, 페이지, 행, 메타데이터, 응용 프로그램 등의 리소스에 대한 잠금을 획득하려고 대기 하는 경우. 작업자 스레드 : 사용 가능한 작업자 스레드를 대기하는 태스크가 교착 상태를 일으킬 수 있음.대기 태스크가 모든 작업자 스레드를 차단하는 리소스를 소유하는..

Spool 연산자와 추적 플래그 8690

Spool 연산자와 추적 플래그 8690 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 쿼리 실행계획을 확인하다 보면 스풀(spool) 연산자(인덱스 스풀 또는 테이블 스풀)를 볼 수 있다. 스풀 연산자는 중간 결과를 저장하기 때문에 SQL의 다시 스캔 하거나, 또는 반복 사용을 위해 다시 계산할 필요가 없도록하여 쿼리 성능을 개선하는데 도움이 된다. 스풀 테이블은 tempdb 데이터베이스 저장되어 쿼리 사용 기간 중에만 존재한다. 예를 들어 Nested Loops 연산자로 연산자를 다시 수행하지만 다시 바인딩할 필요가 없을 경우 입력 사항을 다시 검색하는 대신 스풀된 데이터를 사용한다. 스풀 실행 계획은 아래 그림과 같은 아이콘으로 표시 된다. ..

파일로 저장되어 있는 데이터를 테이블로 Bulk Insert 하기

파일로 저장되어 있는 데이터를 테이블로 Bulk Insert 하기 Version : Mariadb 5.5.4.2-WinX64 MySQL / MariaDB에서 파일로 저장되어 있는 데이터를 Bulk Insert를 사용하여 빠르게 테이블로 저장하는 방법에 대해서 알아본다. Bulk Insret를 사용하기 위해서는 테이블 스키마와 데이터의 스키마가 동일해야한다. 기본적인 Bulk Insert 문법은 아래와 같다. LOAD DATA INFILE 'file_name' INTO TABLE table_name 실습을 통해 실제 데이터가 저장되어 있는 파일에서 MariaDB 테이블로 데이터를 Bulk Insert 하는 방법을 살펴본다. 현재 데이터가 저장되어 있는 파일은 C:\SQL_Data\BCPTest.txt 파일..

MySQL, MariaDB 2015.12.21

.NET 4.6.1에 변경된 Multisubnet 기본 수신기 동작

.NET 4.6.1에 변경된 Multisubnet 기본 수신기 동작 Version : SQL Server 2012, 2014, 2016 SQL Server에서 AlwaysOn을 구성하여 사용할 때 리스너는 여러 개의 IP 주소를 감지하여 가용성 그룹에 정의되어 있는 IP주소에 연결을 시도하는데 간헐적으로 연결시간 초과가 발생할 수 있다. SQL 클라이언트의 기본 동작은 DNS에서 반환된 모든 IP 주소에 연결을 시도하는데 DNS 구성에 의존하기 때문에 몇 가지 문제가 발생할 수 있다. 가장 빈번하게 발생하는 문제가 정확하지 않은 IP 반환 또는 온라인되어 있지 않은 IP 반환이다. 기본적으로 TCP 연결 시도에 대한 기본 제한시간은 21초이며 IP 주소가 온라인 상태가 아닌 경우 다음 IP를 시도하기까지..

SQL Server 2014 온라인 인덱스 리빌드와 잠금 우선순위 옵션

SQL Server 2014 온라인 인덱스 리빌드와 잠금 우선순위 옵션 Version : SQL Server 2014 SQL Server에서 인덱스를 다시 작성하면 인덱스가 삭제된 다음 다시 생성된다. 인덱스가 생성되는 과정에서 조각화가 제거되고 지정된 채우기 비율 또는 기존 채우기 비율 설정을 기준으로 페이지를 압축하여 디스크 공간을 회수하고 인덱스 행을 연속된 페이지로 다시 정렬할 수 있다. 익스텐트가 128개 이상인 인덱스를 다시 작성하면 데이터베이스 엔진에서 실제 페이지 할당 취소와 해당 관련 잠금이 트랜잭션 커밋후까지 지연된다. 인덱스의 크기가 작은 경우에는 혼합 익스텐트에 저장되기 때문에 리빌드 후에도 조각화가 줄어들지 않는 경우가 있다. ALTER INDEX : https://msdn.mic..

함수 통계 정보 확인 (sys.dm_exec_function_stats)

함수 통계 정보 확인 (sys.dm_exec_function_stats) Version : SQL Server 2016 SQL Server에서 쿼리를 사용할 때 함수를 사용하는 경우가 있다. 함수를 사용할 때 함수에 대한 성능을 확인하기 위해서 일반적으로 함수의 개별문을 실행하였다. 이번 포스트에서는 SQL Server 2016에서 새롭게 제공된 sys.dm_exec_function_stats DMV를 사용하여 함수에 대한 통계 정보를 확인해 본다. sys.dm_exec_function_stats는 모든 스칼라 함수 및 인메모리, CLR 스칼라 함수에 대한 통계 정보를 제공한다. 이 기능은 모든 스칼라 함수에 대한 캐시된 실행 계획을 반환한다. 인모메리 기능의 통계를 볼 때 논리적 물리적 IO에대한 칼럼..

NULL 데이터가 포함된 데이터 사용 시 주의점

NULL 데이터가 포함된 데이터 사용 시 주의점 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 SQL Server에서 NULL은 0 값도 아니며 공백도 아닌 그냥 빈 값이다. 데이터를 조회할 때 NULL 값이 포함된 경우 사용자가 원하는 값이 조회되지 않을 수 있다. NULL이 포함된 데이터 조회시 어떻게 값이 다르게 표현되는지 알아본다. 실습에 사용된 옵션은 시스템 기본값인 SET ANSI_NULLS ON 상태이다. 아래 스크립트는 두 개의 테이블을 생성하여 #TestTableB 테이블에만 NULL값이 포함된 데이터를 입력 한다. --Creating the first temporary table for testing IF(OBJECT_ID('te..