inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Các khái niệm và phương pháp điều chỉnh được xem xét khi di chuyển 20 tỷ mẩu dữ liệu sang MySQL

Deadlock Case 4분 45초 질문

Đã giải quyết

195

qwerty1434

6 câu hỏi đã được viết

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

Câu trả lời 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

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

PK를 AUTO_INCREMENT UUID를 UNIQUE로 하는것에 대해

0

7

1

Jib 빌드가 83%에서 멈추는 문제 해결(windows 사용자)

1

12

0

pk를 auto increment로 하는것에 대해서

0

15

1

트랜잭션 내 Redis I/O 에 대한 궁금한점

1

28

1

경쟁상태

0

49

1

stmt

0

41

1

실행 통계2 explain analyze 조인 쿼리

0

46

1

[해결됨]마지막 강의 내용 수정 화면이 기능을 못하네요.

0

49

1

[해결됨]부분적으로 화면 이동이 안되는 부분이 있습니다.

0

85

6

68강 문제 풀이

0

43

1

현대 쿼리 복잡성에 관한 질문

0

90

3

key_length 가 사용되는곳

0

44

1

낙관적락 질문있습니다.

0

44

1

댓글순서부여방식

0

46

1

공통 코드 VS Enum 클래스

1

48

1

movablePageCount와 pageSize 상수

0

37

1

JPA와 네이티브 쿼리

0

44

1

aws 계정 생성 질문

1

66

1

강의 DB데이터 질문

0

61

1

Order BY 강의 12분 질문

0

140

2

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

0

185

1

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

1

372

1

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

2

479

2

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

2

319

1