일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 자료구조
- JavaScript
- design pattern
- Data Structure
- react
- Spring
- redis
- MySQL
- 운영체제
- Kafka
- c언어
- spring webflux
- Galera Cluster
- 알고리즘
- 파이썬
- Java
- Algorithm
- C
- JPA
- 네트워크
- Heap
- 자바
- 컴퓨터구조
- Proxy
- MSA
- IT
- 백준
- OS
- 디자인 패턴
- mongoDB
- Today
- Total
목록전체 글 (215)
시냅스

이 글에서는 MySQL의 Repeatable Read 격리 수준에서 트랜잭션 동작 방식과 트랜잭션 락킹에 대해 설명합니다. 이해를 돕기 위해 간단한 예시를 사용하며 설명합니다. Repeatable Read Repeatable Read 는 InnoDB 기본 격리 수준입니다. 트랜잭션 내에 읽기에 대한 일관성을 스냅샷을 기준으로 보장하며 InnoDB 에서는 Next Key Lock 을 사용하며 Phantom Read 까지 예방합니다. 스냅샷을 기준으로 일관성을 보장한다는 것은, 현재 실행하고 있는 트랜잭션 id 보다 전의 id 를 갖는 언두 로그를 참조한다는 뜻입니다.. 따라서 SELECT 시에 다른 트랜잭션에서 업데이트하며 해당 데이터가 바뀌더라도 현재의 트랜잭션에서는 일관성을 유지합니다. 위와 같은 상황..

HikariCP 설정과 유의사항 maxLifetime 커넥션을 최대 얼마동안 연결 유지 할지에 대한 설정 maxLifetime 에 도달한 커넥션이 사용 중(in-use)이지 않고, 풀에 반납된 상태에서 제거된다. 만약 커넥션이 제거되어 부족한 경우 부족한 커넥션 만큼 새로 생성한다. 이러한 방식은 wait_timeout 에 의해 커넥션이 끊어졌을 경우를 대비한다. 즉 wait_timeout 으로 커넥션이 끊기기를 대비하여 커넥션을 새로 맺는 것 HikariCp 는 네트워크 지연을 고려하여 maxLifetime 을 db의 wait_timeout 설정보다 2 ~ 3초 정도 짧게 줄 것을 권고한다. wait_timeout 이 60초라면 maxLifetime 은 58초가 된다. 만약 maxLifetime 이 w..

InnoDB Locking MySQL 의 InnoDB 에서 사용하는 Locking 기법 Shared Lock, S-Lock 특정 레코드를 읽을 때 사용되는 Lock Shared Lock 끼리는 동시 접근이 가능하다. 하나의 레코드를 여러 트랜잭션이 동시에 읽을 수 있다. 어떤 자원에 Shared Lock 이 하나라도 걸려있으면 Exclusive Lock을 걸 수 없다. 동시에 읽기는 가능하지만, 변경은 불가능하게 한다. e.g. SELECT ... FOR SHARE Exclusive Lock, X-Lock 변경(write) 작업을 할 때 사용되는 lock 이다. Exclusive Lock 이 걸린 레코드에는 다른 트랜잭션에서 변경이나 삭제가 불가능하다. 특정 레코드에 Exclusive Lock 이 걸려있..