이미지가 좀 이상하긴 하지만.. 이론상 CAP 를 100% 충족시키지 못한다. CPA 에는 일관성, 가용성, 파티션 허용성이라는 세 가지 속성 중 두 가지만 보장할 수 있다. 일관성 (Consistency)모든 노드가 동일한 시점에 동일한 데이터를 볼 수 있도록 보장어떤 데이터에 대한 쓰기가 완료되면, 그 이후에 해당 데이터에 접근하는 모든 클라이언트는 최신 정보를 보게 된다.가용성 (Availability)클라이언트의 요청(R/W)에 대해 항상 응답을 받을 수 있도록 보장시스템의 일부 노드에 문제가 생기더라도, 남은 노드들이 계속해서 요청에 응답할 수 있어야 하며, 클라이언트는 항상 응답을 받을 수 있어야 합니다. 단, 그 응답이 최신 상태인지(일관성)는 보장하지 않을 수 있다. 파티션 허용 (Part..
PostgreSQL 를 사용하다 보면 어느 순간 디스크가 기하급수적으로 늘어난다.DELETE / UPDATE 가 지속적으로 발생하면서 디스크는 크게 줄지 않고, 비용은 점점 올라간다.뿐만 아니라 쿼리 성능 저하, 인덱스 비대화의 문제로 데이터베이스의 성능이 점차 떨어진다.Auto vacuum이 안 돌면 생기는 성능 이슈1. 쿼리 성능 저하UPDATE, DELETE가 많아지면 dead tuples 이 쌓인다.PostgreSQL은 MVCC 방식이라, 삭제된 데이터도 실제로는 지워지지 않고 남아 있는데 이걸 지워주는 게 vacuum이다.vacuum 은 백그라운드에서 autovacuum 이 실행되며, 쿼리로 명령어를 작성할 수 도 있다.이것이 제대로 돌지 않으면 테이블이 점점 무거워진다. 이 과정으로 전체 테이..
Postgres에서 쿼리 실행 계획(Explain Query Plan)을 실행했을 때 Nested Loop 에 대해 알게 되었지만, 제대로 정리해본적은 없었기에 SQL의 3가지 JOIN 알고리즘을 정리해보려 한다. JOIN 알고리즘의 종류 Nested Loop Sort/Merge HashRDBMS 에 따른 알고리즘 지원 현황 Oracle : 3가지 모두 지원 MySQL : Nested Loop 만 지원 Postgres : 3가지 모두 지원 External Table 과 Internal TableSELECT * FROM table1 t1 INNER JOIN table2 t2 on t1.id = t2.id;External Table (Drive Table)JOIN할 때 기준이 되는 테이블이며, 위 SQ..