전체 글 1383

SQL Server CREATE TABLE syntax diagrams

SQL Server CREATE TABLE syntax diagrams Version : SQL Server 2012 SQL Server는 SSMS(SQL Server Management Studio)라는 툴을 이용하여 GUI를 사용한 테이블 생성 및 코드를 사용한 테이블 생성이 가능하다. 이번 포스트는 simpletalk.com에 기재된 내용으로 CREATE TABLE에 대한 문법을 다이어그램을 통하여 쉽게 설명 한다. 테이블 생성시 어떤 절차로 테이블이 생성되고 규칙 검사는 어떤 순서로 진행되는지 살펴 보자. CREATE TABLE : http://msdn.microsoft.com/ko-kr/library/ms174979.aspx [다이어그램 읽는 법] 다이어그램은 위에서 아래로, 왼쪽에서 오른쪽으로..

SQL Server 2012 Sp1 설치 이슈 및 해결

SQL Server 2012 Sp1 설치 이슈 및 해결 Version : SQL Server 2012 SQL Server Service Pack 1을 설치 후 발생하는 문제점 및 해결 방법을 공유 한다. 이번 포스트는 CSS SQL Server Engineer 팀블로그에 게제된 내용으로 필자가 이해한 내용을 정리하였으며 번역의 오류나 기술적 오류가 있음을 인지 한다. [Sp1 설치 후 발생하는 문제] Windows 설치 프로세스(MSIExec.exe)가 반복적으로 시작하고 특정 SQL 서버 어셈블리를 복구하려고 시도 한다. Windows 이벤트로그(응용프그램)에 다음과 같은 항목이 기록 된다. 이때 높은 CPU 사용량이 발생 한다. 원인은 SQL Server 구성 요소에서 일치 하지 않는 어셈블리 때문이..

SSD에서 DBCC CHECKDB 성능 벤치마킹

