DB

    인덱스 알고리즘 B tree 간단 개념 정리

    B Tree(Balanced Tree) - 균등한 응답속도 유지를 위하여 Leaf Level의 좌우균형을 유지하는 트리 - 데이터베이스와 파일시스템에서 주로 사용되는 트리 자료구조(비선형 자료구조)의 한 종류 - 이진트리를 확장하여 자식 노드의 최대 숫자가 2보다 큰 트리 구조 - 최악의 경우에도 O(longN)의 사간복잡도의 검색 성능 종류 B 트리 높이 균형 m-원 탐색트리 Leaf 노드가 한쪽 방향으로 쏠리는 현상이 적음 노드의 삽입과 삭제시 트리의 균형을 유지하기 위해 복잡한 연산(재분배, 합병)이 필요 1/2 이상 차면 노드 분열 B+트리 Leaf node간 linked list가 구성되어 순차 탐색의 효율이 좋음 leaf node에만 데이터가 있기 때문에 모든 데이터에 도달하는 비용이 거의 같..

    인덱스 개념 간단 정리

    인덱스란 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아 보는것은 오랜 시간이 걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 index는 책의 색인과 같다. 단순히 생각하면 어떤 데이터를 찾을 때 전체를 확인하는 방식(Full Scan)을 해서 오래 걸리지 않도록 인덱스를 이용한다고 생각하면 된다. 하지만 DB 인덱싱은 새로운 테이블을 생성하기 때문에 별도의 저장공간이 발생하고, 인덱스 테이블은 기본적으로 sorting이 된 상태기 때문에 새로운 데이터를 삽입하거나 수정할때 오히려 더 성능이 안좋아진다. 인덱스는..

    database connection pool(dbcp)

    커넥션 풀이란 DB와 미리 연결(connection)을 해놓은 객체들을 웅덩이(pool)에 저장해두었다가 클라이언트 요청이 오면 커넥션을 빌려주고, 볼일이 끝나면 다시 커넥션을 반납받아 pool에 저장하는 방식을 말한다. ​ 일반적으로 한명의 유저가 서비스에 접속 하려고 하면 DB에 접근하기위해서 커넥션을 생성하고 유저에게 해당 커넥션을 주었다가 유저가 접속을 종료하면 해당 커넥션을 끊어야한다. 이러한 경우 유저가 많아지면 많아질수록 커넥션을 생성/끊기를 많이 하게 되는데 이때 커넥션 풀을 사용하게 되면 미리 연결을 맺고 있는 커넥션들을 유저에게 주었다가 반납받아서 커넥션을 생성/끊기라는 불필요한 과정을 거치지 않아도 되서 성능 향상을 기대 할수 있는것이다. ​ 커넥션 풀을 사용할때는 유저의 수에 맞게 ..