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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
AI時代、1年目エンジニアの悩み
jin4
1
130
Kubecon NA 2025: DRA 関連の Recap と社内 GPU 基盤での課題
kevin_namba
0
110
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
0
490
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
3
1.1k
Databricks Free Edition講座 データサイエンス編
taka_aki
0
270
EventBridge API Destination × AgentCore Runtimeで実現するLambdaレスなイベント駆動エージェント
har1101
7
290
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
130
システムのアラート調査をサポートするAI Agentの紹介/Introduction to an AI Agent for System Alert Investigation
taddy_919
2
1.3k
ゼロから始めたFindy初のモバイルアプリ開発
grandbig
2
590
Amazon Bedrock AgentCore 認証・認可入門
hironobuiga
2
470
Tebiki Engineering Team Deck
tebiki
0
23k
JuliaTokaiとしてはこれが最後かもしれない(仮) for NGK2026S
antimon2
0
130
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
110
Joys of Absence: A Defence of Solitary Play
codingconduct
1
280
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
630
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
53
Typedesign – Prime Four
hannesfritz
42
2.9k
Claude Code のすすめ
schroneko
67
210k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
150
The untapped power of vector embeddings
frankvandijk
1
1.6k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
170
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を行う。 - 同一レコードに対する処理が同時に行われないように、追加の排 他制御を行う。 - リトライが可能であるかを検討し、リトライ処理を行う。
現時点での対応策