BackEnd/DB
-
[DB] 인덱스를 걸었는데 느린 이유BackEnd/DB 2024. 6. 13. 16:25
0. 인덱스가 느리다는 커뮤니티 글1. 문제상황최근에 커뮤니티를 보다가 DB관련 질문을 확인했다. 특정 날짜 기준 이상을 넘어가면 인덱스를 사용해도 느리다는 것이다.근데 7일단위에서 걸면 빠르고 8일 이상인경우는 느리다는 것이다.보고 아래와 같이 답글을 달았다.2. 추정 책에서 경험했던 그대로 인덱스에 대한 기초에 대해서 설명해 주었다. 정확하게는 실행계획보다는 트레이스를 보고싶었는데 작성자가 올리지않았다.3. 해결방안작성자가 맞는것 같다는데 그럼 해결방안이 궁금하다고 질문을 남겼다. 1. 인덱스1. 정의우선 인덱스에 대해서 다시한번 짚고 넘어간다.인덱스는 사전에 앞에 목차 처럼 찾기위한 단어를 쭉 나열해둔 것일뿐이고 실제 데이터는 목차에서본 단어의 페이지 번호로 찾아가야 알 수 있다. 그렇기 때문에 ..
-
[DB] 친절한 SQL 튜닝 - 인덱스BackEnd/DB 2024. 6. 12. 16:16
인덱스란사전의 앞을 보면 가,나,다,라...등으로 대분류한 페이지 같이 단어를 찾기 위해서 모든 책을 보지 않고 분류된 페이지를 토대로 원하는 단어를 쉽게 찾는 방법과 같다. 인덱스 튜닝의 두가지 핵심요소학생명부를 갖고 사람을 찾는데 시력이 1.0~1.5이고 이름이 홍길동인 일부 사람만 찾고싶다.여기서 인덱스를 사용한 경우와 테이블 풀 스캔과 같이 학생부를 처음부터 전체 찾아보는 경우를 본다. 1. 인덱스 스캔1. 이름과 시력을 순서로 분류한 학생명부 ( 인덱스 활용 )이미 분류를 해둔 상태기 때문에 홍길동 + 2.0인 경우 까지 로우를 읽고 이전까지의 정보만 리턴한다.이름시력학년-반-번호강수지1.54-2-27김철수0.53-2-13 ......홍길동1.02-6-17홍길동1.53-6-30홍길동2.01-7-..
-
[DB] 친절한 SQL 튜닝 - 속도, 저장 구조BackEnd/DB 2024. 6. 10. 17:10
0. 속도RDB의 속도가 느린 주 원인 DB가 느린 이유는 디스크 I/O로 인한 문제 때문이다.우리가 CS를 공부할적에 배운 메모리 계층 구조를 보게 되면 CPU와 하드디스크 간에 속도차이 간극은 매우 심하다는 것을 알 수 있다. 이 속도 개선을 위해서 메모리를 두어 자주 필요한 정보는 하드디스크단 까지 가지않고 메모리에 올려둔 정보로 읽게 되는데 일반적인 RDB와 REDIS의 차이도 이것과 유사한 상황이라고 볼 수 있다. CPU에서 실행시킨 작업이 DB 프로세스에서 I/O (input / output) 속도로 인해서 잠시 CPU를 반환하고 프로세스 작업이 멈칫하는데 이과정에서 속도 손실이 꽤 일어난다고 볼 수 있다. 생각해보면 엘라스틱서치의 분산 데이터 구조에서 작은 루씬단위의 검색엔진은 최대한 fsy..
-
[DB] 친절한 SQL 튜닝 - SQL 처리 과정, 실행 계획BackEnd/DB 2024. 5. 28. 13:02
0. 정의SQL : Structured Query Language의미 : 구조적 질의 언어 우리가 흔히 사용하는 SQL문인 SELECT 컬럼명 FROM 테이블명 WHERE 조건문 방식의 질의 언어이다.우리가 적은 이 문장은 절차적으로 순서에 맞게 해석이 될 수 밖에 없다.해석을 해주는 방법은 프로시저(함수)를 통해서 진행이 되어야하는데 그 프로시저를 만들어주는 DBMS 내부 엔진이 SQL 옵티마이저다.DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행가능한 상태로 만드는 전 과정을 SQL 최적화라고 한다. 1. SQL 실행 과정SQL을 실행하기 전 최적화 과정 1. SQL 파싱사용자로부터 전달받은 질의문을 파서가 파싱진행Syntax(문법) 오류 체크파싱 트리 생성(각 SQL문의 구성요소를 파악해서 트리..