에러해결 & 최적화/DB

옵티마이저(영어: Optimizer)는 데이터베이스 관리 시스템 (DBMS)에서 쿼리를 처리할 때 최적의 실행 계획을 결정하는 역할을 하는 부분입니다. DBMS는 사용자로부터 요청받은 SQL 쿼리를 어떻게 처리할지 결정하는 과정에서 옵티마이저를 사용합니다. 옵티마이저의 주요 목표는 다음과 같습니다: 성능 최적화: 목표: 쿼리를 가장 빠르게 실행하여 사용자에게 빠른 결과를 제공하는 것. 예시: 아래의 쿼리는 users 테이블에서 사용자 이름이 "John"인 레코드를 찾는 쿼리입니다. 옵티마이저는 인덱스를 사용하여 레코드를 빠르게 찾습니다. SELECT * FROM users WHERE name = 'John'; 2. 리소스 최적화: 목표: 제한된 컴퓨터 자원을 효율적으로 활용하여 다른 작업에 영향을 주지 ..
데이터베이스 성능 최적화는 애플리케이션의 성능을 향상시키는 중요한 부분 중 하나입니다. 쿼리 실행 계획 확인은 데이터베이스 쿼리가 어떻게 실행되는지 이해하고, 문제를 식별하고 해결하는데 도움이 됩니다. 이 블로그 글에서는 쿼리 실행 계획 확인에 대해 자세히 알아보겠습니다. 쿼리 실행 계획이란 무엇인가? 쿼리 실행 계획은 데이터베이스 관리 시스템 (DBMS)이 쿼리를 처리하는 방식을 설명하는 로드맵입니다. 쿼리 실행 계획은 DBMS의 옵티마이저에 의해 생성되며, 어떤 테이블을 스캔하고 어떤 인덱스를 사용할지 등을 포함합니다. 이 글에서는 mysql 기준으로 explain 했을때 나오는 쿼리실행계획을 설명해보고자 합니다 1. id id 항목은 쿼리 실행의 단계를 식별하는데 사용됩니다. 여러 테이블을 조인하는..
SQL 쿼리는 데이터베이스에서 데이터를 추출하거나 조작하는 데 사용됩니다. 그러나 대용량 데이터나 복잡한 쿼리의 경우 성능이 저하될 수 있습니다. 이러한 문제를 해결하기 위해 SQL 쿼리를 튜닝할 필요가 있습니다. 이 글에서는 SQL 쿼리 튜닝에 대해 알아보겠습니다. 인덱스 사용하기 인덱스는 대용량 데이터베이스에서 데이터 검색 속도를 향상시키는 데 매우 유용합니다. 인덱스를 사용하면 데이터베이스가 특정 열을 쉽게 찾을 수 있습니다. 따라서 적절한 인덱스를 만들어 쿼리의 실행 속도를 높이는 것이 중요합니다. 인덱스를 사용할 때는 WHERE 절에 사용되는 컬럼들에 대해서, 그리고 자주 조회되는 컬럼에 대해서 인덱스를 생성하는 것이 좋습니다. 인덱스 생성 시 데이터베이스의 크기와 인덱스 크기를 고려하여 적절한..
오늘은 회사에서 일을 하던 중 내가 짠 쿼리가 운영환경에서 10초이상 걸리며 오래 걸렸던 문제를 해결한 경험을 공유하고자 한다. 쿼리는 아래와 같은 카운트 쿼리에 데이터는 약 수억건이 있는 테이블이였다. (테이블명이나 컬럼명 등은 변경한 상태이니 양해바란다) SELECT COUNT(id) FROM member WHERE (created_at >= '2020-03-25 00:00:00.0' AND created_at < '2020-03-26 00:00:00.0') 데이터가 많이 없는 테이블에서 위와같은 카운트쿼리는 크게 문제되지 않겠지만 내가 쿼리를 날린 테이블은 수억건이 있기 때문에 조회를 할 때는 무조건 인덱스를 활용해서 날려야 한다. 그런데 이 member 테이블에는 간단하게 id, name, cre..
Chung-A
'에러해결 & 최적화/DB' 카테고리의 글 목록 (2 Page)