Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PKでのDELETE後INSERTでDEAD LOCKする問題事象のご説明
Search
Kentoku SHIBA
October 17, 2018
Technology
1
280
PKでのDELETE後INSERTでDEAD LOCKする問題事象のご説明
REPEATABLE READで、PKでのDELETE後INSERTでDEAD LOCKする 問題事象について
Kentoku SHIBA
October 17, 2018
Tweet
Share
More Decks by Kentoku SHIBA
See All by Kentoku SHIBA
New features and enhancements of Spider Storage Engine for sharding
kentoku
0
1.2k
Spiderストレージエンジンのご紹介 2019/05/21
kentoku
2
1.2k
全スレーブが同時にレプリケーションを停止する問題事象
kentoku
0
240
Dead lock by inserting after deleting by primary key
kentoku
0
100
突然全てのスレーブのレプリケーションがunknown error reading log event on the masterというエラーで停止したら。おまけで、Spider Storage Engineを少し。
kentoku
1
26k
An issue of all slaves stop replication
kentoku
0
3.1k
Other Decks in Technology
See All in Technology
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
ESXi のAIOps だ!2025冬
unnowataru
0
470
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
スクラムマスターが スクラムチームに入って取り組む5つのこと - スクラムガイドには書いてないけど入った当初から取り組んでおきたい大切なこと -
scrummasudar
1
1.4k
ルネサンス開発者を育てる 1on1支援AIエージェント
yusukeshimizu
0
130
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
690
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
210
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
150
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
320
スクラムを一度諦めたチームにアジャイルコーチが入ってどう変化したか
kyamashiro73
0
170
Scrum Guide Expansion Pack が示す現代プロダクト開発への補完的視点
sonjin
0
350
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
12k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Designing for humans not robots
tammielis
254
26k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
74
Design in an AI World
tapps
0
110
A Tale of Four Properties
chriscoyier
162
23k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
250
The Spectacular Lies of Maps
axbom
PRO
1
410
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
78
Statistics for Hackers
jakevdp
799
230k
Become a Pro
speakerdeck
PRO
31
5.8k
Transcript
PKでのDELETE後INSERTでDEAD LOCKする 問題事象のご説明 Kentoku SHIBA
- トランザクション隔離レベルREPEATABLE READ - 同じレコードをPKを指定して、同時にDELETEすると、一方は成 功し、もう一方はロック待ちとなる。 - DELETEに成功した方の接続で、削除したPKのレコードを INSERTするとDEAD LOCKになる。
問題事象
接続1 接続2 start transaction 接続2は、pk=1のレコードロック取得時にLOCK待ちになる。 接続1は、INSERT INTENTION GAP LOCKのチェックで、接続2のGAP LOCKにより待たされるためDEAD
LOCKとなる。 問題事象 start transaction delete from t1 where pk = 1; delete from t1 where pk = 1; LOCK待ちになる insert into t1 (pk) values (1); DEAD LOCKになる
- INSERT INTENTION GAP LOCK INSERTレコードのネクストキーに対して、GAP LOCK(INSERT INTENTION GAP LOCKを除く)もしくは、NOT
GAPではないレ コードLOCKがある場合、LOCK WAITとなる。 このチェックを通過後、 INSERT INTENTION GAP LOCKは即 時解除される。 - 暗黙レコードLOCK このレコードに対してLOCKのチェックが行われる際に、NOT GAPのレコードLOCKとして実体化する。 INSERT時はINSERT INTENTION GAP LOCKでLOCK競合を 確認し、INSERT後は暗黙レコードLOCKによって競合を確認する。 INSERT時のLOCK(REPEATABLE READ)抜粋
INSERT時のLOCKの挙動を踏まえると、 以下のケースのいずれかに該当すれば、 INSERT INTENTION GAP LOCKのチェックを省略できる。 - INSERTするレコードに既に排他レコードLOCKを取得している。 (DELETE、UPDATEが行われた場合など) INSERT
INTENTION GAP LOCKの省略の検討
- READ COMMITTEDが利用可能であるかを検討し、 READ COMMITTEDで、DELETE→INSERTを行う。 - 同一レコードに対する処理が同時に行われないように、追加の排 他制御を行う。 - リトライが可能であるかを検討し、リトライ処理を行う。
現時点での対応策