'Database/MS-SQL'에 해당되는 글 8건

  1. 2010.08.11 NewID - Create uniqueidentifier.
  2. 2010.07.27 sp_spaceused(Transact-SQL)
  3. 2010.07.22 Microsoft SQL Server Management Studio Express
  4. 2009.03.26 MS-SQL 실행 계획 확인 (2)
  5. 2009.03.26 MS-SQL 복원 (2)
  6. 2009.03.26 MS-SQL 백업 (4)
  7. 2009.03.26 MS-SQL 조인 내부 처리 방식 정리
  8. 2009.03.26 MS-SQL 데이터 저장 방식
http://msdn.microsoft.com/ko-kr/library/ms190348.aspx
DB에서 문자열로 이루어진 고유 식별값을 얻고 싶을때 사용하면 되는 함수입니다.

'Database > MS-SQL' 카테고리의 다른 글

NewID - Create uniqueidentifier.  (0) 2010.08.11
sp_spaceused(Transact-SQL)  (0) 2010.07.27
Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
Posted by 엘키 엘키

댓글을 달아 주세요

행의 수, 예약된 디스크 공간 및 현재 데이터베이스의 테이블, 인덱싱된 뷰 또는 Service Broker에서 사용하는 디스크 공간을 표시하거나, 전체 데이터베이스가 예약하여 사용하는 디스크 공간을 표시합니다.


특정 테이블이 물리적으로 차지하는 공간을 표시해줍니다. 

디스크 용량 관리는 데이터 유실을 막는 기본이기 때문에 반드시 자주 체크해주세요.

'Database > MS-SQL' 카테고리의 다른 글

NewID - Create uniqueidentifier.  (0) 2010.08.11
sp_spaceused(Transact-SQL)  (0) 2010.07.27
Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
Posted by 엘키 엘키
 TAG sp_spaceused

댓글을 달아 주세요

http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=ko

Express 라이센스 답게 무료입니다.

기본적인 기능은 모두 지원하는 만큼, MS-SQL을 사용하는 개발자에겐 필수 유틸리티라고 할 수 있겠죠.

'Database > MS-SQL' 카테고리의 다른 글

NewID - Create uniqueidentifier.  (0) 2010.08.11
sp_spaceused(Transact-SQL)  (0) 2010.07.27
Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
Posted by 엘키 엘키

댓글을 달아 주세요

MSSQL에선 실행 계획을 통해 인덱스를 타는지, 어떠한 쿼리가 더 빠른지 측정할 수가 있습니다.

쿼리
Set Statistics Profile { ON | OFF } -- 쿼리 결과에 실행 계획을 포함
Set Statistics IO {ON | OFF}         -- 페이지의 입출력 수를 알 수 있다.
Set Showplan_All { ON | OFF }     -- 실행 계획만 보는 옵션

실행 계획은 SQL Server 쿼리 프로세서가 각 문을 실행할 때 취한 단계를 나타내는 계층적 트리를 이루는 행 집합으로 정보를 반환합니다. 출력에 반영된 문에는 문의 텍스트가 있는 단일 행이 포함되고, 이 단일 행 뒤에는 실행 단계에 대한 자세한 정보가 있는 몇 개의 행이 있습니다 아래 표에서는 출력에 포함된 열을 보여 줍니다.

열 이름

설명

Rows

실행된 행수

Executes

Loop 일 경우 Loop 실행 된 횟수

StmtText

PLAN_ROW 형식이 아닌 행에 대해 이 열에는 Transact-SQL 문의 텍스트가 포함됩니다. PLAN_ROW 유형의 행에 대해서는 이 열에 작업에 대한 설명이 포함됩니다. 이 열에는 물리적 연산자가 포함되며 논리 연산자가 포함될 경우도 있습니다. 이 열 다음에 물리적 연산자가 결정한 설명이 나올 경우도 있습니다. 자세한 내용은 논리 물리 연산자 참조를 참조하십시오.

StmtId

현재 일괄 처리에 있는 문의 수입니다. (몇번째 쿼리에 대한 통계인지)

NodeId

현재 쿼리의 노드 ID입니다. (현재 노드의 식별값)

Parent

부모 단계의 노드 ID입니다 (이 값이 같은 것 끼리, 같은 depth라고 생각하면 된다)

PhysicalOp

노드에 대한 물리적 구현 알고리즘입니다. PLAN_ROWS 형식의 행에만 해당됩니다.

LogicalOp

