inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

200억건의 데이터를 MySQL로 마이그레이션 할 때 고려했던 개념과 튜닝 방법

Deadlock Case 4분 45초 질문

해결된 질문

193

qwerty1434

작성한 질문수 6

1

안녕하세요.
Deadlock Case 4분 45초 예제가 어떤 상황을 말씀하시는건지 잘 이해가 안돼 질문남깁니다.

다음과 같이 설명해 주셨는데요
```
1. 테이블 A/B, 트랜잭션 X/Y가 존재
2. 트랜잭션 X는 A테이블을 수정, 트랜잭션 Y는 B테이블을 수정
3. 2번의 두 요청은 멀티스레드 환경에서 거의 동시에 요청이 들어옴
4. 이후 A테이블에서는 세션으로서 전송이 되어서 한 번에 처리를 하려 함
5. X트랜잭션은 A테이블을 수정한 다음 B테이블을 수정하려 함
...
```

5. X트랜잭션은 A테이블만 수정한다 했던거 같은데 B테이블은 왜 수정하나요?
4. 세션으로서 전송이 되어서 한 번에 처리를 하려한다는게 어떤 얘기일까요? 5번과 연관지어 생각했을 때 하나의 트랜잭션에 여러 요청이 들어오는 걸 세션으로 전송된다고 말씀하신건가요? 그래서 하나의 세션에 A테이블을 수정하는 작업과 B테이블을 수정하는 작업 두개가 들어온거일까요?

mysql mongodb mysql-workbench mysql-query

답변 1

1

July

안녕하세요!! 확인이 많이 늦었네요 ㅠㅠ

금일내로 확인 후에 답변드리도록 하겠습니다.

0

July

발생 가능한 상황을 좀 더 자세히 설명을 드리도록 할게요

  • 이는 세션을 각각 열어서 Tx를 한번에 모아서 전송을 한다는 것을 가정합니다.

 

테이블 : A, B

트랜잭션 X, Y

--- 가정 ---
X 트랜잭션은 A 테이블을 수정 후에, B 테이블을 수정합니다.

Y 트랜잭션은 B 테이블을 수정한 후에, A 테이블을 수정합니다.

두 트랜잭션은 각각의 테이블에 대해서 같은 Raw를 수정합니다.

--- 상황 ---
두 트랜잭션이 멀티쓰레드 환경에서 동시에 전송을 하게 됩니다.


X 트랜잭션이 A 테이블의 Raw에 대해서 Lock을 획득합니다.
- 좀 더 자세하게 말씀드리면 Exclusive lock을 획득합니다.

Y 트랜잭션이 같은 시간대에 B 테이블의 Raw에 대한 Exclusive lock을 획득합니다.

이 후 X 트랜잭션의 A 테이블에 대한 작업이 끝난 후,
B 테이블에 접근을 하려고 하지만,

현재 B 테이블에 대해서 Y 트랜잭션이 Lock을 반환하지 않은 상태이기 떄문에 대기합니다.

이후 Y트랜잭션이 B테이블에 작업 후, A에 접근합니다.
하지만 아직 X 트랜잭션의 작업이 마무리가 되어 있지 않아서 
Y가 X가 끝나기를 대기합니다.

서로 이렇게 대기상태가 지속되다가 DeadLock이 발생합니다.


이 케이스를 참고해보시면 좋을 꺼 같습니다.

  • 설명이 부족했다고 느끼시면 추가적인 질문 부탁드립니다! 감사합니다 :)

0

qwerty1434

아하 어떤 상황인지 이해했습니다. 답변 감사합니다~!

강의 DB데이터 질문

0

38

1

극단적으로 from-to가 12일 이고, valid_to가 13일이면?

0

36

1

11강 [실습] Docker로 MySQL1 분만에 실행하기

0

57

2

11강 [실습] Docker로 MySQL1 분만에 실행하기

0

49

2

선생님 샤딩에 대한 강의도 좀 해주세요

0

43

1

몽고DB CAP 이론 관련

0

51

2

아니 이거 갑자기 데이터베이스가 사라졌어요

0

50

1

기타 영역 중 언두로그

0

62

1

코드 깃허브는 없을까요?

1

50

2

실전튜닝 4 질문 - group by 순서와 index 순서

0

57

1

@Modifying에 관하여

1

54

1

DB 쿼리 최적화 시 DB 처리와 애플리케이션 처리의 기준이 궁금합니다

0

56

1

실무에서의 인덱스 관리 방법이 궁금합니다

0

67

1

Issuance 테이블에 status, couponId 인덱스가 꼭 필요할까요?

2

68

1

문제와 풀이2 1번문제

0

50

1

부하 테스트 시 설정 관련 질문드립니다

1

97

2

build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)

0

88

2

sakila 실전 17번 문제

0

48

1

복합인덱스 설계 질문

0

115

1

Order BY 강의 12분 질문

0

134

2

lock의 순서를 지켜주자는 말의 뜻

0

180

1

[Skip Locked For Session] 12:14초 내용 관련 질문

1

365

1

안녕하세요, 멀티컬럼인덱스 개념 후반부 내용이 이해가 가지 않아 질문 드립니다.

2

466

2

안녕하세요 좋은 강의 감사합니다. 혹시 실습 코드는 따로 제공 안되나요??

2

316

1