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
290
1
Share
PKでのDELETE後INSERTでDEAD LOCKする問題事象のご説明
REPEATABLE READで、PKでのDELETE後INSERTでDEAD LOCKする 問題事象について
Kentoku SHIBA
October 17, 2018
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
260
Dead lock by inserting after deleting by primary key
kentoku
0
110
突然全てのスレーブのレプリケーションがunknown error reading log event on the masterというエラーで停止したら。おまけで、Spider Storage Engineを少し。
kentoku
1
26k
An issue of all slaves stop replication
kentoku
0
3.2k
Other Decks in Technology
See All in Technology
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
400
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
160
AIが変えた"品質の守り方"
kkakizaki
13
5.4k
イベントで大活躍する電子ペーパー名札 〜その3〜 / ビジュアルプログラミングIoTLT vol.23
you
PRO
0
170
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
290
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
1.1k
AI時代の私の技術インプットとアウトプット術
tonkotsuboy_com
15
8k
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
1
470
Amazon Bedrock 経由の Claude Cowork を試してみよう・MCP にも繋いでみよう
sugimomoto
0
270
Strands Agents超入門
kintotechdev
1
150
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
220
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Invisible Side of Design
smashingmag
302
52k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
390
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.5k
Site-Speed That Sticks
csswizardry
13
1.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
エンジニアに許された特別な時間の終わり
watany
107
240k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
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を行う。 - 同一レコードに対する処理が同時に行われないように、追加の排 他制御を行う。 - リトライが可能であるかを検討し、リトライ処理を行う。
現時点での対応策