Transaction 2

트랜잭션과 고립(격리)수준

트랜잭션이란 무엇인가?DBMS에서 데이터를 다루는 논리적인 작업의 단위트랜잭션의 필요성데이터 복구: 데이터베이스 작업 도중 장애가 발생하면 데이터를 복구하기 위한 단위작업 분리: 여러 작업이 동시에 같은 데이터를 다룰 때 발생할 수 있는 문제를 방지하기 위해 작업을 분리하는 단위예시 (ACID)1. A에서 B계좌로 돈을 입금할 때 → B계좌의 입금 관련 쓰기 작업에 실패 시[Atomicity(원자성)]트랜잭션이 제대로 되어있지 않다면 A계좌에서 출금한 돈은 없어지게 되어버리며 하나의 트랜잭션이서 두 개의 작업을 실행하고 있을 때 하나의 작업이라도 실패 시 모든 작업이 실패로 돌아가야 함 → 기존 데이터로 롤백 시키는 작업을 해야함2. 잔액이 1000원 밖에 없는 A계좌에서 B,C 계좌로 동시에 1000원..

database 2024.07.07

transaction을 응용해서 redux 상태 업데이트 최적화하기

개요웹에서 대용량의 데이터를 보여주는 경우는 어떤 경우가 있을까? 아마 대부분의 경우 긴 리스트 혹은 테이블 형태일것이라고 생각한다. 이런 경우에는 보통 virtualization으로 성능을 최적화 할 수 있지만 개인 프로젝트가 아니라 회사 단위의 프로젝트라면 기획, 기존 코드와의 충돌과 같은 문제로 인해 virtualization과 같은 기법을 사용하지 못하는 경우도 있을 수 있다. 대용량의 데이터를 웹에서 보여주다보면 별 이슈를 다 겪을 수 있는데 이번에 겪은 이슈도 이로 인해 발생한 이슈이다.원인은 redux에서 상태 업데이트 시 구독된 middleware의 코드가 실행되는데 이러한 상태 업데이트를 여러 번 실행할 때 n번 middleware가 실행되었으며 약 5000줄의 행과 각 행에서 몇 개의 ..

frontend 2024.04.30