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

177

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

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

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

0

8

1

sakila 실전 17번 문제

0

11

1

복합인덱스 설계 질문

0

32

1

ArticleReadService 관련 질문

0

23

1

마스터패스...

0

33

1

kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.

1

56

1

domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다

1

42

1

Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면

1

65

2

스크립트에 대해 질문 있습니다.

1

58

1

같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!

2

70

1

리뷰

0

43

2

조건 검색 질문

0

39

1

upload_file_id가 1,3,4 순서인 건에 대해

0

40

1

p.created_at vs u.name 인덱스 문의

0

48

2

콘솔 로그가 깨져나오는데 혹시 방법이 있을까요?

0

53

2

이진 트리 노드

0

47

1

조인의 특징

0

46

2

댓글 삭제 로직에서 동시성 문제 발생 가능성

0

38

1

통계정보 갱신 질문

0

69

2

Order BY 강의 12분 질문

0

115

2

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

0

165

1

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

1

351

1

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

2

449

2

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

2

305

1