Database/MySQL 5

[MYSQL] 3월에 태어난 여성 회원 목록 출력하기(프로그래머스/Level 2)

# 3월에 태어난 여성 회원 목록 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/131120 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ⭐ 코드 SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') FROM MEMBER_PROFILE WHERE (MONTH(DATE_OF_BIRTH) = 3) AND (GENDER = 'W') AND (TLNO IS NOT NULL) ORDER BY MEMBER_ID A..

Database/MySQL 2023.05.17

[MySQL] 클러스터 인덱스

클러스터 인덱스는 아래와 같이 3줄로 요약이 가능하다. 1. 클러스터 인덱스는 데이터 위치를 결정하는 키 값이다. 2. MySQL의 PK는 클러스터 인덱스다. 3. MySQL에서 PK를 제외한 모든 인덱스는 PK를 가지고 있다. 클러스터 키는 정렬된 자료구조이고 클러스터 키 위치에 따라서 데이터의 주소가 결정된다. 이를 다르게 말한다면 클러스터 키 순서에 따라서 데이터 저장 위치가 변경된다는 뜻이고 데이터 저장 위치가 변경된다는 것은 클러스터 키 삽입 / 갱신 시에 성능이슈가 발생한다. 인덱스를 만들 때마다 pk를 만들게 되므로 PK의 사이즈가 인덱스의 사이즈를 결정하게 된다. 🔎 클러스터 인덱스의 장점 1. PK를 활용한 검색이 빠름(특히 범위 검색) 2. 세컨더리 인덱스들이 PK를 가지고 있어 커버링..

Database/MySQL 2023.03.07

[MySQL] 인덱스 자료구조

인덱스의 핵심은 탐색 범위를 최소화 하는 것이다. 그렇다면 탐색이 빠른 자료구조들은 어떤 것이 있을까? Hash Map, List, Binary Search Tree 등이 있는데, 하나씩 간단하게 살펴보도록 하자. ✅ HashMap - 단건 검색 속도 O(1) - 범위 탐색 O(N) - 전방 일치 탐색 불가 Ex) like 'AB%' 해시맵은 키와 밸류가 있다. 그렇기 때문에 단건 검색 속도는 빠른편이며 상수 시간이 걸리게 된다. 범위 탐색에는 O(N) 시간이 걸리게 된다. ✅ List - 정렬되지 않은 리스트의 탐색은 O(N) - 정렬된 리스트의 탐색은 O(logN) - 정렬되지 않은 리스트의 정렬 시간 복잡도는 O(N) ~O(N * logN) - 삽입 / 삭제 비용이 매우 높음 정렬되지 않은 리스트는..

Database/MySQL 2023.03.06

[MySQL] 조회 최적화를 위한 인덱스 이해하기

컴퓨터 구조의 기본이 되는 모습을 표현하면 위와 같다. CPU가 데이터를 가지고 오거나 저장하기 위해서는 I/O 입출력 버스를 통하게 되고 메모리나 디스크, 모니터로 데이터를 보내게 된다. 여기서 데이터를 저장하기 위한 용도로 자주 사용되는 것은 메모리와 디스크이다. 그렇다면 메모리와 디스크의 차이점은 무엇일까? 메모리 디스크 속도 빠름 느림 영속성 전원이 공급되지 않으면 휘발 영속성이 있음 가격 비쌈 저렴 속도 측면에서 보면 메모리는 디스크에 비해서 훨씬 빠르다. 하지만 영속성 측면에서 보면 메모리는 전원이 공급되지 않으면 사라지게 된다. 반면에 디스크 같은 경우에는 전원이 공급되지 않더라도 데이터가 보존이 된다. 그렇기 때문에 영속성 측면에서 본다면, 결국 데이터베이스의 데이터는 디스크에 저장이 되어..

Database/MySQL 2023.02.04

[MySQL] MySQL 아키텍처

✅ MySQL 아키텍처 데이터베이스는 파일을 관리하는 서버이다. Client가 Server에게 데이터를 요청하는 것처럼 서버는 데이터베이스에 데이터를 요청하게 된다. Client는 JSON을 통해 Server에게 데이터를 요청하는 것과 같이 Server는 SQL을 통해서 MySQL 서버에 데이터를 요청하게 된다. 위 그림에서 MySQL엔진은 사람으로 비유하면 판단과 명령을 하는 두뇌라고 생각하면 되고, 스토리지 엔진은 판단을 수행하는 팔과 다리라고 보면 될 것 같다. ✅ MySQL엔진 MySQL엔진을 세부적으로 살펴보면 쿼리 파서, 전처리기, 옵티마이저, 쿼리 실행기로 이루어져 있다. 🔎 쿼리파서 SQL을 파싱하여 Syntax Tree를 만듬 이 과정에서 문법 오류 검사가 이루어짐 🔎 전처리기 쿼리파서에..

Database/MySQL 2023.02.03
728x90