Rookiss Part5 데이터베이스 : 인덱스분석
🙇♀️인덱스분석
– 사용자가 많아 질 떄 데이터베이스가 성능에 부하의 원인이 되지 않도록 튜닝 – 성능 분석부터 알아보자
🪐DB 정보 살펴보기
-
DB 정보 살펴보기
EXEC sp_helpdb 'Northwind'
-
임시 테이블 만들자 (인덱스 테스트용) ``` CREATE TABLE test ( EmployeeID INT NOT NULL, LastName NVARCHAR(20) NULL, FirstName NVARCHAR(20) NULL, HireDate DATETIME NULL ); GO
INSERT INTO test SELECT EmployeeID, LastName, FirstName, HireDate FROM Employees;
### 🪐이중트리를 보기 위한 설정
* FILLFACTOR (리프 페이지 공간 1%만 사용)
* PAD_INDEX (FILLFACTOR 중간 페이지 적용)
CREATE INDEX Test_Index ON test(LastName) WITH (FILLFACTOR = 1, PAD_INDEX = ON) GO
* 인덱스 번호 찾기
SELECT index_id, name FROM sys.indexes WHERE object_id = object_id(‘test’);
* 2번 인덱스 정보 살펴보기
`DBCC IND('Northwind', 'test', 2);`
* Root(2) -> Branch(1) -> Leaf(0)
857
880 856
840 848 849 ```
-
Table {Page}{Page}{Page}{Page}{Page}
-
HEAP RID([페이지 주소(4)][파일ID(2)][슬롯번호(2)] 조합한 ROW 식별자. 테이블에서 정보 추출) ``` DBCC PAGE(‘Northwind’, 1/파일번호/, 840/페이지번호/, 3/출력옵션/); DBCC PAGE(‘Northwind’, 1/파일번호/, 848/페이지번호/, 3/출력옵션/); DBCC PAGE(‘Northwind’, 1/파일번호/, 849/페이지번호/, 3/출력옵션/);
DBCC PAGE(‘Northwind’, 1/파일번호/, 880/페이지번호/, 3/출력옵션/); DBCC PAGE(‘Northwind’, 1/파일번호/, 856/페이지번호/, 3/출력옵션/); DBCC PAGE(‘Northwind’, 1/파일번호/, 857/페이지번호/, 3/출력옵션/); ```
🪐추가 용어
- Random Access (한 건 읽기 위해 한 페이지씩 접근)
- Bookmark Lookup (RID를 통해 행을 찾는다)