database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27939 게시물 읽기
No. 27939
클러스트드 인덱스에 insert가 이루어질때 궁금한게 있습니다.
작성자
박성원(darkancia)
작성일
2008-12-19 11:32
조회수
4,305

안녕하세요 


이번에 mssql에 대해서 공부중인데요 세미나를 들었는데 초큼 이해가 안되는 부분이 있습니다. 


클러스트드 인덱스는 데이터자체를 인덱스화 해서 가지고 있는듯한데요 


문제는 여기에 insert가 이루어질때 인실재 저장공간에서 shift가 이루어지는듯하는데요.


새롭게 page가 생성되면서 데이터를 갱신한다고 들었는데요 


그렇게 되면 전체 갱신이 아니라 해당 페이지에서 만 갱신이 되는건지요?



사실 그전에는 전체가 다시 기록되는지 알았는데 이번에 세미나 참석후에 보니 page에 대해서 중간부분에만 갱신이 이루어지고 각 페이지간의 link만 바뀌는거 같은데 


제가 생각한게 맞는지 불연듯 궁금해지네요 



혹시 아시는분은 답변을 부탁드립니다. 



ps.. 기본적으로 생성되는 index는 디폴트로 non 클러스트드 인덱스가 맞나요?



그럼 좋은 하루 되세요

이 글에 대한 댓글이 총 3건 있습니다.


와 같이 이뤄집니다.

맨 위의 숫자는 페이지 고유번호이고
그 아래의 왼쪽은 clustered index가 되는 값을 기준으로 해당 페이지의 제일 작은 값보다 작으면서 제일 큰 값이 들어있는 page number
오른쪽은 자기의 제일 큰 값보다 크면서 제일 작은 값이 들어있는 page number 입니다.

그래서 화살표처럼 링크가 있다고 생각할 수 있는거죠.



새로운 data를 집어 넣으려고 보니 해당 page에 여유공간이 없어서 page split이 발생해야 한다면 새로 page를 할당받습니다.

위의 그림에서는 29번 페이지에 data를 넣으려다가 page split이 발생해서 35번 page를 새로 할당 받게된 경우입니다.

그리고 난 후에 double linked list에서 insert 되었을때처럼 link를 변경하면 아래쪽 그림처럼 됩니다.

마지막으로 반절의 data를 35번 페이지로 옮겨 놓습니다.

그림 출처: http://www.microsoft.com/technet/prodtechnol/sql/70/books/c0618260.mspx


기본적으로 생성되는 index는 default로 non-clustered index가 맞습니다. 다만 PK의 경우에는 자동으로 clustered index가 생성됩니다.
우욱님이 2008-12-19 12:58에 작성한 댓글입니다.
이 댓글은 2008-12-19 13:26에 마지막으로 수정되었습니다. Edit

답변 감사합니다. 확실히 오늘 새롭게 생각한 부분이 맞네요

이제껏 잘못생각하고 있었다는...덜덜 ;;


좋은하루 되시구요.. 갠적으로 바램이 있다면 저희 mysql 쪽에도 스터디그룹을 결성해 봄이 어떨지요 ^^


박성원(darkancia)님이 2008-12-19 14:27에 작성한 댓글입니다.
이 댓글은 2008-12-19 14:29에 마지막으로 수정되었습니다.

스터디 대환영입니다. *^_^*

 

다만 MySQL용 자유게시판이 없어서 제안할 글쓰기가 두려웠을 뿐.. *^.^*

우욱님이 2008-12-19 15:00에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27942인덱스를 어떻게 만듭니까?? [1]
한스
2008-12-22
4675
27941스터디 그룹 결성에 관련하여... [5]
박성원
2008-12-22
4353
27940톰캣6.0 mysql5.0 연동 질문입니다. [1]
펵숟
2008-12-21
4947
27939클러스트드 인덱스에 insert가 이루어질때 궁금한게 있습니다. [3]
박성원
2008-12-19
4305
27938multi-row update [2]
우영제
2008-12-19
4896
27936도와주세요..제발 [2]
박진희
2008-12-18
4742
27934jdk1.3, mysql5.0 연동시 에러문제 좀 봐주세요~ [2]
김재현
2008-12-17
4680
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다