목록분류 전체보기 (17)
TechBlog

트랜잭션 복제 생성 시 스크립트를 확인해보자. 1. 게시 구성1) 게시 생성하기① 게시자에서 sp_addpublication 실행② 게시자에서 sp_addpublication_snapshot 실행③ sp_addarticle로 아티클 추가④ 스냅샷 에이전트를 실행하여 게시에 대한 초기 스냅샷 생성 2) 매개변수 설명① sp_addpublication: 게시 추가@pubilcation → 게시 이름@statusactive → 활성화 : 구독자가 게시 데이터를 즉시 사용inactive → 비활성화 : 게시가 처음 작성될 때 구독자가 게시 데이터 사용 불가@allow_push → 밀어넣기 구독 생성 가능 여부@allow_pull → 끌어오기 구독 생성 가능 여부@sync_method → 동기화 방법, 게시된 데..
1. 복제란?복제(Replication)한 데이터베이스에서 다른 데이터베이스로 데이터와 데이터베이스 개체를 복사 및 배포한 다음, 데이터베이스 간에 동기화를 수행하여 일관성을 유지하는 일련의 기술로, 고가용성을 높이기 위한 방법 복제의 구성게시자: 다른 서버에 동기화될 데이터가 포함된 원본 데이터베이스를 유지하는 서버배포자: 게시자가 제공하는 게시를 가져와 구독자에게 배포하는 역할을 맡은 서버구독자: 복제된 데이터를 전송 받는 서버구독 방식밀어넣기(Push): 배포자가 구독자의 요청과 관계 없이 게시자의 변경 내용을 구독자로 전달하는 방식끌어오기(Pull): 구독자가 게시자의 변경 내용을 직접 요청하는 방식 2. 복제 유형스냅샷 복제트랜잭션 복제병합 복제1) 스냅샷 복제복제를 구성하면, 게시 전체를 구독..
1. 개요파라미터 스니핑 (Parameter Sniffing)저장 프로시저를 처음 실행할 때 옵티마이저는 통계 정보를 바탕으로 실행계획을 생성한다.이때 생성된 실행계획을 캐시에 저장하고, 이후에 저장 프로시저가 다시 실행되면 캐싱된 실행계획을 재사용한다.그러나 저장 프로시저의 파라미터 값이 어떻게 들어오는지에 따라 최적화되지 못한 실행계획으로 인해 성능 저하를 일으킬 수 있는데, 이러한 현상을 파라미터 스니핑이라고 한다.주로 저장 프로시저를 실행할 때 발생하는 현상이다. 해결 방안Recompile 옵션 사용IF 조건문 활용 2. 파라미터 스니핑 재현1) 테스트 쿼리예약 내역을 조회하는 쿼리가 있다. 예약 상태(status) 컬럼에는 Non Clustered Index가 생성되어 있고, 데이터 분포도가 작..

Join 종류로는 다음과 같은 것들이 있다. Inner JoinOuter Join(left, right, full)Cross JoinCross Apply, Outer ApplySelf Join 1. Inner JoinInner Join은 두 테이블의 조인 컬럼의 값이 일치하는 행만 결합된다.따라서 Join의 결과는 두 테이블의 교집합이다. 다음과 같이 두 테이블이 있다고 하자.employee 테이블과 department 테이블을 Inner Join한다.select *from employee as einner join department as don e.dept_id = d.dept_id Inner Join은 두 테이블의 dept_id 값이 일치하는 행만 결합되므로, Join의 결과는 다음과 같다. 2...

MS-SQL에서 지원하는 조인 방식에는 크게 3가지가 있다.중첩 반복(Nested Loops)정렬 병합(Sort Merge)해시 매치(Hash Match) 1. Nested Loops Join1) 의미선행 테이블의 결과 집합을 한 건씩 후행 테이블에 조인하고 이를 반복하여 최종 결과 집합을 만들어내는 조인 방식. 2) 특징선행적 선행 테이블의 처리 범위가 전체 일의 양을 결정, 즉 선행 테이블의 결과 집합 건 수만큼 조인이 반복된다.랜덤 액세스조인 키(A.KEY=B.KEY)로 선행 테이블에서 후행 테이블에 액세스할 때 랜덤 I/O가 발생한다.연결고리의 중요성선행 테이블의 처리 row를 가지고 후행 테이블의 인덱스 페이지를 액세스하기 때문에, 후행 테이블의 인덱스 유무가 중요하다.다른 방식에 비해 메모리..

1. 개요동적 쿼리는 프로그램이 실행되는(런타임) 동안 생성되고 실행되는 SQL문이다.동적 쿼리는 SQL 문장을 실행 중에 조립하는 기법으로, 이를 활용해 외부에서 전달한 변수값에 따라 다르게 동작하는 명령문을 생성할 수 있다.동적 쿼리의 핵심은 '쿼리를 변수에 담는다'는 것인데, 동적쿼리를 활용하면 쿼리문을 String으로 만들어 변수화할 수 있기 때문에 길고 복잡한 쿼리를 간단하게 처리할 수 있게 된다.-- 아래는 쿼리문을 String으로 만들어 변수화하는 예시이다.DECLARE @yymm nvarchar(6), @sql nvarchar(1000) SET @yymm = (SELECT convert(char(6), getdate(), 112))SET @sql = N'SELEC..