이 노드가 나타내는 관계형 대수 연산자입니다. PLAN_ROWS 형식의 행에만 해당됩니다.

Argument

수행되는 작업에 대한 추가 정보를 제공합니다. 물리적 연산자에 따라 이 열의 내용이 달라집니다.

DefinedValues

이 연산자가 사용하는 값에 대한 쉼표로 구분된 목록을 포함합니다. 이 값은 현재 쿼리에 있었던 계산된 식(: SELECT 목록이나 WHERE 절에 있음)이거나 이 쿼리를 처리하기 위해 쿼리 프로세서에서 사용한 내부 값입니다. 쿼리 내의 어디에서든 정의된 이 값이 참조될 수 있습니다. PLAN_ROWS 형식의 행에만 해당됩니다.

EstimateRows

이 연산자가 생성한 출력의 예상 행 수입니다. PLAN_ROWS 형식의 행에만 해당됩니다.

EstimateIO

작업에 대한 예상 I/O 비용입니다. PLAN_ROWS 형식의 행에만 해당됩니다.

EstimateCPU

이 연산자에 대한 예상 CPU 비용입니다. PLAN_ROWS 형식의 행에만 해당됩니다.

AvgRowSize

이 연산자를 통해 통과되는 행의 예상 평균 행 크기(바이트)입니다.

TotalSubtreeCost

이 작업 및 모든 자식 작업에 대한 예상(누적) 비용입니다.

OutputList

현재 작업에서 예상하고 있는 열에 대한 쉼표로 구분된 목록을 포함합니다.

Warnings

현재 작업과 연관된 경고 메시지에 대한 쉼표로 구분된 목록을 포함합니다. 경고 메시지에 열 목록과 함께 "NO STATS:()" 문자열이 포함될 경우도 있습니다. 이 경고 메시지는 쿼리 최적화 프로그램이 이 열의 통계에 기초하여 결정을 내리려고 했지만 사용 가능한 통계가 없었음을 나타냅니다. 따라서 쿼리 최적화 프로그램이 추측을 해야 했고 결과적으로 비효율적인 쿼리 계획을 선택했을 수도 있습니다. 쿼리 최적화 프로그램이 더 효율적인 쿼리 계획을 선택할 수 있도록 통계를 만들거나 업데이트하는 방법은 UPDATE STATISTICS를 참조하십시오. 어떤 경우에는 이 열에 조인 조건자 없이 조인(테이블을 수반하는)이 일어났음을 나타내는 "MISSING JOIN PREDICATE" 문자열이 포함되기도 합니다. 실수로 조인 조건자를 삭제하면 예상보다 실행 시간이 긴 쿼리가 만들어지고 큰 결과 집합이 반환됩니다. 이 경고가 나타나면 조인 조건자를 의도적으로 사용하지 않았는지 확인하십시오.

Type

노드 유형. 각 쿼리의 부모 노드에 대해서는 노드 유형이 Transact-SQL 문 유형(: SELECT, INSERT, EXECUTE )입니다. 실행 계획을 나타내는 하위 노드에 대해서는 PLAN_ROW 유형입니다.

Parallel

0 = 연산자가 병렬로 실행되지 않습니다.

1 = 연산자가 병렬로 실행됩니다.

EstimateExecutions

현재 쿼리를 실행하는 동안 이 연산자가 실행될 예상 횟수입니다.



Physical Op & Losical Op 에 사용되는 연산자
1) Bookmark Lookup 실행 계획 연산자
Bookmark Lookup 연산자는 책갈피(행 ID 또는 클러스터링 키)를 사용하여 테이블이나 클러스터형 인덱스에서 해당 행을 조회합니다. Argument 열에는 테이블이나 클러스터형 인덱스에서 행을 조회할 때 사용하는 책갈피 레이블이 포함됩니다. Argument 열에는 행을 조회하는 테이블 또는 클러스터형 인덱스의 이름도 포함됩니다. WITH PREFETCH 절이 Argument 열에 나타나는 경우에 쿼리 프로세서에서는 테이블 또는 클러스터형 인덱스에서 책갈피를 조회할 때 비동기 사전 인출(미리 읽기)을 사용하는 것을 최적의 방법으로 결정합니다.

SQL Server 2008에서는 Bookmark Lookup이 사용되지 않습니다. 대신 Clustered Index Seek 및 RID Lookup이 책갈피 조회 기능을 제공합니다. Key Lookup 연산자도 이 기능을 제공합니다.