SSD에서 DBCC CHECKDB 성능 벤치마킹 Version : SQL Server 2005, 2008, 2008R2, 2012 최근 들어 많은 기업이 데이터베이스에도 SSD를 사용하는 추세이다. 기존의 하드디스크와는 구조 및 동작 방식이 다른 SSD에서 DBCC CHECKDB를 사용하였을 때 성능은 어떨까? 이번 포스팅은 SQLSkills.com의 Paul S.Randal 블로그에 기재된 내용으로 필자가 이해한 내용을 바탕으로 정리하였으며 번역의 오류나 기술적 오류가 있음을 인지 한다. 자세한 내용은 원문을 참고하길 바란다. SSD에서 DBCC CHECKDB를 테스트하였으며 다양한 degree of parallelism(DOP) 옵션과 traceflags를 함께 실행 하여 성능을 알아 보았다. [테스..

Collation에 따른 ALTER DATABASE 실패

Collation에 따른 ALTER DATABASE 실패 Version : SQL Server 2005, 2008, 2008R2, 2012 Collate는 데이터베이스 정의 또는 열 정의에 적용하여 데이터를 정렬을 정의하거나 문자열 식에 적용하여 데이터 정렬 캐스트를 정의한다. Collate에 대한 수준은 데이터베이스를 생성하거나 변경, 테이블 생성 또는 컬럼 변경 작업을 할때 지정 할 수 있으며 char, varchar, text, nchar, nvarchar, ntext 데이터 형식에 대해서만 적용 할 수 있다. 이번 케이스는 ALTER DATABASE의 Collate 변경 작업 중 발생 오류로 다음과 같은 메시지를 출력 하였다. Msg 1505, Level 16, State 1, Line 1 The..

LDF 파일이 잘리지 않는 이유

LDF 파일이 잘리지 않는 이유 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에는 데이터를 저장하는 MDF 파일과 트랜잭션 로그라 불리는 로그 파일을 기록하는 LDF 파일이 있다. SQL Server와 관련된 커뮤니티의 질문을 보면 다음과 같은 질문이 많이 있다. "데이터 파일은 10GB인데 로그 파일이 300GB에요. 왜 파일이 점점 커지는 걸까요?" 트랜잭션로그(LDF) 파일이 증가하는 원인은 몇 가지가 있다. 그리고 많은 DBA들이 오해하는 부분이 있는데 대부분의 책을 보면 데이터베이스의 복구 모델이 [단순]일 경우 트랜잭션로그가 쌓이지 않는다고 하는데 이 부분은 반은 맞고 반은 틀린 이야기이다. 데이터베이스의 복구모델이 [단순]일 경우에도 요..

Tempdb 경합 확인 및 해결 (Tempdb Contention)

Tempdb 경합 확인 및 해결 (Tempdb Contention) Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server를 운영하는데 있어서 성능 문제를 일으키는 부분 중 하나가 임시데이터베이스라고 불리는 Tempdb 이다. Tempdb를 많이 사용하면 SQL Server에서 페이지를 할당하려고 할 때 경합이 발생 한다. 이는 메모리 접근에 대한 스레드 병목현상으로 I/O 병목과는 관련이 없다. Tempdb는 다음과 같은 작업이 있을 경우 사용된다. 임시 테이블(로컬 또는 전역)을 생성, 삭제 테이블 변수 CURSORS와 관련된 작업 테이블 ORDER BY GROUP BY HASH PLANS 실제 운영환경에서 Tempdb로 인한 서비스 영향도가 매우 큰데..

SQL Server IO 병목 확인과 오해

SQL Server IO 병목 확인과 오해 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server의 작업 부하는 일반적으로 I/O 서브시스템이 디스크로부터 데이터를 읽거나 쓰는 작업에서 많이 발생 한다. SQL Servers는 내부 메커니즘에 의해(I/O 요청이 OS의 스케줄러에 의해 처리 되는) I/O 요청이 처리 된다. 이 때 작업의 규모나 시스템의 자원에 따라 요청에 대한 처리 속도에 영향을 받는다. 서비스하고 있는 서버의 I/O 부하는 어느 정도일까? 즉 요청 된 작업이 대기하는 시간은 어떻게 될까? 다음 스크립트를 통하여 요청에 응답하는 시간(대기 시간)이 기록되어 있는 통계를 확인 할 수 있다. SELECT DB_NAME(vfs.database_i..

SQL Version에 따른 sp_prepare 정보 반환

SQL Version에 따른 sp_prepare 정보 반환 Version : SQL Server 2008R2, 2012 SQL Server의 시스템 저장 프로시저인 sp_prepare는 매개 변수가 있는 T-SQL문을 준비하고 실행을 위해 핸들을 반환하는 기능을 한다. SQL Server Version에 따라 반환되는 정보가 어떻게 다른지 알아 보자. [단일 문 일괄처리에 대한 메타데이터 반환] 아래 표는 sp_prepare 문을 포함하는 일괄 처리에 대한 메타데이터를 반환 여부를 나타낸다. SQL Server 2012 이전 버전에서도 사용자에게 sp_prepare 메타데이터를 반환한다. 이것은 내부적으로 FMTONLY ON 문을 설정하고 실행하여 구현되었다. 클라이언트 버전 2012 이상이면 SQL 2..

DReplay 활성 세션 초과 에러

DReplay 활성 세션 초과 에러 Version : SQL Server 2012 SQL Server 2012 버전부터 Distributed Replay라는 새로운 기능이 도입 되었다. 이 기능은 SQL Server의 프로파일러와 마찬가지로 Distributed Replay를 사용하여 캡처된 추적을 업그레이드 된 테스트 환경에서 재생할 수 있다. Microsoft SQL Server Distributed Replay 기능은 여러 컴퓨터를 사용하여 추적 데이터를 생성하고 시뮬레이션을 할 수 있는 장점이 있다. 응용 프로그램 호환성 테스트, 성능 테스트 또는 용량계획을 예측하는데 Distributed Replay를 사용할 수 있다. 오늘 주제는 SQL Server 2012에 새로 도입된 SQL Server ..

저장 프로시저 내 임시 테이블 사용과 프로시저 재컴파일

저장 프로시저 내 임시 테이블 사용과 프로시저 재컴파일 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server의 저장프로시저(Stored Procedure)는 보안이나 성능적인 측면에서 많은 이점을 제공한다. 성능적인 측면에서 가장 큰 장점은 프로시저가 처음 한번 실행 될 때 컴파일 되고 그 이후로는 컴파일 과정없이 재사용되는 것이다. 실제 저장프로시저의 컴파일(재컴파일) 비용은 매우 크므로 이 부분을 최대한 발생하지 않도록 해야 한다. 다음의 케이스는 어떤 저장프로시저가 실행 될 때 항상 재컴파일로 인하여 성능 문제가 발생했던 사례이다. 저장프로시저 안에서 사용된 임시 테이블을 ALTER 명령어를 통하여 수정하였을 때 재컴파일이 발생 한다. 다음 예제 스크..