B-Tree Index (2)
MySQL 2022. 3. 23. 01:28

들어가며 지난 글인 B-Tree Index(1) 에서는 네 부분에 대해 알아보았다. (1) B-Tree의 구조 (2) B-Tree Index를 사용해 레코드를 읽는 방법 (3) B-Tree Index의 추가, 삭제, 변경 (4) B-Tree Index를 사용한 검색 이 글에서는 B-Tree Index 사용에 영향을 미치는 요소에 대해 알아보겠다. B-Tree Index 사용에 영향을 미치는 요소 Page InnoDB 엔진에서 데이터를 저장하는 기본 단위이다. Block이라고도 한다. 디스크 모든 I/O 작업의 최소 작업 단위다. 버퍼 풀에서 데이터를 버퍼링하는 기본 단위이기도 하다. Page의 기본값은 16KB이다. Index도 페이지 단위로 관리되며 루트노드, 브랜치노드, 리프노드를 구분하는 기준 또한..

B-Tree Index (1)
MySQL 2022. 3. 23. 00:23

들어가며 지난 글 Index 에서는 인덱스의 특징과 분류에 대해 알아보았다. 이번 글에서는 다음 네 부분에 대해 다루겠다. (1) B-Tree Index의 구조 (2) Index를 통한 레코드 읽기 방법 (3) Index 추가/삭제/변경 (4) Index를 이용한 검색 알아보기 B B-Tree의 B는 무엇의 약자일까? Binary 라고 생각하기 쉽지만, B-Tree는 이진트리가 아니다. 여기서 B는 'Balanced'의 약자이고, B-Tree의 자식노드 개수는 가변적이다. B-Tree Index는 column 값을 변경하지 않고 저장해 정렬된 상태로 유지한다는 데에서, Balanced의 의미를 유추할 수 있다. 구조 (1) Root Node (2) Branch Node (3) Leaf Node : 레코드..

Index
MySQL 2022. 3. 23. 00:03

들어가며 인덱스는 어렴풋이 개념과 사용방법 정도만 알고 있었는데, 이번에 발표를 준비하면서 자세히 알아보게 됐다. 이 글에서는 인덱스에 대해 간단히 알아보고 분류한 뒤 가장 일반적으로 사용되는 B-Tree Index에 대해 정리하겠다. 인덱스란? 인덱스는 쿼리의 성능에서 빼놓고 생각할 수 없는 개념이다. 인덱스에 대해 간단히 알아보자. 특징 컬럼의 값을 key, 레코드가 저장된 주소를 value로 하는 쌍으로 저장되며, 항상 정렬된 상태로 유지된다. 정렬된 상태로 유지해야 하기 때문에 INSERT, UPDATE, DELETE에 많은 비용이 들지만, SELECT 작업 속도를 높이기 위해 사용된다. 즉 인덱스는 저장 성능을 얼만큼 희생하여 읽기 속도를 높이는 방법이므로, 사용에 있어 주의해야 한다. 인덱스를..

GC Algorithms
Java 2022. 3. 21. 15:44

들어가며 프로그램이 실행되면 하나 이상의 객체가 생성된다. 더이상 필요하지 않게 된 객체는 어떻게 처리할까? Java에서는 프로그래머가 명시적으로 메모리를 지정해 할당하거나 해제하지 않기 때문에, Garbage Collector가 더이상 사용되지 않는 객체를 찾아서 메모리로부터 삭제해야 한다. JVM이 GC 실행을 위해 application의 실행을 잠깐 멈추는 것을 'stop-the-world'라고 한다. stop-the-world가 발생하면 GC가 실행되는 스레드를 제외한 나머지 스레드는 모두 작업을 멈춘다. 어떤 GC 알고리즘을 사용하더라도 stop-the-world가 발생하기 때문에 이 시간을 줄이기 위해 GC 튜닝이 수행되기도 한다. 지금부터는 어떤 방법들로 Garbage Collection 될..

BufferedReader와 Scanner
Java 2022. 3. 21. 11:30

BufferedReader 정의 Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines. (BufferedReader : https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html) BufferedReader는 character input stream으로부터 문자를 읽는다. 문자와 배열, 문자열 한 줄을 효율적으로 읽을 수 있도록 문자를 버퍼링한다. 생성자 사용하는 방법 BufferedReader br = new BufferedReader(new I..