Clustered Index는 DATA PAGE가 Index Leaf Level 에 존재를 한다.
Non-Clustered Index의 DATA PAGE는 Index Leaf Level에 존재하지 않는다.

즉, Non-Clustered Index로 해당 값을 Index Seek로 검색을 하였어도 출력될 값을 찾기 위해서는 해당 DATA PAGE 까지 찾아 들어가야 하는것이다. 그래서 MS-SQL 2000에서는 Bookmark lookup이라는것이 발생하는것이다.

2) RID Lookup 실행 계획 연산자
RID Lookup은 제공된 RID(행 식별자)를 사용하여 힙을 조회하는 책갈피 조회입니다. Argument 열은  테이블의 행을 조회하는 데 사용되는 책갈피 레이블 및 행을 조회할 테이블의 이름을 포함합니다.

RID Lookup은 항상 NESTED LOOP JOIN과 함께 사용됩니다.
RID Lookup은 물리 연산자입니다.

이제 RID Lookup을 실제 재현해보기 위해서 Test_Lookup Table에 Unique Non-Clustered Index를 만들어 보겠다.
왜 굳이 Non-Clustered Index를 만드느냐? RID Lookup은 Heap Table에서 만 일어난다. Heap Table은 Clustered Index가 없는 Table을 지칭한다. 그럼 왜 또 구지 Unique Type으로 만드냐? Unique Type이 아니면 Query 실행 될때 Table Scan이 일어난다

3) Key Lookup 실행 계획 연산자
SQL Server 2005 서비스 팩 2에 새로 추가된 Key Lookup 연산자는 클러스터형 인덱스가 있는 테이블의 책갈피 조회입니다. Argument 열에는 클러스터형 인덱스의 이름과 클러스터형 인덱스에서 행을 조회할 때 사용되는 클러스터링 키가 포함됩니다. Key Lookup은 항상 Nested Loops 연산자와 함께 사용됩니다. WITH PREFETCH 절이 Argument 열에 나타나는 경우에 쿼리 프로세서에서는 클러스터형 인덱스에서 책갈피를 조회할 때 비동기 사전 인출(미리 읽기)을 사용하는 것을 최적의 방법으로 결정합니다. 

Table에서 KEY Lookup을 발생시키려면 3가지 조건이 필요하다.
첫번째, Clustered Index가 존재해야 한다.
두번째, 검색될 Non-Clustered Index가 존재해야 한다.
세번째, Index가 걸리지 않은 출력될 목록이 있어야 한다.

'Database > MS-SQL' 카테고리의 다른 글

sp_spaceused(Transact-SQL)  (0) 2010.07.27
Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
MS-SQL 조인 내부 처리 방식 정리  (0) 2009.03.26
Posted by 엘키 엘키

댓글을 달아 주세요

  1. Irene 2009.04.22 14:49  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사요, 블로그로 담아갈께요~

  2. Favicon of http://bogni.pe.kr BlogIcon bogni77 2009.12.07 14:00  댓글주소  수정/삭제  댓글쓰기

    감사합니다.

    트랙백 설정하고 퍼갑니다.^^

2009. 3. 26. 17:01 Database/MS-SQL

MS-SQL 복원

복원
- 백업한 데이터를 복구하는 것을 말한다.

쿼리
Restore Database DB이름 From Disk='경로\파일명.bak'

복원시 옵션
1) 일반 옵션

- File : 한 파일 내에 여러개의 백업 존재 시, 백업 디바이스 헤더 검사에서의 Position 값을 넘겨주면 해당 백업만 복원합니다.
Restore Database DB이름 From Disk='경로\파일명.bak' 
With File = 3 -- 해당 파일의 3번 Position의 백업만 복원

- DBO_ONLY : 복원 이후 권한을 db_owner 에게만 준다
Restore Database DB이름 From Disk='경로\파일명.bak' 
With Dbo_Only

2) 복구 이후 상태 설정용 옵션
- Recovery : 복원이 끝났으니 사용하게 하라는 의미.
Restore Database DB이름 From Disk='경로\파일명.bak' 
With Recovery -- 복원을 끝내고 사용할 수 있도록 설정

- NoRecovery : 추가적인 복구 작업이 있을 것이기에 사용하게 하지 말라는 의미.
Restore Database DB이름 From Disk='경로\파일명.bak' 
With Recovery -- 복원을 끝내도 사용은 할 수 없게 설정

- Standby : 추가적인 복구가 있을 예정이지만, 사용은 하고 싶기에 읽기 전용 상태로 설정.
Restore Database DB이름 From Disk='경로\파일명.bak' 
With Standby -- 복원을 끝내고 읽기 전용으로 설정


