본문 바로가기

Database/MySQL

(2)
MySQL 실행 계획 분석으로 성능 개선한 이야기 MySQL을 DB로 사용하여 개발할 때 내가 작성한 쿼리가 실제 어떻게 수행이 되고 성능은 어느 정도인지 확인이 필요할 때가 있습니다. 성능이 느리다면 쿼리를 개선하거나 구조를 다시 짜는 리팩터링을 통해 성능을 끌어올릴 수도 있구요. 제가 프로젝트를 진행하면서 만든 쿼리의 실행 계획을 분석하고 성능 개선을 한 사례를 말씀드리겠습니다. 간단한 사례 제가 진행한 프로젝트에는 캠핑용품 유형 데이터가 존재합니다. 캠핑용품 유형이란? 캠핑용품에는 텐트, 코펠, 버너, 테이블, 의자와 같이 여러 가지 유형이 존재하는 데 그 유형을 나타내는 데이터입니다. 그래서 실제 테이블은 id와 name 칼럼으로 구성되어 있고 id를 통해 유형 데이터의 유일함을 표현할 수 있도록 Primary Key 제약 조건을 걸고 사용 중이..
나는 왜 MySQL Replication을 적용했을까? 많은 트래픽이 흐르는 상황에서 서버의 성능을 올리기 위해 애플리케이션 서버를 늘리는 방법을 선택할 수 있습니다. 하지만 서비스를 운영하기 위해선 애플리케이션 서버뿐만 아니라 데이터를 저장하는 역할인 DB 서버 또한 필요로 합니다. 애플리케이션 서버의 부하는 위와 같은 방법으로 해소가 가능하지만 DB 서버는 어떨까요? 실제로 DB 서버는 데이터를 Disk에 직접 쓰고, 읽는 I/O 작업이 일어나기 때문에 애플리케이션 서버보다 훨씬 큰 병목 지점이 될 수 있습니다. 애플리케이션 서버를 아무리 늘려도 데이터에 직접 액세스 하는 부분에서 똑같이 병목이 발생하면 서비스 전체의 병목은 그대로이기 때문에 DB 서버도 부하를 분산하여 큰 트래픽에 대응하는 것이 좋습니다. MySQL Replication MySQL은 R..