오라클 용어 문제때문에.정리가 안돼 0 1 3,856

by 김태형 segment extent dmt 용어 아키텍쳐 [2008.12.10 11:43:03]


tablespace는 datafile에서 나눌수있는 논리적인 단위이고

segment는 도대체 멉니까? 분류별로 나뉠수잇"다고 하고,

어디서는 table, index라고 하는데 제가 만든 table, index는 다 segment입니까?

extent는 tablespace생성시 정할수도있고 오라클에서 알아서 하기도 lmt, dmt 들이 있는것은 압니다.

extent는 한파일이 여러블록에 걸쳐있는 것을 말한다고 하는데. 꼭 한파일입니까?

걍 서로 관계없는 데이터들이 쭈욱...8개블락 잡고있다가 delete에 의해서 끊긴 블락이 또 관계있는 것이랑 잉어지고 있다면 extent가 아닙니까?

꼭 관련있는 것들로만 구성된것이 extent입니까?

block은 segment의 요소로서 block들이 뭉쳐지면 extent가 되는걸로 압니다.

이 블록은 freelist가 관리한다고 했습니다. freelist는 어디에 소속된놈입니까?

tablespace 헤더, 블록 헤더, 머 헤더들이 많은데 ..설명좀 부탁드리구요..

datafile 만들고,

제가 tablespace를 만들었자나여..

그러면 dmt(dictionary managed tablespace))로 된경우..

제 tablespace를 관리하는 dictionary table은 저와 다른 system tablespace에서 제가 만든 tablepsace를 관리하는것입니까?


답변 부탁드려요 지금 죽겠심더.

by 웅 [2008.12.10 14:16:38]
궁금하신 부분이 3가지인가요? 약간 난독증이라..^^;;
일단 오라클 아키텍쳐를 많이 읽어보시면 금방 이해하시리라고 생각합니다

1. segment란?
- 물리적으로 데이터를 저장할 수 있는 오브젝트를 말합니다.(쉽게 테이블 세그먼트, 인덱스 세그먼트, 클러스터 세그먼트...)

2. extent란?
- 연속된 블럭공간이 맞긴한데 delete한다고 연결이 끊어지거나하진 않아요.(한번 증가하면 일부러 줄여주는 일이 없다면 줄어드는 일이 없죠)
오라클이 왜 익스텐트라는 개념을 만들었는지 생각해보면 이해가 빠르겠네요.
예를 들어 테이블에 한번 입력될 때 10이란 공간이 필요한데.. 뭔가 들어오면 공간1을 증가 시키고 계속 들어오면 또 공간1을 증가시킵니다 계속... 이거 불편하죠. 그래서 미리 이 테이블은 한번들어올때 10정도의 연속된 공간을 할당하라고 지정을 합니다. 그러면 1번만 증가시키면 되겠죠. 공간할당이 나름 cost가 많이 들어가는거라 자주하는것을 피하고 싶어서 그런거지요.

3. dmt 의 동작
- 익스텐트 할당/해제되거나 블록에 쓰거나 다시 쓰거나 사용할 수 있게되면...시스템 data dictionary에 물어봅니다. 나 증가하려는데 증가해도돼?? 쿼리를 하는거죠...그렇게 증가하고나서..쓰기도하고..뭐만하면 물어보거나 쓰거나. 그런데 이렇게 물어보는것을 여기저기에서 하면서 경합이 발생하고 처리가 늦어져요.
그래서 data dictionary에 물어보지않고 가까운 데이터파일에 어떤블럭이 쓸 수 있는지 또는 쓰고 있는지 bitmap으로 표시를 했다가 저 멀리있는 시스템 dictionary view에 물어보지 않고 bitmap만보고 작업을 하는것이 lmt입니다.

생각나는대로 적어봤는데..잘못된 점은 지적을...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입