3) 범위 지정 복구 관련 옵션
- StopAt : 복원 시점을 시간으로 지정
Restore Database DB이름 From Disk='경로\파일명.bak'
StopAt = '2001-11-19 01:09' --2001년 11월 19일 1시 9분 데이터까지 복원

4) 마크 이용 복구 관련 옵션
- 트랜잭션에 마크 설정
Begin Tran myTran With Mark --트랜잭션에 마크를 설정
-- 여러가지 처리
Commit

- StopAtMark : 지정한 마크의 트랜잭션까지 복원
Restore Database DB이름 From Disk='경로\파일명.bak'
StopAtMark = 'myTran' -- myTran 이라는 Transaction 까지 복원

- StopBeforeMark : 해당 트랜잭션 직전(해당 트랜잭션을 포함하지 않음.) 에서 복원을 중지한다.
Restore Database DB이름 From Disk='경로\파일명.bak'
StopBeforeMark = 'myTran' --myTran 이전 까지의 Transaction 까지 복원

- After : 날짜 지정 기능 (StopAtMark나, StopAtBeforeMark 과 함께 사용 가능)
Restore Database DB이름 From Disk='경로\파일명.bak'
StopAtMark = 'myTran'
AFTER '2001-11-19 01:09' --2001년 11월 19일 1시 9분 데이터까지 복원

5) 현재 상태를 파일로 저장시 옵션
- MOVE A TO B : 복원시 현재 상태를 파일로 저장할 파일 경로 재정의 명령
Restore Database DB이름 From Disk='경로\파일명.bak' 
With Move '논리 파일 이름' To '경로\파일명.mdf' -- 해당 논리 파일을 지정한 곳으로 옮겨라

- Replace : 복원시 현재 상태를 저장할 때 같은 파일 존재시 덮어 써라. (Move 명령과 함께 옵션 지정 가능)
Restore Database DB이름 From Disk='경로\파일명.bak' 
With Replace-- 파일명.bak이 이미 있을 경우 덮어 쓰게 설정


복구 모델
1) 전체 복구 모델 (FULL)
- 데이터 백업과 로그 백업을 사용하여, 손실 없이 복구하는 모델.
- 시간 지정 복구가 가능하다.
- 전체, 차등, 로그, 파일 백업을 할 수 있음.

2) 대량 로그 복구 모델 (Bulk_Logged)

- 최소의 로그와 데이터 페이지를 저장하고 복구하는 모델.
- 지정된 시점까지의 복구(Stopat 옵션)는 허락 안된다.
- 전체, 차등, 로그, 파일 백업을 할 수 있음.

3) 단순 모델 (Simple)
- 로그를 가장 적게 사용한다. trunc.log on chkpt. 데이터 베이스 옵션과 동일.
- 로그를 주기적으로 비우기때문에 로그가 가득 차지 않는다.
- 지정된 시점까지의 복구(Stopat 옵션)는 허락 안된다.
- 전체, 차등 백업만 할 수 있음.

'Database > MS-SQL' 카테고리의 다른 글

Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
MS-SQL 조인 내부 처리 방식 정리  (0) 2009.03.26
MS-SQL 데이터 저장 방식  (0) 2009.03.26
Posted by 엘키 엘키

댓글을 달아 주세요

  1. Favicon of https://najsulman.tistory.com BlogIcon 건우아빠유리남편 2010.07.14 14:17 신고  댓글주소  수정/삭제  댓글쓰기

    잘 보고 링크해가요..ㅎㅎ

2009. 3. 26. 16:58 Database/MS-SQL

MS-SQL 백업

백업시 참고 사항
- 기본적으로 model, northwind, Pubs, tempdb는 백업하지 않아도 됨.
- master테이블은 권한과 같은 정보들이 있고, msdb테이블은 스케쥴이나 패키지 작업이 저장되어 있습니다. 필요한 데이터일 경우에만 백업하면 됩니다.


전체 백업
- 전체 백업은 데이터의 변경 유무에 관여하지 않고 전체 데이터의 복사본을 만드는 백업 방식입니다.
- 전체 백업은 복구 과정이 다른 백업 방식보다 간편하고 다른 백업 방식보다 복구 시간이 적게 소요됩니다.

쿼리
Backup Database DB이름
To Disk='경로\파일명.bak'


