[Moassam] 좋아요/북마크 동시성 정합성 테스트 2 - 정합성 개선하기 (ON CONFLICT, Atomic Update)
·
Project/Moassam
· 들어가며이전 글에서는 K6 부하 테스트를 통해 좋아요와 북마크 기능에서 동시성 문제로 인해 데이터 정합성이 맞지 않는 문제가 발생하는 것을 확인했습니다.이전글 바로가기 [Moassam] 좋아요/북마크 동시성 정합성 테스트 1 - 테스트 환경 구성 및 K6 부하 테스트(성능 개선· 들어가며커뮤니티 서비스에서 실제 좋아요와 북마크 데이터 수는 posts 테이블 안에 있는 count 컬럼과 항상 동일해야 합니다. 하지만 여러 사용자가 동시에 같은 게시글에 좋아요나 북마크 요myojun.tistory.com특히 100 VU와 같은 비교적 낮은 동시성 환경에서도 HTTP 요청은 정상적으로 처리되었지만, 실제 데이터와 posts 테이블의 count 값은 일치하지 않았습니다. 원인은 count 변경과 실제 데이터..
[Database] 트랜잭션(Transaction)과 ACID 알아보기
·
Database
· 들어가며이번 시간에는 데이터베이스의 트랜잭션(Transaction)과 ACID에 대해 공부한 내용을 정리해 보겠습니다. 트랜잭션은 데이터베이스에서 데이터의 정합성과 무결성을 보장하기 위한 핵심 개념으로, 여러 작업을 하나의 논리적인 작업 단위로 묶어 처리합니다.· 트랜잭션(Transaction)이란?- 트랜잭션이란?트랜잭션(Transaction)은 데이터베이스의 상태를 변경하는 작업들을 하나의 논리적인 작업 단위로 묶은 것입니다. 여러 SQL 문을 하나의 작업으로 처리하며,모든 작업이 성공할 경우 → COMMIT하나라도 실패할 경우 → ROLLBACK을 수행합니다.- 사용하는 이유트랜잭션은 데이터의 정합성과 무결성을 보장하기 위해 사용합니다. 예시로 많이 드는 계좌 이체를 생각해 보겠습니다. 예를 들..
[Database] SQL Join에 대해 알아보자!
·
Database
· JOIN- JOIN 이란?DB에서 2개 이상의 테이블을 연결하여 하나의 결과 테이블로 만들어서 효율적으로 데이터를 검색하고 처리할 수 있게 합니다. JOIN은 일반적으로 PK와 FK 관계에서 많이 사용되지만,반드시 PK/FK 관계일 필요는 없으며두 테이블 간에 비교 가능한 컬럼이 존재하면 JOIN이 가능합니다.- 사용하는 이유DB에서 테이블을 분리하여 데이터 중복을 최소화하고 데이터 일관성을 유지하기 위해 사용합니다.또한, 분리된 테이블의 데이터를 하나의 결과 집합으로 조회하기 위해 사용합니다.- 종류INNER JOIN: 두 테이블에서 공통된 값을 가지고 있는 행들을 반환합니다.OUTER JOIN: 두 테이블에서 공통된 값을 가지지 않는 행들도 반환합니다.LEFT OUTER JOINRIGHT OUTE..