본문 바로가기

DBA55

[SQL] Query Tuning - Partition [SQL] Query Tuning - Partition 파티션이란 파티션 - 구획 분할 MySQL 서버 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 기능을 의미 큰 table이나 index를, 관리하기 쉬운 partition이라는 작은 단위로 물리적으로 분할하는 것 파티션을 사용하면 대용량 작업을 더 빠르게 처리할 수 있음 파티션 단위의 조회 및 DML → 부하를 분산시켜줌 DML 인 Delete 로 처리하게 된다면 삭제대상을 조회하는 부하/Operation 과 Redo/Undo를 생성하는 DML영역의 Operation 의 부하등이 동반되기 때문에 파티션을 사용한 파티션 단위의 Drop 을 이용하면 이런 부분을 대폭 줄일 수 .. 2024. 3. 4.
[MySQL] MySQL Tuning(튜닝) 그리고 Optimization(최적화) MySQL 서버 하드웨어 및 OS 조정: 1. 전체 InnoDB 파일을 메모리에 로드하기에 충분한 물리적 메모리가 있어야 합니다. InnoDB는 디스크가 아닌 메모리에서 파일에 액세스할 수 있을때 훨씬 빠릅니다. 2. 스와핑을 피합니다. 스와핑은 디스크에서 읽는 것이므로 속도가 느립니다. 3. 배터리 지원 RAM(Battery-Backed RAM)을 사용합니다. 4. 고급 RAID를 사용합니다. 가급적이면 RAID10 이상을 사용합니다. 5. RAID5를 피합니다. 무결성을 보장하는데 필요한 체크섬은 비용이 많이 듭니다. 6. OS와 데이터 파티션을 논리적으로뿐만 아니라 물리적으로 분리합니다. 비용이 많이 드는 OS 쓰기 및 읽기는 데이터베이스 성능에 영향을 미칩니다. 7. mysql 임시 공간과 복제 .. 2024. 3. 4.
RDBMS 성능 최적화 전략 데이터의 가치가 높아지고 데이터 저장/관리 기술이 발전하면서 다양한 데이터베이스 소프트웨어가 출시되고 있습니다. Hadoop 클러스터링 환경에 기반한 Hive, HBase, Spark SQL는 빅데이터 수집/분석에 대한 요구사항의 증대와 같이 사용량도 늘어가고 있습니다. 인프라 운영에 대한 리스크를 줄여주고 빠른 서비스 구축이 가능하다는 장점을 내세워 급속도로 성장을하고 있는 클라우드 서비스 플랫폼이 증가하면서 클라우드 환경의 데이터베이스도 사용이 증가하고 있습니다. 기존의 데이터베이스가 클라우드 환경에서도 서비스를 시작하는 경우도 있지만, Amazon DynamoDB, Google BigQuery, Microsoft Azure SQL Database 처럼 클라우드 플랫폼 전용 데이터베이스 서비스도 생겨.. 2024. 3. 3.
[DB] MySQL 성능 최적화(INDEX) 0️⃣ 전제 조건 MySQL과 기본 스토리지 엔진인 8.0 InnoDB 인덱스를 활용한 쿼리 최적화 Table 1️⃣ 인덱스를 왜 쓸까? 1.1 조회 성능 개선 : 디스크 I/O를 줄이는 것이 핵심 1.2 장점 ORDER BY: 인덱스를 이용해 정렬이 처리되는 경우 GROUP BY: 인덱스를 이용해 GROUP BY를 하는 경우 1.3 실행 계획 all: 테이블 전체를 스캔할 때 (Full Table Scan) range: 인덱스를 이용하여 범위 검색을 할 때 필요한 데이터만 읽게 된다. index: 인덱스 전체를 스캔할 때 (Index Full Scan) all 보다 성능은 좋으나 인덱스를 전체 스캔하기 때문에 range보다는 성능이 좋지 않다. 2️⃣ 인덱스 적용 사례 2.1 기본 컬럼에 인덱스 적용 .. 2024. 3. 3.
DB - 성능 개선을 위한 테이블 분할 데이터베이스의 성능을 개선하기 위한 방법 중 하나가 테이블 분할이다. 테이블 분할은 어려움이 따르는데 그 이유는 기존에 설계된 테이블 구조를 변경해야 하고 이미 개발된 프로그램을 변경해야 하기 때문이다. 보통 테이블을 변경하는 원인은 DB 설계시 정규화를 소홀했거나 용량 산정을 잘못했기 때문이다. DB는 설계가 매우 중요하기 때문에 초반에 설계를 잘못한다면 성능상의 문제가 생기기 마련이다. 그렇기에 잘못된 설계 및 정규화로 인한 성능 저하를 해결하기 위해 테이블 분할을 하는 것이다. 테이블 분할은 크게 수직분할과 수평분할로 나눈다. 수직분할은 컬럼을 기준으로 테이블을 분리하는 것을 의미하고 수평분할은 로우를 기준으로 테이블을 분리하는 것을 의미한다. 테이블의 컬럼 수가 많을수록 I/O에 대한 부하가 걸리.. 2024. 3. 2.
데이터베이스 튜닝 데이터베이스 튜닝 개념 데이터베이스 어플리케이션, 데이터베이스 자체, 운영체제 등의 조정을 통하여 데이터베이스 시스템의 성능을 향상시키는 작업 시스템 성능 저하 일반적으로 시스템 성능 저하 문제는 잘못된 APP 및 DB 설계에 의해 발생한다. DB 튜닝은 이러한 성능 저하를 최소화한다. 목적 갈수록 복잡화, 대량화되는 시스템을 그대로 유지하면서 DB 시스템을 최적화한다. 어플리케이션이 높은 작업 처리량과 짧은 응답시간을 갖도록 한다. DB를 활용하는 시스템을 안정시키고, 사용자의 만족과 관리자의 관리 능력을 향상시킨다. 데이터베이스 튜닝 방식 단계튜닝 영역튜닝 방안사례 1 DB 설계 (모델링 관점) - 데이터베이스 설계 단계에서 성능을 고려하여 설계한다. 데이터 모델링, 인덱스 설계 데이터 파일, 테이블.. 2024. 2. 26.