본문 바로가기

index

[DB] Single Block I/O vs Multi Block I/O SQL 서적을 읽던 중 Single Bolck I/O와 Multi Block I/O에 관한 설명을 접하게 되었고 지금까지 개발을 하면서 지금까지 생각해 왔던 것과는 다른 새로운 개념을 알게 되어 글로 작성하였다. DB에서 I/O란? - SQL이 느려지는 이유는 보통 디스크 I/O 때문이라고 보면 된다. - 책에서는 I/O = 잠(Sleep)이라고 표현했다. - OS 또는 I/O 서브시스템이 I/O를 처리하는 동안 프로세스는 잠을 자기 때문이다. 즉, I/O를 처리하는 동안 다음 동작을 행할 수 없으니 텀이 발생하게 되고 이것을 "잠"이라고 표현한 것 같다. Single Block I/O? - 한 번에 한 블록씩 요청해서 메모리에 적재하는 방식 - 인덱스가 보통 Single Block I/O 방식으로 디스.. 더보기
[ SQL ] B-Tree 와 Index B-Tree, B-+Tree 란? ( Balanced Tree ) - 2진 트리의 확장, 리프 레벨의 좌우 균형을 유지 - 세 가지 종류로 나눠지며, 일반적인 DBMS에서는 주로 B-+Tree와 B-*Tree를 사용 - B-트리의 창시자인 루돌프 바이어는 ‘B’가 무엇을 의미하는지 따로 언급하지 않았다. 가장 가능성 있는 대답은 리프 노드를 같은 높이에서 유지시켜주므로 균형잡혀있다는 뜻으로 (balanced)의 B라는 것이다. 혹은, 그가 일했던 보잉 과학 연구소(Boeing Scientific Research Labs)에서의 ‘B’를 의미하는다는 의견도 있다. B-Tree 2진트리는 자식노드가 2개다 하지만, B-Tree는 자식노드의 최대숫자가 2보다 크다. ( 키가 n개 있으면, 이 노드의 자식은 n.. 더보기
[mssql] Clustered(클러스터), NonClustered(넌 클러스터) Clustered 테이블에 하나만 생성될 수 있다. ( 데이터가 정렬되어야 한다는 조건이있기때문에 ) 테이블을 인덱스로 지정한 열에 맞춰서 자동정렬 된다. ( 물리적으로 재배열 ) 하나의 클러스터 인덱스만 생성할 수 있으므로, 신중하게 생성하여야 한다. PK로 검색하기 때문에 검색 속도가 빠르다. insert, delete 가 빈번한 컬럼은 클러스터를 잘 사용하지 않는다. NonClustered 테이블 당 여러개 생성가능 테이블을 재배열 하지 않는다. 저장 공간이 많이 소요되고 구조가 복잡하다는 단점이있다. 더보기