분류 전체보기 1385

페이지 ID로 테이블 이름 찾기

페이지 ID로 테이블 이름 찾기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 손상된 페이지가 있을 때 어느 테이블의 손상인지 확인 하는 방법에 대해서 알아본다. 손상된 페이지가 있을 경우 일반적으로 DBCC CHECKDB를 실행하지만 데이터베이스가 TB 단위인 경우에는 이 문제를 파악하기 위해 몇 시간이 걸릴지도 모르는 일이다. 또 다른 확인 방법으로는 PAGELATCH_EX 대기를 보고 sys.dm_os_waiting_tasks 의 resource_description 정보를 이용하여 테이블 이름을 알아 낼 수도 있다. suspect_pages 테이블의 데이터를 이용하여 테이블 이름을 확인해 보자. Suspect_page 테이블은 SQL Server 20..

DBCC CHECKPRIMARYFILE 사용법

DBCC CHECKPRIMARYFILE 사용법 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 현재 생성되어 있는 데이터베이스의 파일정보를 확인하는 방법에는 SSMS를 활용한 방법과 쿼리로 확인하는 방법이 있다. SSMS의 UI를 사용하는 경우 데이터베이스 수 만큼 클릭하여 확인해야 하는 반복적인 노동 작업이다. 문서화 되지 않은 DBCC CHECKPRIMARYFILE 명령을 이용하면 파일의 메타 정보(디스크 경로, 데이터베이스 이름)를 쉽게 확인 할 수 있다. 비록 문서화 되어 있지 않은 명령어 이지만 위험성이 없는 작업이므로 걱정하지 않아도 된다. [기본 구문] Syntax:DBCC CHECKPRIMARYFILE ({'PhysicalFileName'} [,..

컬럼스토어 인덱스 대용량 데이터 로드

컬럼스토어 인덱스 대용량 데이터 로드 Column Store Index Bulk Load Data Version : SQL Server 2012, 2014 클러스터 컬럼 스토어 인덱스 대용량 데이터 로드 이전 포스팅에서 컬럼스토어 인덱스에 대한 동시성 및 인서트 동시성에 대해서 살펴 보았다. 컬럼스토이 인덱스 ROW와 ROWGROUP 영향 : http://sqlmvp.kr/220122469205 컬럼스토어 인덱스 동시성 : http://sqlmvp.kr/220130069090 컬럼스토어 인덱스 INSERT 작업과 동시성 : http://sqlmvp.kr/220132145097 이번 포스트는 대용량 데이터 로드(Bulk load)를 통해 데이터가 삽입될 때 잠금 동작에 대해서 설명한다. 테스트용 기본 테이..

컬럼스토어 인덱스 INSERT 작업과 동시성

컬럼스토어 인덱스 INSERT 작업과 동시성 Column Store Index Concurrency with INSERT Version : SQL Server 2012, 2014 클러스터 컬럼 스토어 INSERT 이전 블로그에 설명한 바와 같이 클러스터된 컬럼스토어 인덱스는 DW 시나리오에서 빠른 쿼리 성능으로 데이터로드에 최적화 되어 있다. 대량의 인서트 작업에서도 DW 쿼리는 커밋되지 않은 읽기(Read Uncommitted) 격리 수준에서 병렬로 데이터를 로드 할 수 있다. 컬럼스토어 인덱스 동시성 : http://sqlmvp.kr/220130069090 데이터가 동시에 인서트 될 때 잠금 동작에 대해서 알아 본다. Version : SQL Server 2014 CREATE TABLE [dbo].[..

컬럼스토어 인덱스 동시성

컬럼스토어 인덱스 동시성 Column Store Index Concurrency and Isolation Levels Version : SQL Server 2012, 2014 클러스터 컬럼 스토어와 동시성 클러스터 컬럼스토어 인덱스(Clustered column index(CCI))는 기본적으로 데이터웨어하우스 시나리오에 기반하여 디자인 되어 있다. 한 번 쓰고 여러 번 읽기 : CCI는 쿼리 성능에 최적화 되어 있다. 이는 기둥 형식으로 압축된 데이터에서 필요한 컬럼만 가져와서 성능을 높인다. 대량 데이터 가져오기 및 세류(천천히) 데이터 로드 : 인서트 오퍼레이션 INSERT / UPDATE를 지원하지만 이러한 작업은 대량의 작업에 최적화 되어 있지 않다. 사실 동시성 경우 DELETE / UPDAT..

컬럼스토어 인덱스 ROW와 ROWGROUP 영향

컬럼스토어 인덱스 ROW와 ROWGROUP 영향 Version : SQL Server 2012, 2014 SQL Server 메모리 내 Columnstore 인덱스는 열 기반 데이터 저장소 및 열 기반 쿼리 처리를 사용하여 데이터를 저장하고 관리한다. Columnstore 인덱스는 주로 대량 로드 및 읽기 전용 쿼리를 수행하는 데이터웨어 하우징 작업에 효과적이다. columnstore index는 columnstore라는 칼럼 데이터 형식을 사용하여 데이터를 저장, 검색 및 관리하는 기술이다. SQL Server는 클러스터형 columnstore 인덱스와 비클러스터형 columnstore 인덱스를 모두 지원한다. 둘 다 동일한 메모리 내 columnstore 기술을 사용하지만 용도와 지원 기능에 차이가 ..

테이블 변수와 TF 2453

테이블 변수와 TF 2453 Version : SQL Server 2005, 2008, 2008R2, 2012 테이블변수에 데이터를 삽입하면 카디널리티는 항상 1 이다. 행이 적을 경우에는 큰 문제가 되지 않지만 행이 많을 경우에는 쿼리 계획을 효율적으로 생성하지 못하여 쿼리 성능이 저하될 수 있다. dbcc traceoff(2453,-1) go dbcc freeproccache go set statistics profile off go use tempdb go if OBJECT_ID ('t2') is not null drop table t2 go create table t2 (c2 int) go create index ix_t2 on t2(c2) go --insert 100,000 rows into t..

Sp_trace_create MaxfileSize 오류

Sp_trace_create MaxfileSize 오류 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 추적 정의를 생성할 때 maxfilesize 구문에서 오류가 발생한다. 이를 해결하는 방법에 대해서 알아본다. 추적 정의 상태를 만드는 구문은 다음과 같다. sp_trace_create [ @traceid = ] trace_id OUTPUT , [ @options = ] option_value , [ @tracefile = ] 'trace_file' [ , [ @maxfilesize = ] max_file_size ] [ , [ @stoptime = ] 'stop_time' ] [ , [ @filecount = ] 'max_rollover_files' ] 하..

RANDBETWEEN 함수 만들기

RANDBETWEEN 함수 만들기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 엑셀에 포함되어 있는 함수인 RANDBETWEEN(범위 난수 발생)을 SQL에서 구현하는 방법에 대해서 알아 본다. 엑셀에서는 다음과 같이 RANDBETWEEN 함수를 사용하여 범위에 포함되어 있는 난수를 생성하는 함수가 있다. SQL Server에서도 RAND() 함수를 사용하여 두 수 사이의 난수를 생성할 수 있다. select cast(round((75-25)*rand()+25, 0) as integer) as RandBetweenValue 위의 쿼리를 원하는 범위에 따라 재사용이 가능하도록 함수를 생성한다. 다음과 같은 오류가 발생 할 것이다. create function..

Optimize for hint 쿼리 최적화

Optimize for hint 쿼리 최적화 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server는 쿼리를 실행 할 때 다양한 비용을 계산하여 최적의 계획을 생성하고 사용 한다. 그리고 이렇게 생성된 실행 계획은 재사용 된다. 매개 변수 및 실행 계획 재사용 - http://sqlmvp.kr/140188831357 실행 계획 캐싱 및 다시 사용 - http://sqlmvp.kr/140188765472 SQL Server에서는 최적의 실행 계획을 선택하지 않고 하나 이상의 다른 실행계획을 사용할 수 있도록 강제 할 수 있는 힌트도 있다. 예를 들어 Where 절에 특정한 값이 사용됨에 따라 실행 계획이 변경되고 쿼리 실행 시간이 오래 걸리는 경우가..