차등 백업
- 차등 백업은 마지막 전체 백업 이후 변경된 모든 데이터를 백업하는 방식입니다. 이는 증분 백업과는 다르게 전체 백업 이후 파일이 변경될 경우 다음 전체 백업까지 계속 백업하는 방식입니다.
- 전체 백업 이미지와 가장 최근의 차등 이미지만 복구하면 되기 때문에 복구 시점에 따라 다르긴 하지만 대개 증분 백업보다 복구 속도가 빠릅니다.
- 파일이 변경될 때마다 파일 크기가 증가하게 되며, 다음 전체 백업 때까지 파일 크기가 점점 커지게 된다는 단점이 있습니다.

쿼리
Backup Database DB이름
To Disk='경로\파일명.bak' With Differential


로그 백업
-
로그 백업은, 데이터베이스를 백업 받는게 아니고 그동안 발생했던 트랜잭션 로그(지금까지 이루어졌던 모든 동작들의 로그)를 백업 받는 방법입니다.
- 전체 백업시에도 로그 백업은 삭제 되지 않습니다. 그렇기 때문에 전체 백업을 하기 전에 로그 백업을 모두 삭제하고 전체 백업을 하는 것이 좋습니다.
- 로그 백업은 시간 단위로 복원이 가능하다는 장점이있습니다. (부분 롤백 가능)
- 트랜잭션 로그 백업을 받으면 백업받은 로그가 제거되어 로그 파일의 사이즈를 줄여 줄 수 있게 됩니다. (증분 백업의 개념으로 사용 가능)

쿼리

Backup Log DB이름 To Disk = '경로\파일명.bak' GO

백업시 옵션
- Init (Overwrite) : 덮어 쓰기 모드
Backup Log DB이름 To Disk = '경로\파일명.bak'
With Init

- NoInit (Append) : 뒤에 이어 붙이는 모드. (Default)
Backup Log DB이름 To Disk = '경로\파일명.bak'
With NoInit

- No_Truncate : 로그 백업을 하고나서, 로그를 지우지 말라는 뜻. (데이터 베이스가 비정상적인 상태에서도 가능)
Backup Log DB이름 To Disk = '경로\파일명.bak'
With No_Truncate GO -- 로그 백업후 로그를 지우지 말라는 의미.


백업 받은 파일 검사
한 파일에 여러번 백업할 수도 있고, 한 파일당 한번 백업할 수도 있다.
백업 받은 파일에 백업이 정상적으로 이루어졌는지 등의 정보를 확인하려면 아래와 같은 쿼리로 확인하면 된다.

- 백업 디바이스 헤더 검사
Restore HeaderOnly From Disk = '경로\파일명.bak' GO

- 백업시 파일 리스트 검사
Restore FileListOnly From Disk = '경로\파일명.bak' GO

- 백업 미디어 정보 검사
Restore LabelOnly From Disk = '경로\파일명.bak' GO

- 백업 안정성 검사
Restore VerifyOnly From Disk = '경로\파일명.bak' GO

'Database > MS-SQL' 카테고리의 다른 글

Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
MS-SQL 조인 내부 처리 방식 정리  (0) 2009.03.26
MS-SQL 데이터 저장 방식  (0) 2009.03.26
Posted by 엘키 엘키

댓글을 달아 주세요

  1. Favicon of https://najsulman.tistory.com BlogIcon 건우아빠유리남편 2010.07.14 14:17 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다

  2. Favicon of http://passman.tistory.com BlogIcon DLTKDGO 2011.11.29 17:14  댓글주소  수정/삭제  댓글쓰기

    너무좋은 자료 많네요!! 담아갈게요~
    좋은공부하고있습니다~^^;;

참고 자료
http://support.microsoft.com/kb/197297/ko


용어 정리
Driving Table : 조인에서 기준이 되는 테이블 (= Outer Table)
Drived Table : 조인에서 결합 되어지는 테이블 (= Inner Table)

Nested Loop
- 두개 이상의 테이블에서, Driving Table에서 먼저 조건에 맞는 집합을 만들고, Drived Table에서 조건이 맞는 결과를 얻어낸 후 Row를 결합하여 원하는 결과를 추출하는 방식 (Driving Table의 한 행당 Drived Table의 데이터 검색이 일어난다).
- 부분 범위 처리 가능 (정지, 재개 가능. 예를 들어 조건에 만족하는 데이터 1000개만 얻어낸 상태에서, 요청이 들어올경우 1001~2000번째 값을 얻어오는 것이 가능)
- Driving Table에서 상대 테이블로 비교할 데이터 량이 적은 것이 효율에 좋다.
- 기준 테이블과 상대 테이블 간에 서로 대응하는 값에 인덱스가 걸려있는 것이 효율에 좋다.
- 특정 범위만 알아오는 쿼리에 유용.
- Any Join에서 사용 됨.

