본문 바로가기
개발/MySql

데이터베이스 분할(Database Sharding)

by 꼼냥냥 2023. 4. 26.
728x90

데이터베이스 분할(Database Sharding)은 대규모 어플리케이션에서 발생할 수 있는 성능 문제를 해결하기 위해 사용되는 기술입니다. 데이터베이스 분할은 데이터베이스를 물리적으로 분할하여 여러 대의 서버에서 병렬적으로 처리하도록 하여, 대용량 데이터 처리에 대한 성능 및 확장성을 향상시킵니다.

데이터베이스 분할에는 수평 분할과 수직 분할이 있습니다.

수평 분할(Horizontal Sharding)
수평 분할은 데이터를 행 단위로 분할하는 방법입니다. 분할된 각 행은 고유한 식별자를 갖게 되고, 이 식별자를 이용하여 쿼리를 수행할 때 어떤 서버에서 처리해야 할 지를 결정합니다. 예를 들어, 사용자 ID에 따라 사용자 데이터를 분할하는 경우, 각 사용자 ID가 서로 다른 데이터베이스 서버에 저장됩니다. 이 방식은 각 서버에서 처리해야 할 데이터 양을 줄이므로 전체적인 성능을 향상시킬 수 있습니다.

수직 분할(Vertical Sharding)
수직 분할은 테이블을 열 단위로 분할하는 방법입니다. 분할된 각 열은 각각의 데이터베이스 서버에서 처리됩니다. 이 방식은 각 서버에서 처리해야 할 데이터 양이 적어지므로 처리 속도가 빨라집니다. 수직 분할은 예를 들어, 데이터베이스의 컬럼 중에 빈번하게 사용되는 컬럼을 분할하는 경우가 있습니다.

데이터베이스 분할은 많은 데이터를 처리해야 하는 대규모 어플리케이션에서 성능 향상을 위해 필수적입니다. 그러나 데이터베이스 분할을 제대로 구현하려면 여러 가지 문제를 고려해야 합니다. 예를 들어, 데이터 일관성, 쿼리 분산, 서버 부하 분산 등이 그것입니다. 이러한 문제를 고려하여 데이터베이스 분할을 구현해야 합니다.

728x90

'개발 > MySql' 카테고리의 다른 글

서브쿼리 최적화  (0) 2023.04.26
쿼리 실행 계획 분석  (0) 2023.04.26
Qurey 최적화  (0) 2023.04.26
Trigger (트리거)  (0) 2022.04.15
저장 함수(Stored Function)  (0) 2022.04.15

댓글