보라코딩
Postgres 장점 (MVCC) 본문
PostgreSQL을 사용하는 이유
1. 데이터 관리 방식의 차이
- MySQL: 주로 테이블 단위로 데이터를 관리하며, 트랜잭션 처리 시 테이블 레벨의 잠금을 사용합니다.
- PostgreSQL: 레코드 단위로 데이터를 관리하며, 다중 버전 동시성 제어(MVCC)를 통해 레코드 레벨의 잠금을 사용하여 동시성을 높입니다.
2. 성능 최적화 (버퍼와 언두 로그)
- MySQL: 많은 양의 데이터를 처리할 때, 예를 들어 만 건의 레코드를 한 번에 디스크로 옮기는 방식으로 작업을 처리합니다. 이는 대량의 데이터를 처리하는 데 유리할 수 있지만, 작업량이 많아질수록 성능 저하가 발생할 수 있습니다.
- PostgreSQL: 트랜잭션 처리 시, 데이터 변경 사항을 하나씩 차례로 디스크로 옮기는 방식을 사용합니다. 이러한 방식은 변경 사항을 더 세밀하게 관리하며, 빈번한 작은 변경 작업에서 높은 성능을 발휘할 수 있습니다.
3. MVCC (다중 버전 동시성 제어)
- PostgreSQL의 MVCC는 각 트랜잭션이 독립된 스냅샷을 사용하여 데이터에 접근할 수 있게 해줍니다. 이는 높은 동시성을 제공하며, 트랜잭션 간의 충돌을 최소화합니다.
- MySQL의 경우 InnoDB 스토리지 엔진에서 MVCC를 지원하지만, PostgreSQL의 MVCC 구현이 더 강력하고 효율적이라고 평가받고 있습니다.
4. 데이터 일관성과 무결성
- PostgreSQL은 ACID (원자성, 일관성, 격리성, 지속성) 속성을 철저히 준수하며, 복잡한 트랜잭션과 데이터 무결성을 보장합니다.
- MySQL도 ACID를 지원하지만, 특정 상황에서 데이터 일관성과 무결성을 보장하기 위해 추가적인 설정이 필요할 수 있습니다.
5. 확장성과 유연성
- PostgreSQL은 확장성이 뛰어나며, 사용자 정의 함수, 데이터 타입, 인덱스 방법 등을 통해 데이터베이스 기능을 쉽게 확장할 수 있습니다.
- MySQL도 확장성과 유연성을 제공하지만, PostgreSQL이 더 다양한 기능 확장을 지원하는 것으로 알려져 있습니다.
결론
PostgreSQL은 레코드 단위의 데이터 관리와 다중 버전 동시성 제어(MVCC)를 통해 높은 동시성과 성능을 제공합니다. 특히, 데이터 변경 사항을 하나씩 디스크로 옮기는 방식은 작은 변경 작업에서 더 효율적일 수 있습니다. 이러한 특성들로 인해 PostgreSQL은 복잡한 트랜잭션 처리와 높은 동시성을 요구하는 애플리케이션에서 널리 사용되고 있습니다.
[Database] MVCC(다중 버전 동시성 제어)란?
오늘은 단일 쿼리로는 해결할 수 없는 로직을 처리할 때 필요한 개념인 트랜잭션에 대해 알아보고, Spring에서 어떻게 활용하는지 확인해보도록 하겠습니다. 1. 동시성 제어(Concurrency Control) [ 동시
mangkyu.tistory.com
'코딩 > DB' 카테고리의 다른 글
MySQL 성능 최적화 (1) | 2024.07.23 |
---|---|
MySQL 옵티마이저 (0) | 2024.06.28 |
docker로 oracle 사용하기 (0) | 2023.10.15 |
몽고DB 설치 (0) | 2023.08.25 |
MySQL 블로그 테이블 생성 (0) | 2023.08.10 |