profile
코딩하는 은행원 !
post-thumbnail

Join 개념 정리

오늘은 join에 대한 개념을 정리해본다. 중복 없는 열(column)들을 Join한다고 가정했을 때, 가장 일반적인 경우이다. A와 B를 Innter-Join하면 A와 B의 교집합을 얻을 수 있다. A와 B를 Outer-Join하면 A와 B의 합집합을 얻을 수 있다. 각각 단 하나의 열만 있는 두 개의 테이블이 있고, 데이터가 다음과 같다고 가정한다. (1, 2)는 A에만 있고, (3, 4)는 같이 있으며, (5, 6)은 B만 갖고 있다. Inner join: 교집합 select * from a INNER JOIN b on a.a = b.b; select a., b. from a, b where a.a = b.b; ![](https://images.velog.io/images/ryuhyewon/post/b2cd6dce-e560-4e96-896e-d7c8e1edaec1/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%8

2021년 12월 28일
·
0개의 댓글
·
post-thumbnail

다중 컬럼 인덱스

다중 컬럼 인덱스에서 선정 기준 B-Tree 인덱스의 다중 컬럼 인덱스는 컬럼 순서가 매우 중요하다. 순서에 따라 해당 인덱스를 활용하지 못 할 수도 있기 때문이다. > 반드시 왼쪽에 있는 컬럼이 사용되어야 그 오른쪽의 컬럼도 사용될 수 있다. 그럼 어떤 기준으로 순서를 정하는게 좋을까? (단일 컬럼 인덱스에도 적용되는 해당되는 이야기) Cardinality(기수성) 카디널리티는 유니크한 값의 개수를 말한다. cardinality(기수성)가 높은 컬럼이 앞에와야 검색 효율이 좋다. 기수성이 높은 컬럼이 앞에오고 컬럼이 범위를 크게 줄여주고, 낮은 컬럼이 뒤에오면 필터링 조건으로 사용된다. Selectivity (선택도) 선택도란 얼마나 값을 잘 가져오냐를 말하는데, 1이면 유니크하다는 의미다. 20~25% 를 넘어서면 그 인덱스를 사용하지 않는게 좋다고 한다. Cardinality의 (NAME, GENDER) 인덱스는 100명중 1

2021년 12월 26일
·
0개의 댓글
·
post-thumbnail

B-tree vs B+tree

B-tree 인덱스를 이루고 있는 자료구조의 일종이다. B-tree에서 'B'는 정확히 어떤 의미라고 밝혀진 바는 없다. 아마 'Balanced'를 의미하는 'B'가 아닐까라는 추측만 있다. MySQL의 DB engine인 InnoDB는 B+tree로 이뤄져있는데, B-tree의 확장된 개념이다.* B-Tree는 데이터베이스의 인덱싱 알고리즘 가운데 가장 일반적으로 사용되고, 또한 가장 먼저 도입된 알고리즘입니다. 하지만 아직도 가장 범용적인 목적으로 사용되는 인덱스 알고리즘이다. B-Tree에는 여러 가지 변형된 형태의 알고리즘이 있는데, 일반적으로 DBMS에서는 주로 B+-Tree 또는 B-Tree가 사용된다. 인터넷상에서 쉽게 구할 수 있는 B-Tree의 구조를 설명한 그림 때문인지 많은 사람들이 B-Tree의 "B"가 바이너리(이진) 트리라고 잘못 생각하고 있다. 하지만 B-Tree의 "B"는 "Binary(이진)"의 약자가 아니라 "Balanced"를 의미한

2021년 12월 26일
·
0개의 댓글
·
post-thumbnail

index 기능

index 사용하게 된 배경..Full table scan row의 값을 순차적으로 scan하며 값을 비교한다. full table scan은 가장 느린 scanning 방법이며 많은 자료가 담긴 disk를 읽기 위한 I/O를 사용하며 자원을 잡는다. 속도도 느리고 자원도 많이 사용하는 방법이다. 이를 해결하기 위해서 database index 기능을 제공한다. DB Index란? 읽기 성능을 향상시키기 위한 일종의 자료구조이다. index는 관련된 테이블과 별도로 저장되며 index로 설정한 컬럼값이 변경되거나 추가되면 index도 업데이트가 동시에 된다. index에 주로 사용된느 자료구조는 b-tree 알고리즘이다. primary key에는 database가 자동으로 index기능을 설정하여 관리한다. Clustered Index 물리적으로 데이터를 정리하며 index 테이블은 하나만 존재한다. 데이터 페이지가 물리적

2021년 12월 20일
·
0개의 댓글
·
post-thumbnail

파티션 장단점

파티션 논리적인 데이터 element를 다수의 entity로 쪼개는 행위. 큰 테이블이나 인덱스를 파티션 단위로 분할하는 것. 파티션 사용하게 된 배경 서비스의 크기가 커지고 데이터 규모가 커면서 DBMS의 용량과 한계, 성능이 저하되면서 테이블을 파티션이라는 단위로 나뉘어 관리하는 파티셔닝 기법이 등장함. ->소프트웨어적인 데이터베이스 분산 처리가 가능해졌다 그렇다면 파티션 목적은? 성능면에서 특정DML과 쿼리 성능을 향상시킨다. 대용량 write 환경에서 효율적이다. full scan에서 데이터 접근 범위를 감소시켜서 성능을 향상시킨다. 가용성면에서 물리적인 파티셔닝으로 전체 데이터 훼손 가능성이 줄어든다. 파티션 별로 독립적인 백업과 복구가 가능하다. 관리적인 면에서도 큰 테이블을 줄일 수 있어서 용이하다. 파티션의 장점 파티션 단위 백업, 추가, 삭제 , 변경이 가능하다. 파티션 단위 조회 및 DML를 수행함으로

2021년 12월 20일
·
0개의 댓글
·