54

[Real MySQL 8.0] 인덱스 살펴보기

인덱스란?인덱스는 컬럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 삼아 주어진 순서로 미리 정렬해두고, 원하는 결과에 대해 빠르게 찾아갈 수 있도록 한다. 인덱스는 책의 색인을 통해, 알아낼 수 있는 페이지 번호는 데이터 파일에 저장된 레코드의 주소에 비유되고, 해당 페이지의 내용은 데이터 파일에 비유 가능하다. 인덱스도 컬럼의 값을 주어진 순서로 미리 정렬해서 보관하므로, 원하는 결과를 최대한 빠르게 찾아갈 수 있다. 인덱스 사용 목적DBMS에서 테이블의 모든 데이터를 검색해서 원하는 결과를 가져오려면 시간이 오래 걸린다. 따라서 인덱스를 생성해놓고 이 시간을 단축시키는 것이 목적이다. 즉, 데이터의 읽기 속도를 높이는 기능으로 볼 수 있다. 읽기 속도는 향상되지만 데이터의 추가나 삭제 시..

책/REAL MYSQL 8.0 2025.05.08

MySQL InnoDB의 Adaptive Hash Index

최근 DB에 대해 부족함을 느껴, Real MYSQL 8.0 책을 읽고 있다.Real MYSQL 8.0의 Adaptive Hash Index에 대해 더 궁금하여, 아래 글을 보고 정리하였다.https://tech.kakao.com/posts/319 MySQL InnoDB의 Adaptive Hash Index 활용 - tech.kakao.com개요 MySQL의 InnoDB에는 Adaptive Hash Index 기능이 있는...tech.kakao.com InnoDB B-Tree 인덱스MySQL의 InnoDB의 대표적인 인덱스는 B-Tree이다.데이터는 Primary Key 순으로 정렬되어 관리되고, Secondrary Key는 인덱스키+PK를 조합으로 정렬특정 데이터를 찾기 위해서는 Secondrary K..

책/REAL MYSQL 8.0 2025.05.04

4장 함수형 인터페이스

함수형 인터페이스(Functional Interface)단 하나의 추상 메서드만을 가진다.함수를 값으로 취급하기 때문에 어떤 함수를 호출할 때, 함수 자체를 파라미터로 전달가능하다.단 하나의 추상 메서드를 가지는 인터페이스 예제public class Example { public static void main(String[] args) { List cryptoCurrencies = SampleData.cryptoCurrencies; Collections.sort(cryptoCurrencies, new Comparator () { @Override public int compare(CryptoCurency c1, CryptoCurrency cc2) { return cc1.getUnit(..

3장 Blocking I/O vs Non-Blocking I/O

Blocking I/O하나의 스레드가 I/O에 의해서 차단되어 대기하는 것CPU 대비 많은 수의 스레드를 할당하는 멀티스레드는 문제점 발생컨텍스트 스위칭으로 인한 스레드 전환 비용 발생컨텍스트 스위칭기존에 실행되고 있는 프로세스의 정보를 PCB라는 공간에 저장되고, 다시 실행해야 할 프로세스 정보를 PCB로부터 불러오는 과정을 컨텍스트 스위칭이라고 한다.컨텍스트 스위칭이 많으면 많을수록 CPU 전체 대기 시간은 길어지기 때문에 성능은 저하된다.과도한 메모리 사용으로 오베헤드 발생 가능성새로운 스레드가 생성되면 JVM에서는 해당 스레드를 위한 스택 영역의 일부를 할당하며, 스래드 정보는 개별 프레임에 저장서블릿 컨테이너 기반의 Java 웹 애플리케이션은 요청당 하나의 스레드를 할당한다. 각각 하나의 스레드..

2장 리액티브 스트림즈

2.1 리액티브 스트림즈(Reactive Streams)개발자가 리액티브한 코드를 작성하기 위해서는 코드 구성을 용이하게 해주는 리액티브 라이브러리가 필요하다.리액티브 라이브러리를 어떻게 구현할지 정의해 놓은 별도의 표준 사양이 리액티브 스트림즈이다.데이터 스트림을 Non- Blocking이면서 비동기적인 방식으로 처리하기위한 리액티브 라이브러리의 표준사양리액티브 스트림즈를 구현한 구현체로 RxJava, Reactor, Akka Streams, Java9 Flow APi 등이 있다.2.2 리액티브 스트림즈의 구성 요소리액티브 스트림즈를 통해 구현해야 하는 API 컴포넌트에는 Publisher, Subscriber, Subscription, Processor가 있다.Publisher: 데이터를 생성하고, ..

1장 리액티브 시스템과 리액티브 프로그래밍

리액티브 시스템(Reactive System)이란?어떤 이벤트나 상황이 발생했을 때, 반응을 해서 그에 따라 적절하게 행동하는 것을 의미한다.클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화한다.리액티브 선언문MEANS: 리액티브 시스템에서 주요 통신 수단으로 무엇을 사용할 것인지 표현한 것입니다.비동기 메시지 기반의 통신을 통해서 구성요소들 간의 느슨한 결합, 격리성, 위치 투명성 보장위치 투명성: 사용자 및 응용 프로그램이 데이터가 어디에 저장되어 있는지에 대한 세부 정보를 숨긴다.FORM: 메시지 기반 통신을 통해서 어떠한 형태를 지니는 시스템으로 형성되는지를 나타낸다. (탄력성, 회복성)탄력성(Elastic): 시스템의 작업량이 변화하더라도 일정한 응답을 유지하는 것을 의미한다.응답성..