본문 바로가기

DBA55

B-Tree가 왜 DB 인덱스(index)로 사용되는지 B-Tree 목록 보기 3/3 들어가며 해당 강의를 보고 정리한 내용입니다. B-Tree vs self-balancing BST 둘다 시간 복잡도가 동일한데 B-Tree가 왜 DB 인덱스(index)로 사용될까? 이유를 살펴보기 위해 일단 컴퓨터 시스템에 대해 간략하게 살펴보자 컴퓨터 시스템 Secondary storage 특징 데이터를 처리하는 속도가 가장 느립니다. 데이터를 저장하는 용량이 가장 큽니다. 데이터를 블록(block) 단위로 읽고 씁니다. 블록은 파일 시스템이 데이터를 읽고 쓰는 논리적인 단위로, 주로 2의 승수로 표현됩니다. 대표적인 블록 크기에는 4KB, 8KB, 16KB 등이 있습니다. 불필요한 데이터까지 읽어올 가능성이 있습니다. DB관점에서 지금까지 내용 정리 DB는 Second.. 2024. 2. 20.
[MYSQL] SQL 쿼리문 최적화 - 효율적인 쿼리를 위한 팁 SQL 쿼리문 최적화 목표 1. 성능 향상(개선) 2. 응답 시간 단축 3. 기술 자원 보존 4. 비용 절약 SQL 효율적인 쿼리를 위한 팁 1. Select only the columns you need. (필요한 컬럼만 선택하라) SELECT * FROM customers; 데이터베이스에서 쿼리를 실행할 때 필요한 컬럼만 선택한다. SELECT name,age,city FROM customers; 장점 1. 성능 향상 : 필요한 컬럼만 선택하면 데이터베이스 서버가 불필요한 작업을 수행하지 않아도된다. 컬럼의 개수가 적을수록 데이터 검색 및 처리 시간이 단축되고, 네트워크 부하가 감소한다. 쿼리의 실행 속도가 향상되고, 전체적인 시스템 성능이 향상될 수 있다. 2. 리소스 절약 : 필요한 컬럼만 선택.. 2024. 2. 20.
MySQL 쿼리 분석 part 1 - 성능 스키마의 9가지 필수 쿼리 메트릭 쿼리 분석(query analysis)의 목표는 느린 응답 시간의 해결이 아닌 ‘쿼리 실행’을 이해하려는 것이다. 느린 응답 시간을 해결하는 행위는 쿼리 분석 후 쿼리 최적화 과정에서 이루어진다. 성능 스키마(performance schema)는 다음의 9가지 필수 쿼리 메트릭을 제공한다. 1. 쿼리 시간 쿼리 시간(query time)은 가장 중요한 메트릭이다. 쿼리 시간에는 또 다른 메트릭인 잠금 시간(lock time)이 포함된다. MySQL에서는 성능 스키마로 수집되는 이벤트를 “시간이 소요되는 측정 정보를 수집할 수 있도록 구비된, 서버가 수행하는 모든 작업”으로 정의하며, 다음의 계층 구조로 구성된다. hierarchy of event ‘트랜잭션’은 모든 쿼리가 내부에서 수행되는 최상위 이벤트.. 2024. 2. 20.
[MySQL][Admin] 로그종류와 특징 ■ MySQL Log란 DBMS에서는 자신의 상태를 기록하기 위해 로그라는 방법으로 자신의 상태를 기록합니다. MySQL에서도 마찬가지로 여러가지 로그를 제공합니다. 시스템에 관련된 로그, 복제를 구성하기 위해 사용되는 바이너리 로그, 시스템 에러에 관련된 로그, SQL 성능에 관련된 로그까지 여러가지 로그들을 제공합니다. MySQL에서 제공되는 이 로그들에 대해서 자세히 한번 알아보겠습니다. ■ MySQL Log종류 MySQL에서 제공되는 로그들이 어떤것들이 있으며 어떤 역활을 하는지 간단히 알아보겠습니다. + Error Log mysqld의 시작, 운영, 종료때 나오는 문제들을 작성합니다. + General query log 클라이언트로부터 접속된 접속 내용과 수행된 SQL문법을 기록합니다. + Bi.. 2024. 2. 19.
[Database] 리플리케이션(Replication) vs 클러스터링(Clustering) 1. 리플리케이션(Replication)이란? [ 리플리케이션(Replication)이란? ] 리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식이다. 리플리케이션에서 Master Node는 쓰기 작업 만을 처리하며 Slave Node는 읽기 작업 만을 처리한다. 리플리케이션은 비동기 방식으로 노드들 간의 데이터를 동기화하는데, 자세한 처리 방법은 아래와 같다. [ 리플리케이션(Replication) 처리 방식 ] 위의 그림은 MySQL의 Replication 방식에 대한 그림이며 자세한 처리 순서는 아래와 같다. Master 노드에 쓰기 트랜잭션이 수행된다. Master 노드는 데이터를 저장하고 트랜잭션에 대한 로그를 파일에 기록한다.(BIN LOG) .. 2024. 2. 19.
[Real MySQL 8.0] 실행 계획 통계 정보와 실행 계획을 확인하는 방법 사용자의 쿼리를 최적으로 처리될 수 있게 하려면 쿼리의 실행 계획을 수립할 수 있어야 한다. 이에 가장 큰 영향을 미치는 정보는 바로 통계 정보다. 통계 정보 MySQL 5.7 버전까지 테이블과 인덱스에 대한 개략적인 정보를 가지고 실행 계획을 수립했다. 하지만 테이블 컬럼의 값들이 어떻게 분포돼 있는지에 대한 정보가 없기 때문에 실행 계획의 정확도가 떨어지는 경우가 많았다. 이러한 문제를 해결하기 위해 MySQL8.0부터는 데이터 분포도를 수집해 저장하는 히스토그램 정보가 도입됐다. 테이블 및 인덱스 통계 정보 비용 기반 최적화에서 가장 중요한 것은 통계 정보다. 통계 정보가 정확하지 않다면 엉뚱한 방향으로 쿼리를 실행할 수 있기 때문이다. 예를 들어, 1억 건의 레코드가 저장된 테이블의 통계 정보가 .. 2024. 2. 18.