본문 바로가기

전체 글262

MySQL Query Cache은 무조건 좋을까? (Feat. query cache lock) MySQL에서는 한 SELECT 쿼리의 결과를 캐싱해주는 Query Cache 라는 최적화 기능을 제공해주고 있다. (하지만, 5.7.20 버전부터 deprecate되었고, 8.0 버전에서부터는 제거되었다고 한다. - 참고 글) 그렇다면, Query Cache은 항상 사용하면 좋은 것일까? (모든 캐싱이 그러하듯, 당연히 아닐 듯 하다.) 실습과 함께 한번 확인해보자. 실습 준비 MySQL 5.7.20 Docker Container 환경에서 실습하였습니다. 참고로 query_cache_type 의 default 값은 OFF이다. 이 값은 MySQL을 구동한 이후에는 변경할 수 없으므로, 아래와 같이 설정파일을 변경한 후, 한번 재기동해주어야 한다. [mysqld] query_cache_type = 2 #.. 2024. 3. 11.
[Real MySQL 8.0] 옵티마이저의 기본 데이터 처리 1 / 2 요청된 쿼리는 같은 결과를 반환하지만, 내부적으로 그 결과를 어떻게 만들어낼 것인지에 대한 방법은 매우 다양하다. 따라서 어떤 방법이 최적이고 최소의 비용이 소모되는지 결정해야 한다. MySQL에서는 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조해 최적의 실행 계획을 수립한다. 대부분의 DBMS에서도 옵티마이저가 이러한 기능을 담당하고 있다. 쿼리 실행 절차 쿼리가 실행되는 과정은 크게 세 단계로 나눌 수 있다. 요청된 SQL 문장을 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리(파스 트리) SQL 파싱 단계로 SQL 파서 모듈로 처리 SQL 문법 오류(Syntax Error)가 이 단계에서 걸러짐 SQL 파스 트리 생성 SQL의 파싱 정보(파스 트리)를 확인해 어떤 테이블을 읽.. 2024. 3. 11.
[SQLD] 1-2 데이터 모델링과 성능 제1절 성능 데이터 모델링의 개요 성능 저하 요인 1) 데이터 모델 구조 2) 데이터가 대용량이 되는 경우 3) 인덱스 특성을 충분히 고려하지 않고 인덱스 생성하는 경우 성능 => 보통 데이터조회의 성능을 의미 - 데이터입력/수정/삭제는 일시적이며 빈번하지 않고 단건 처리가 많으나 데이터조회의 경우 반복적이고 빈번하며 여러 건을 처리하는 경우가 많음. - 일반적으로 트랜잭션의 성격이 조회의 패턴이나 업무에 따라서는 입력/수정/삭제의 성능이 중요한 경우도 존재 성능 데이터 모델링 - DB 성능향상 목적으로 설계단계의 데이터 모델링 때부터 정규화,반정규화,테이블통합, 테이블분할,조인구조,PK,FK등 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것 수행시점 - 분석/설계 단계 => 성능저하에 .. 2024. 3. 11.
(DB실무) Part3-데이터 모델과 성능 보호되어 있는 글 입니다. 2024. 3. 6.
데이터베이스 튜닝 (DB Tuning) I. DB성능 최적화, 데이터베이스 튜닝 (DB Tuning) 개요 가. 데이터베이스 튜닝의 필요성 일반적으로 시스템 성능 저하 문제는 잘못된 APP 및 DB 설계에 의해 발생하며, 데이터베이스 튜닝을 통해 성능 저하 최소화 가능 나. 데이터베이스 튜닝의 개념 데이터베이스 응용, 데이터베이스 자체, 운영체제의 조정 등을 통하여 최적의 자원으로 최적의 성능(응답속도)을 얻을 수 있도록 개선하는 작업 II. 데이터베이스 튜닝의 3단계 가. 데이터베이스 튜닝의 3단계 튜닝 단계(영역)튜닝 방안튜닝 사례 1단계 DB 설계 튜닝 (모델링 관점) 데이터베이스 설계 단계에서 성능 고려하여 설계 데이터 모델링, 인덱스 설계 데이터파일, 테이블 스페이스 설계 데이터베이스 용량 산정 반정규화 분산파일배치 2단계 DBMS .. 2024. 3. 5.
[SQL] Query Tuning - Partition [SQL] Query Tuning - Partition 파티션이란 파티션 - 구획 분할 MySQL 서버 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 기능을 의미 큰 table이나 index를, 관리하기 쉬운 partition이라는 작은 단위로 물리적으로 분할하는 것 파티션을 사용하면 대용량 작업을 더 빠르게 처리할 수 있음 파티션 단위의 조회 및 DML → 부하를 분산시켜줌 DML 인 Delete 로 처리하게 된다면 삭제대상을 조회하는 부하/Operation 과 Redo/Undo를 생성하는 DML영역의 Operation 의 부하등이 동반되기 때문에 파티션을 사용한 파티션 단위의 Drop 을 이용하면 이런 부분을 대폭 줄일 수 .. 2024. 3. 4.