Skip to content

Instantly share code, notes, and snippets.

[MySQL] Index [1] - 인덱스 사용 배경, 엔덱스와 디스크 I/O

| 인덱스 사용 배경

image [ 그림 1 ]

image

OAuth 2.0


| Giub OAuth APP 등록

image [ 그림 1 ]

Settings/Developer settings 에서 [ 그림 1 ] 의 OAuth Apps 에서 Github OAuth APP 을 생성할 수 있습니다.

[Java] Wrapper Class, Boxing, Unboxing

기본형 타입 (int, boolean 등)을 참조형 타입으로 나타낸 것이 Wrapper Class 이다. 기본형 변수를 객체로 표현할 때 사용한다. 이 때 기본형 타입을 Wrapper Class 로 변환하는 과정을 Boxing 이라 하고 그 반대 과정을 Unboxing 이라 한다.

image [ 그림 1 ]

// Boxing (int to Integer) 
Integer i = Integer.valueOf(1); 

[Spring MVC] @RequestBody 동작 원리 [1] - Http Message Converter

@RequestBody 는 클라이언트 측에서 보낸 데이터를 (Java) 오브젝트로 만들어주는 역할을 담당한다. 이번 글에서는 직렬화 / 역직렬화의 개념과 Spring MVC 에서 직렬화 과정을 지원하는 Http Message Converter 에 대해 다룰 예정이다.


| 직렬화 / 역직렬화

본론을 다루기 전에 먼저 배경 지식인 직렬화 / 역직렬화 에 대해서 간단히 이해하고 넘어가보자.

image

[Java] How is a Java Program executed [3-1] JVM 구성 요소 - Runtime Data Area

지난 글에서는 JVM 의 구성 요소 중 .class 파일을 읽어 메모리의 메서드(Method) 영역에 로드하는 클래스 로더에 대해 알아봤다. 사실 클래스 로더에서 다룬 글에서 이미 오늘 다룰 메모리에 관한 내용이 포함되어 있었는데, 이번 글에서는 JVM 메모리에 대해 보다 자세히 다룰 예정이다.

실행 파일 형태의 프로그램이 실행 중 상태에 있을 때 우리는 이를 프로세스(Process) 라 부른다. 이를 또 메모리 관점에서 설명하면 메인 메모리(RAM)에 프로세스가 올라가있는 상태로도 설명할 수 있다.

image

[ 그림 1 ]

[ 그림 1 ] 는 프로세스가 메모리에서 어떻게 관리되는지를 보여준다. 여기서 말하고 싶은 핵심은 프로그램이 실행될 때 메모리에서 해당 프로세스를 관리하기 위해 여러 정보들이 올라가 있다는 점이다.

[Java] How is a Java Program executed [2-1] JVM 구성 요소 - Class Loader

지난 글에서는 JVM 과 실행 및 개발 환경과 관련해 JRE, JDK 을 순서대로 알아봤다.

image

[ 그림 1 ]

이번 글에서는 JVM 의 구성 요소 세 가지 중 하나인 클래스 로더를 다룰 예정이다. 참고로 JVM 은 [ 그림 1 ] 에서 볼 수 있듯이 클래스 로더 시스템 + 런타임 메모리 영역 + 실행 엔진으로 구성되어 있다.


[Java] How is a Java Program executed [1] - JVM, JRE, and JDK

자바로 작성된 프로그램은 어떻게 실행될까? JVM 을 중심으로 앞 질문에 대한 답을 알아가보자.

| JVM (Java Virtual Machine)

image

[ 그림 1 ]

JVM(Java Virtual Machine) 는 자바로 작성된 프로그램이 돌아가도록 하는 프로그램이다. 개발자가 이해할 수 있는 수준의 .java 파일을 컴파일 하면 .class 가 생성되는데, 컴파일 이후부터는 이를 바이트 코드라고 한다. 이 바이트 코드는 JVM 위에서 동작한다.

[MySQL] Index [3] - Index(B+Tree) 특징 및 Index 사용 관련 고려사항

이전 글에서 Index 자료 구조 중 하나인 B+Tree 를 다뤘다. 이번 글에서는 B+Tree 기반의 Index 가 가지는 특징과 사용 시 고려할 점들에 대해서 다룰 예정이다.


B+Tree 연산 (Insertion, Deletion, Search)

insert, update, delete (Command)의 성능을 희생하고 대신 select (Query)의 성능을 향상시킵니다.

[MySQL] Index [2] - Index 자료 구조 (B+Tree)

이전 글에서 Index 사용 배경, Index 자료 구조 중 하나인 Hash Table 을 다뤘다. 이번 글에서는 또 다른 자료 구조 중 하나인 B+Tree 를 다룰 예정이다.

B-Tree 는 데이터베이스의 인덱싱 알고리즘 가운데 가장 일반적으로 사용되고, 가장 먼저 도입된 알고리즘이다. 하지만 아직도 가장 범용적인 목적으로 사용되는 인덱스 알고리즘이다. B-Tree 에는 여러 가지 변형된 형태의 알고리즘이 있는데, 일반적으로 DBMS 에서는 주로 B+Tree 또는 B*Tree 가 사용된다.

본론 내용을 이해하기 위해서는 먼저 B-Tree 와 B+Tree 의 차이에 대해 이해하고 있어야 하는데, 해당 내용은 여기 에서 확인할 수 있다. B+Tree 가 B-Tree 와 다른 점은 아래 두 가지로 정리할 수 있다.

① 루트 노드를 포함한 내부 노드는 데이터를 저장하지 않는다. 

[MySQL] Index [1] - 인덱스 사용 배경, 인덱스 자료구조 (Hash Table)

| DB Index 사용 배경

DB Index 에 대한 내용을 알기 전에 Index 사용 배경에 대해서 먼저 생각해보자.

image [ 그림 1 ]

[ 그림 1 ] 은 MySQL Engine Architecture 를 표현한 것인데, 여기서 Index 와 관련하여 주목할 점은 Storage Engine 이다.