1. 클러스터형 인덱스 (Clustered Index) 인덱스 Leaf Node에 실제 데이터를 가짐. ( 📢 흔히 클러스터형 인 덱스를 키워드 아래에 바로 모든 설명이 있는 사전과 비교한다. ) 인덱스 키 값을 기준으로 데이터를 상시 정렬. (통상적으로 PK로 인덱스 키를 잡는다.) = Insert가 발생하면 전체 정렬 필요 테이블 당 1개만 생성가능. (데이터 테이블과 인덱스 테이블이 물리적으로 같음) 클러스터형 인덱스를 생성하는 순간 해당 테이블의 데이터는 Heap 방식이 아닌 B-Tree 구조로 저장된다. create clustered index 이름 on 테이블 (칼럼) 2. 비 클러스터형 인덱스 (Non-Clistered Index) [DEFAULT] Leaf Node에 실제 데이터가 아닌 데..
[DB] SQL SERVER
1. INDEX란? 테이블을 만들고 저장할 때, 데이터는 Heap 영역에 내부적으로 저장된다. 인덱스=색인으로 Oracle, PostgreSQL, SQL server 등 대부분의 RDBMS에서 사용되며 데이터를 빠르게 조회할 수 있게 하고 만약 인덱스가 없는 테이블 또는 컬럼으로 조회하게 되면 테이블 전체를 full scan 하게 된다. 데이터베이스 전체 성능에 직결되는 오브젝트기 때문에 무조건적인 인덱스 생성을 하게 되면 데이터베이스의 자원을 낭비할 수 있고 오히려 성능을 저하시킬 수도 있으므로 효율적인 인덱스 관리 또한 매우 중요하다. SELECT, INSERT, UPDATE, DELETE 등의 DML문을 실행할 때 사용하며 주로 SELECT문을 실행할 때 사용한다. 하지만 데이터를 변경하는 작업(I..
- properties 에서 Securables 항목 등에 접근 할 때 에러 발생 기타 관리자 권한이 필요한 화면에 접근하려고 하면 에러메세지 송출됨. SSMS 종료 후 - 관리자 권한으로 재 실행
1. 트랜잭션과 테이블 잠금(Lock) 잠금에 대한 전반적인 내용은 MSDN의 잠금 및 행 버전 관리 페이지로부터 찾아볼 수 있다. 트랜잭션 중일 때 테이블 잠금(Lock)이 발생한다. 잠금(Lock)은 사용자가 데이터를 사용하고 있으면 다른 사용자가 그 데이터를 변형하지 못하도록 한다. 따라서, 테이블이 잠기면 이 잠금이 풀릴 때까지 다른 쿼리 수행은 잠금이 풀릴 때까지 대기하게 된다. 아래 예제를 살펴보자. -- 트랜잭션이 시작되어 잠금(Lock)이 발생했다 BEGIN TRAN UPDATE UserTable SET Addr = N'서울' WHERE ID = 'KHD' UPDATE UserTable SET Addr = N'경기' WHERE ID = 'KKJ' UPDATE UserTable SET Add..
Transact-SQL / SP 등의 실행으로 데이터베이스가 lock 상태에 있을 때, sysprocesses 테이블을 통해 해당 잠금 상태에 대한 정보를 조회 (SID, 대기시간, 상태 등) USE [master] GO /****** Object: StoredProcedure [dbo].[sp_mon_blocking] Script Date: 2023-06-07 오후 12:55:33 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create proc [dbo].[sp_mon_blocking] as set nocount on --기초 테이블 생성 create table #a(blocking_spid int,blocking_hostprocess int ..
1. SET NOCOUNT Transact-SQL문 또는 저장 프로시저의 영향을 받은 행 수를 나타내는 메시지가 결과 집합의 일부로 반환되지 않도록 한다. 2. 구문 SET NOCOUNT ON/OFF 3. 권한 - PUBLIC 권한 필요 4. OFF 설정 시 - 실행 후, 영향을 받은 행에 대한 결과값을 표시 5. ON 설정 시 - 실행 후, 영향을 받은 행에 대한 결과값을 표시하지 않음 - 실제 데이터를 많이 반환하지 않는 일부 문이 포함된 저장 프로시저 또는 Transact-SQL 루프가 포함된 프로시저의 경우 SET NOCOUNT를 ON으로 설정하면 네트워크 트래픽이 크게 줄기 때문에 성능이 눈에 띄게 향상 - SET NOCOUNT로 지정된 설정은 실행 시간 또는 런타임에 적용되며 구문 분석 시에는..