본문 바로가기

db11

[Indexing]B+ tree insertion insert할 노드가 full이면 split을 해야한다. 기존 노드가 k1 ... kn 이 있는 상황이라면 C(n/2)씩 나눈다. 나눈 노드에 대해서 부모 노드도 child 하나를 추가한다. 부모 노드의 새로운 key값은 node 2의 가장 작은 키 값이 된다. splitting non-leaf node 부모 노드도 full이면 부모 노드를 split 해야한다. 이런 상황이 root까지 올라갈 수도 있다. non-leaf node를 splitting할 때 key값 하나를 올려 보내고 node를 splitting 한다. 1. Adams를 검색하여 노드를 선택한다. 2. node가 full이기 때문에 split한다. 3. A B Ca Cr 을 나눈다. C(n/2)기준으로 나누면 2개씩 나눈다. 4. Ca를 .. 2020. 6. 5.
[Indexing]B+ tree index simple index 사이즈가 커지게 되면 메인 메모리에 올리기 어려워서 비효율적이다. 그렇기 떄문에 b+ tree나 hashing을 쓰게 된다. 학생 테이블이 있을 때 학번에 대해서 검색이 자주 일어나면 미리 학번에 대한 b+ tree를 disk에 만들어두고 사용할 수 있다. 이에 대한 hash file을 만들어 두어도 된다. B tree family = B tree, B+ tree, B* tree 가장 장점이 많은 트리가 B+ tree이고 가장 널리 사용된다. insert, delete 될 때 변화가 지역적으로 발생하는 것이 장점이다. simple index의 장점은 메인 메모리에 로드해서 사용할 수 있는데 크기가 커지면 그 비용이 커진다. 따라서 B+ tree가 대안이 될 수 있다. B+ tree.. 2020. 6. 5.
쿼리 처리 순서 Query 처리 순서는 다음과 같다. 1. from: 한 개 이상의 테이블을 이용하여 테이블을 만든다. -> 튜플을 하나씩 꺼낸다. ( from에서 alias한 것은 전체 범위에서 사용 가능) 2. where: 꺼내진 하나의 튜플을 기준으로 where 부분을 evaluate 한다. true일 경우 통과, false일 경우 누락 3. select: 테이블에서 보여질 원하는 칼럼만 지정한다. (이 때 칼럼을 alias 사용한 것은 이 시점부터 사용 가능) 4. group by: 5. having: 6. order by: 출력시 튜플을 정렬할 기준을 정한다.( select에서 선택한 칼럼 중 1개 이상이 옴) 7. limit : 출력할 튜플의 개수를 지정한다. (오프셋도 사용 가능) 2019. 10. 19.