Transaction2 [DB] Transactions & Serializability Transaction 이란? : DB 처리의 논리적 단위를 이루는 실행 프로그램이다. 특징은 다음과 같다. - 하나의 Transaction에는 하나 이상의 DB Access 작업이 포함된다. (삽입, 삭제, 수정, 검색) - 하나의 응용 Program에는 둘 이상의 Transaction이 포함 가능하다. - read-only transaction / read-write transaction이 존재한다. Transaction이 만족해야 하는 ACID는 다음과 같다. - Atomicity (원자성): 트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 한다. 즉, "All or Nothing" 원칙을 따른다.즉, 트랜잭션을 구성하는 여러 작업 중 일부만 적용되는 일은 없어야 하며, 전부 실행되거나 아예 실행.. 2024. 12. 14. [Spring/Java] 동시성 제어 통한 게시물 좋아요 및 댓글 수 관리 (비관적 락, 반정규화, 세마포어) 상황게시물에 좋아요 버튼을 누르면 좋아요 수가 1씩 증가하거나 감소해야하고, 댓글을 작성하거나 삭제하면 댓글 수가 1씩 증가하거나 감소해야 했다. 그런데, 그런 요청이 있을 때마다 좋아요 댓글 수 컬럼 값을 1씩 증가하거나 1씩 감소시키게 된다면, 충돌의 위험이 있었고, 데이터 무결성에 문제가 생길 수 있었다. 그래서 충돌을 방지하여 데이터 무결성을 높이는 락을 사용해야 했다. 하지만, 동시성 처리가 많은 상황에서는 락 경합이 빈번하게 발생하여 락 대기 시간이 길어질 수 있었고, 데이터베이스의 성능이 저하될 수 있었다. 해결방법 [ 1. 별도의 테이블을 사용하여 성능 향상 ]좋아요와 댓글에 대한 테이블을 따로 만들고, 생성이 될 때마다 데이터를 하나씩 추가시키고 삭제할때마다 해당 데이터를 하니씩 삭제했다.. 2024. 7. 7. 이전 1 다음