DB 튜닝이란 DB의 구조나, DB 자체, 운영체제 등을 조정하여 DB 시스템의 전체적인 성능을 개선하는 작업
튜닝은 DB 설계 튜닝 -> DBMS 튜닝 -> SQL 튜닝 단계로 진행
DB 설계 튜닝(모델링 관점)
DBMS 튜닝(환경관점)
SQL 튜닝(App관점)
- SQL 작성 시 성능 고려
- Join, Indexing, SQL Execution Plan
- 튜닝 사례 : Hash/ Join
DELETE: 테이블에서 특정 조건을 만족하는 행(레코드)을 삭제하는 데 사용됩니다. 이는 특정 행을 삭제하는 데 사용되며, 테이블의 데이터만 영향을 줍니다. 삭제 후 되돌릴수 있습니다.
TRUNCATE: 특정 테이블의 모든 데이터를 삭제하는 데 사용됩니다. TRUNCATE 문을 사용하면 테이블의 모든 행이 삭제되지만 테이블 자체는 삭제되지 않습니다. TRUNCATE는 일반적으로 DELETE보다 더 빠르게 실행되지만, 롤백(rollback)이 불가능하며, 트리거(trigger)를 실행하지 않습니다. 테이블 용량이 줄어들고 인덱스 등도 삭제됩니다.
DROP: 특정 테이블이나 데이터베이스 객체를 삭제하는 데 사용됩니다. DROP 문은 테이블, 뷰(view), 인덱스(index), 프로시저(procedure), 함수(function) 등과 같은 객체를 삭제할 수 있습니다. 이 명령을 사용하면 해당 객체와 관련된 모든 데이터가 삭제됩니다. 롤백이 불가능합니다.
📌 클러스터링
클러스터링이란 여러 개의 DB를 수평적인 구조로 구축하는 방식입니다. 동기 방식으로 사용되며, 다음과 같은 장단점이 있습니다.
👀 장점 :
DB 간의 데이터를 동기화하여 항상 일관성있는 데이터를 얻을 수 있다.
1개의 DB가 죽어도 다른 DB가 살아 있어 시스템을 장애없이 운영할 수 있다.(높은 가용성)
기존에 하나의 DB서버에 몰리던 부하를 여러 곳으로 분산시킬 수 있다.(로드밸런싱)
👀 단점 :
📌 리플리케이션
리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조로 구축하는 방식입니다. 비동기 방식으로 사용되며, 다음과 같은 장단점이 있습니다.
👀 장점 :
DB 요청의 60~80% 정도가 읽기 작업이기 때문에 Replication만으로도 충분히 성능을 높일 수 있다.
비동기 방식으로 운영되어 지연 시간이 거의 없다.
👀 단점 :
노드들 간 데이터 동기화가 보장되지 않아 일관성있는 데이터를 얻지 못할 수 있다.
Master DB가 다운되면 복구 및 대처가 까다롭다.
클러스터링은 DB 서버만을 늘려 처리하는 것이고 리플리케이션은 DB 서버와 스토리지 모두 복제하여 구성하는 방법이다. 둘 중 어느것이 좋다고 단정 지을 수는 없다. 무엇보다 DB를 무조건 확장하는 것은 최대한 피해야 한다. 각자의 서비스에 맞춰서 적절하게 선택한다면 좀 더 성능이 좋은 서비스를 제공할 수 있다.