본문 바로가기

분류 전체보기

(101)
[Service Broker] 성능 최적화 - 150 Trick 이전 글의 소스를 유심히 살펴보셨다면 아래 테이블에서 [_150TrickEnableFlag] 컬럼이 어떤 역할을 하는지 알고 계실 것 같습니다. 123456-- Dialog Pool 설정 테이블 생성CREATE TABLE dbo.DialogPoolConfig ( _150TrickEnableFlag bit NOT NULL, DialogCount int NOT NULL);GOColored by Color Scriptercs [P_StartUp_CreateDialogs]의 내용은 아래와 같았죠. 12345678910111213141516171819202122232425262728293031CREATE PROCEDURE dbo.P_StartUp_CreateDialogsASSET NOCOUNT ON;SET XAC..
[Service Broker] 성능 최적화 - 기본편 SSB 최적화는 여러 면에서 바라볼 수 있습니다. 지금부터 하나씩 살펴보겠습니다. 1. 스토리지 구성 - [PRIMARY] 파일그룹 분리 SQL Server에서 스토리지 구성의 기본 원칙은 데이터파일과 트랜잭션 로그 파일을 물리적으로 분리된 디스크 볼륨에 위치시키는 것입니다. 그런데, SSB의 TRANSMISSION QUEUE는 [PRIMARY] 파일그룹 안에 있는 internal 테이블을 사용합니다. 따라서 주고 받는 메시지가 많으면 많을 수록 *.mdf 파일에 대한 I/O가 증가하게 됩니다. 즉, SSB를 사용하여 대량 메시지를 전송하는 시스템이라면 사용자 데이터를 별도의 파일 그룹에 저장하고 *.mdf 파일과 *.ndf 파일을 물리적으로 분리된 디스크 볼륨에 위치시켜야 합니다. tempdb의 경우 ..
[Service Broker] 인증서를 사용한 인스턴스 간의 대화 BOL의 자습서를 마치셨다면 인증서를 사용하는 방법을 맛 보셨으리라 생각합니다. 아마 인증서를 SERVICE 개체에 매핑하는 것을 보셨을텐데요. SSB에서 인증서를 사용할 수 있는 곳이 하나 더 있습니다. 그것은 END POINT의 인증 방식으로 Windows 인증 대신 인증서를 선택하는 것이죠. 실제 환경에서 Windows 인증을 사용하기 어려운 경우가 존재하기 때문에, 인증서를 사용하는 것을 권해드리고 싶습니다. 이번 글에서는 END POINT의 인증 방식으로 CERTIFICATE를 사용하는 방법과 함께.. 인스턴스 간의 대화에 필요한 SSB 개체를 하나 하나 살펴보겠습니다. (스크립트와 주석으로 대부분의 설명을 대신합니다. 꼼꼼히 읽어 주세요.) 사전 준비 - 2개의 SQL Server 인스턴스를 ..
[Service Broker] 기본 개념 익히기 Service Broker는 SQL Server와 SQL Server 사이에 메시지를 주고 받는 기능입니다. 이때 메시지를 전송하는 쪽을 INITIATOR, 수신하는 쪽을 TARGET이라고 부릅니다. 1. INITIATOR와 TARGET이 모두 하나의 데이터베이스일 수도 있고 2. INITIATOR와 TARGET이 하나의 인스턴스에 존재하는 서로 분리된 데이터베이스 일수도 있고 3. INITIATOR와 TARGET이 서로 분리된 인스턴스일 수도 있습니다. 아마 대부분의 실무 레벨에서는 3항의 구성이 적용되리라 생각합니다. 그럼에도 1, 2항의 구성이 가능하다는 것에 감사할 수 있는데요. 처음 Service Broker를 접하는 단계에서 개념을 잡을 때, 1항과 2항의 단순한 구성이 도움이 되기 때문입니다..
[Service Broker] 시작하며... 이런 저런 핑계를 대며 미루고 미뤘던 Service Broker - 이하 SSB라고 쓰겠습니다 - 에 대한 포스팅을 시작합니다. - MESSAGE TYPE - CONTRACT - QUEUE - SERVICE - ROUTE - ENDPOINT - REMOTE SERVICE BINDING SSB를 구성하는 개체들입니다만.. 각각의 역할과 각 개체 간의 상관 관계를 이해하기가 쉽지는 않더군요. 아마 MS SQL 구성 요소 중 가장 불친절한 친구 중 하나가 아닌가 싶습니다. 그럼에도 공부할 가치가 있는가? 네, 전 있다고 생각합니다. Service Broker 란? BOL을 보면 "메시징 및 큐", "서로 다른 데이터베이스 간에 통신", "데이터베이스 작업을 여러 데이터베이스에 분산" 이란 말이 나옵니다. SS..
SSMS 에러 - Cannot show requested dialog. There is no row at position 0. 오늘 SSMS에서 데이터베이스 속성창을 띄웠는데 갑자기 아래와 같은 에러 메세지가 출력되었습니다. 어떤 이유인지 모르겠지만 master DB의 spt_values 테이블이 비워져 있었고, 그것이 원인이었습니다. SQL 서버를 기본 경로로 설치했다면 아래와 같은 경로에 u_tables.sql 파일이 있는데.. 이 스크립트 파일로 테이블을 복구할 수 있습니다. C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Install\u_tables.sql
SSMS에서 Ctrl-F, Ctrl-H 단축키가 동작하지 않을 때 어제 SSMS로 작업 중이었는데, 갑자기 Ctrl-F와 Ctrl-H 단축키가 먹통이 되었습니다. SSMS를 다시 시작해봐도 소용 없고 OS를 리부팅해도 소용 없더군요. 아.. 그 당황스러움이란.. ^^ 구글링을 조금 해보니 원인까지는 잘 모르겠지만 해결 방법은 찾을 수 있었습니다. 혹시 같은 문제를 겪고 계시다면 아래와 같이 해결할 수 있습니다. SSMS의 상단 메뉴 표시줄에서 Window 메뉴 > Reset Window Layout 클릭
Disk Partition Alignment 개요 스토리지의 성능 최적화를 위해 우리가 고려해야할 요소가 많습니다. 아마 디스크 개수, RAID Mode, Stripe Size, File Allocation Unit Size 등을 떠올릴 수 있을 겁니다. 그런데 이런 요소들 중 과소 평가되거나, 혹은 아예 고려하지 않는 것으로 "Disk Partition Alignment" 라는 부분이 있습니다. 우리말로 하면 "디스크 파티션 정렬" 정도가 되겠군요. 참고로 파티션을 정렬한다는 것은 파티션이 시작하는 시작점을 특정 값으로 설정하는 것을 의미합니다. 첫번째 의문 - 파티션은 원래 0번째 byte 지점에서 시작하는게 아닌가? 네, 아닙니다. 디스크에서 기록이 시작되는 맨 앞부분의 63 섹터 (= 31.5 KB)는 MBR - Master Boot Rec..