트랜잭션2 [RealMySQL 8.0] 5장 트랜잭션과 잠금 5.1 트랜잭션트랜잭션은 쿼리의 개수와는 상관없이, 논리적인 작업셋이 Atomic 하게 적용되어야 한다는 것을 의미한다.단일 쿼리 여러 데이터를 변경할 수 있으므로 트랜잭션 적용 대상이다.트랜잭션의 범위는 가급적 짧게 유지해야 한다.커넥션을 길게 잡고 있으면 커넥션 풀 성능 저하를 일으킨다.외부 IO 작업은 불확실성이 크므로 Tx에서 제거하자.원자적 일관성이 필요하지 않은 처리는 별도의 트랜잭션으로 분리하자.트랜잭션을 길게 잡고 있을 경우 DBMS 의 과도한 부하를 일으킬 수 있다.5.2 MySQL 엔진의 잠금잠금은 스토리지 잠금과 MySQL 엔진 잠금으로 나눌 수 있다.스토리지 잠금은 스토리지 엔진 간 영향을 미치지 않는다.MySQL 잠금은 모든 스토리지 엔진에 영향을 미친다.글로벌락MySQL에서 제공.. 2025. 1. 2. Shared Lock 과 Exclusive Lock 여러 트랜잭션을 동시에 실행하면 생기는 문제 트랜잭션이 동시에 여러개 실행된다면 여러 트랜잭션이 동시에 같은 데이터를 참조해 데이터의 일관성이 깨질 수 있다. 그러므로 트랜잭션이 하나씩 실행되는 것처럼 스케줄링할 필요가 있다. 여러 트랜잭션 스케줄링 방법이 있지만 보통 잠금을 사용한다. 잠금이란 자신이 데이터를 수정 중이라는 것을 알리는 방법이다. Shared Lock, 줄여서 LS Shared Lock, 공유할 수 있는 락이다. 즉 LS가 걸려있을 때 다른 LS를 걸 수 있다. 바꿔말하면 LS끼리는 Block 되지 않는다. 읽기에 사용된다. Exclusive Lock, 줄여서 LX Exclusive Lock, 공유할 수 없는 락이다. 무조건 하나만 걸 수 있다. LX는 LS, LX 어떠한 락이라도 허용.. 2021. 12. 5. 이전 1 다음