본문 바로가기

전체 글212

도커에 대한 기본 이해 Docker란? 다양한 운영체제와 시스템 환경 상에서, 서버 셋업을 위한 작업이 각각 다르고 복잡함. 도커는 컨테이너 기반의 가상화 플랫폼으로, 컨테이너 상에 서버를 셋업해놓을 수 있음. 따라서 기반 환경이 다르더라도, 언제든 해당 컨테이너를 실행만 하면, 동일한 서버 셋업이 가능함. Docker Internals docker는 리눅스 컨테이너부터 시작된 기술임. 내부 기술에 대해 가볍게라도 이해하면 훨씬 깊은 레벨의 이해가 가능함 LXC(LinuX Containers) 단일 컴퓨팅 시스템에 설치된 리눅스 운영체제 상에서, 다른 영역과 완전히 분리된 별도의 리눅스 시스템을 운영할 수 있는 리눅스 커널 기술 리눅스 운영체제 레벨에서 영역과 자원 할당 (CPU, 메모리, 네트워크) 등을 분리하여, 마치 별도.. 2023. 6. 4.
조회 최적화를 위한 인덱스 이해하기 - 08. 인덱스를 다룰 때 주의해야 할 점 1. 인덱스 필드 가공 인덱스 필드에 가공이 들어가면 인덱스로 찾을 수 없음 // age는 int 타입 SELECT * FROM Member WHERE age*10 = 1 // 10을 곱하면 검색이 안됨 // age는 int 타입 SELECT * FROM Member WHERE age = '1' // type을 잘못 넣어준 경우 2. 복합 인덱스 왼쪽처럼 1개의 인덱스가 아닌 오른쪽처럼 복합 인덱스가 되면? 우선적으로 과일 컬럼이 정렬 과일 컬럼이 정렬되면 그 안에서 원산지 컬럼이 정렬됨 따라서 복합 인덱스에서 중요한 것은 선두 컬럼이다. 데이터의 식별 정도가 높은 값이 선두에 있는 것이 좋음 3. 하나의 쿼리에는 하나의 인덱스만 하나의 쿼리에는 하나의 인덱스만 탄다. 여러 인덱스 테이블을 동시에 탐색하.. 2023. 6. 4.
조회 최적화를 위한 인덱스 이해하기 - 04. 클러스터 인덱스 클러스터 인덱스 3줄 요약 클러스터 인덱스는 데이터 위치를 결정하는 키 값 MySQL의 PK는 클러스터 인덱스 MySQL에서 PK를 제외한 모든 인덱스는 PK를 가지고 있음 클러스터 인덱스는 데이터 위치를 결정 클러스터 키의 중요한 핵심 : 정렬을 이루고 정렬된 순서에 따라서 데이터의 주소가 결정되는 것 클러스터 키 4번이 Insert 정리 클러스터 키의 위치에 따라 데이터의 주소가 결정됨 클러스터 키 순서에 따라서 데이터 저장 위치가 변경된다 → 클러스터 키 삽입/갱신시에 성능이슈 발생 MySQL의 PK는 클러스터 인덱스 PK 순서에 따라서 데이터 저장 위치가 변경됨 → PK 키 삽입/갱신 시에 성능 이슈 발생 PK로 Auto Increment vs UUID 찾아보기 MySQL에서 PK를 제외한 모든 .. 2023. 6. 4.
조회 최적화를 위한 인덱스 이해하기 - 03. 인덱스 자료구조 인덱스의 핵심 : 탐색(검색) 범위를 최소화 하는 것 검색이 빠른 자료구조들은 어떤 것이 있을까? Hash Map, List, Binary Search Tree Hash Map 단건 검색 속도 O(1) 그러나 범위 탐색은 O(N) 전방 일치 탐색 불가 ex) like ‘AB%’ → hash map은 꺼내서 일일이 다 비교해보아야 함 List 졍렬되지 않은 리스트의 탐색은 O(N) 정렬된 리스트의 탐색은 O(logN) 정렬되지 않은 리스트의 정렬 시간 복잡도는 O(N) ~ O(N*logN) 삽입 / 삭제 비용이 매우 높음 → 중간 값을 삭제하기 위해서는 뒤에 있는 것을 모두 옮겨야 함 Tree 트리 높이에 따라 시간 복잡도가 결정됨 트리의 높이를 최소화하는 것이 중요! 한쪽으로 노드가 치우치지 않도록 균형.. 2023. 6. 4.