Sort Merge
- 쿼리에 따라 기준 테이블, 상대 테이블 각각 조인에 포함될 데이터들만 추려내 테이블로 구성한 후 (집합을 구성), 추린 테이블의 데이터를 정렬해서 사용한다.
(상황에 따라 테이블 전체를 정렬해서 사용하는 경우도 있다.)
- 두 테이블의 크기가 다를 경우, 유후 시간 발생 (정렬 되는 시간이 동일하지 않기 때문에)
- 지그 재그 계단식 비교 방식을 취함 (읽고 있는 데이터 포인터를 기억한 후, 다음 데이터를 읽을 때 이미 읽은 위치를 다시 읽지 않는 방식으로 검색량을 줄인다.)
- 지그 재그 계단식 비교를 하기에, 겹치는 값이 존재할 경우 이미 읽은 데이터를 다시 읽어야 되는 상황이 발생하기도 한다. (같은 값이 여러개일 경우, 방금 읽었던 값도 또 읽어야 하기에) 그래서, 겹치는 값이 존재할 경우 DBMS가 Hash Join을 사용할 가능성이 높다.
- 추려진 결과가 한번에 나오고, 그 전에는 결과를 낼 수 없기에, 처리 속도가 중요한 쿼리에서는 사용되지 않는다.
- Any Join 에서 가능 하지만 주로 Equal Join 에서 유용.

Hash

- 테이블 내의 모든 데이터에 해시 함수를 적용하여 해시 버킷에 담는다. 값 별로 버킷에 나누어 담기에, 해당 버킷을 읽음으로써 같은 값을 사용하는 집합에 억세스 하는 방식이다.
- 해시 테이블 구성 비용 (CPU, 메모리)이 크다.
- 값 별로 버킷에 담기기에 버킷 억세스는 같은 값을 찾는 경우에만 빠르다. 그래서, Equal Join 에서만 가능하도록 되어있다.

 

'Database > MS-SQL' 카테고리의 다른 글

Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
MS-SQL 조인 내부 처리 방식 정리  (0) 2009.03.26
MS-SQL 데이터 저장 방식  (0) 2009.03.26
Posted by 엘키 엘키

댓글을 달아 주세요

Page
MS-SQL에서 다뤄지는 데이터가 저장되는 최소 단위는 Page 입니다.
Page의 크기는 8KB ( 1024 * 8 = 8192 btyes ) 이지만, 실제로 데이터를 저장할 수 있는 maximum row size 는 8090 bytes 입니다.

Page의 구성
1. header (96 bytes)
이전페이지와 다음페이지의 정보 저장

2. Data rows (8090 bytes)
실제 데이터 저장부분

3. offset 부분
각 행의 첫번째 바이트가 페이지의 시작부분에서 얼마나 멀리 떨어져 있는지를 저장

Extent
페이지가 최대 8개가 모여 한개의 Extent를 이룹니다. 테이블, 인덱스가 물리적으로 저장되는 최소 단위라고 생각하시면 됩니다.
Extent의 크기는 64KB ( 8192 * 8 = 65536 bytes ) 입니다.
1MB당 16개의 extent 가 존재할 수 있다.

Extent의 분류
1. single extent (단일)
테이블면 테이블, 인덱스면 인덱스 하나의 단일한 데이터가 저장된 상태

2. mix extent (혼합)
테이블과 인덱스등의 하나이상의 데이터베이스의 오브젝트들이 같이 저장된 상태

'Database > MS-SQL' 카테고리의 다른 글

Microsoft SQL Server Management Studio Express  (0) 2010.07.22
MS-SQL 실행 계획 확인  (2) 2009.03.26
MS-SQL 복원  (2) 2009.03.26
MS-SQL 백업  (4) 2009.03.26
MS-SQL 조인 내부 처리 방식 정리  (0) 2009.03.26
MS-SQL 데이터 저장 방식  (0) 2009.03.26
Posted by 엘키 엘키

댓글을 달아 주세요

이전버튼 1 이전버튼

블로그 이미지
Software Engineer
엘키

공지사항

Yesterday31
Today29
Total1,605,483

달력

 « |  » 2020.8
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

글 보관함