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
トランザクションの分離レベル(Isolation Level)について
Search
vividmuimui
June 07, 2017
Programming
0
88
トランザクションの分離レベル(Isolation Level)について
original
https://vividmuimui.github.io/slides/isolation-level/slides/
vividmuimui
June 07, 2017
Tweet
Share
More Decks by vividmuimui
See All by vividmuimui
あるチームでの技術選定で考えてること(外部向けに修正版)
vividmuimui
0
7
開発組織まわりで最近考えているあれこれ
vividmuimui
0
15
bundle-update.pdf
vividmuimui
0
120
Dependabot vs BundleUpdate+LockDiff
vividmuimui
0
77
あなたの知らないRuboCopの設定
vividmuimui
0
210
最近(2019/02/03)の #Ruby , #Rails , #Bundler 事情
vividmuimui
0
140
Jasperはいいぞ!
vividmuimui
0
47
Danger CI
vividmuimui
0
100
tigとかaliasなし生活を送ってみて改めてgitを覚えてる話
vividmuimui
0
110
Other Decks in Programming
See All in Programming
コーディングエージェント概観(2025/07)
itsuki_t88
0
460
MCPで実現できる、Webサービス利用体験について
syumai
7
2.2k
Strands Agents で実現する名刺解析アーキテクチャ
omiya0555
1
110
AWS Summit Japan 2024と2025の比較/はじめてのKiro、今あなたは岐路に立つ
satoshi256kbyte
1
260
Go製CLIツールをnpmで配布するには
syumai
1
930
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
15
8.8k
DataformでPythonする / dataform-de-python
snhryt
0
110
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
240
[DevinMeetupTokyo2025] コード書かせないDevinの使い方
takumiyoshikawa
2
230
副作用と戦う PHP リファクタリング ─ ドメインイベントでビジネスロジックを解きほぐす
kajitack
3
500
decksh - a little language for decks
ajstarks
4
21k
TypeScriptでDXを上げろ! Hono編
yusukebe
4
890
Featured
See All Featured
How to Ace a Technical Interview
jacobian
278
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Typedesign – Prime Four
hannesfritz
42
2.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Docker and Python
trallard
45
3.5k
Bash Introduction
62gerente
613
210k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
530
Statistics for Hackers
jakevdp
799
220k
Done Done
chrislema
185
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Transcript
トランザクションの分離レ トランザクションの分離レ ベル(Isolation Level) につ ベル(Isolation Level) につ いて いて
1
はじめに はじめに 極力、自信がないところは書かないように気を付けましたが、 間違っているところが有るかもしれないので、 このスライドの内容を鵜呑みせずに、 くわしくはググるか↓の記事を見てください。 このスライドはおもに↓の記事を参照しながら書きました。 http://qiita.com/kumagi/items/1dc1a91ec007365ac694 http://gyouza-daisuki.hatenablog.com/entry/2013/11/19/150838 https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82
2
分離レベルとは 分離レベルとは トランザクションが複数同時に行われた時に、 一つのトランザクションがほかの処理からどれだけ独立しているか、 ほかの処理に影響をどれだけ影響をあたえるのか、 を設定するもの。 3
分離レベルとは(2) 分離レベルとは(2) ANSI の定義だと、4 つの種類がある。 READ UNCOMMITTED READ COMMITTED REPEATABLE
READ SERIALIZABLE READ UNCOMMITTED が一番独立性が低い、下に行くほど高い ( という話もある) Web 開発者が知っておくべき八つの分離レベル 4
READ UNCOMMITTED READ COMMITTED PostgreSQL, Oracle, SQL Server REPEATABLE READ
Mysql, MariaDB SERIALIZABLE は性能は良いが独立性が低い、 は独立性は高いが性能が低い より http://qiita.com/kumagi/items/1dc1a91ec007365ac694 5
READ COMMITTED READ COMMITTED コミット済みのものはread する。 ファジーリード/Non-Repeatable Read Anomaly/Inconsistent Read
Anomaly x を2 回read しようとした時に、間に他トランザクションでx のwrite があった時に、read した内容が異なる Read Skew Anomaly x, y をread しようとした時に、他トランザクションでy のwrite があ った時に、read したx, y に一貫性がない Lost Update Anomaly 6
REPEATABLE READ REPEATABLE READ 一度読み込んだデータはそのトランザクション内では何度読んでも同じ値に なる。 ほかのトランザクションでwrite のコミットがされても、write 前のデータを read
していれば、write 後にread しても同じデータが読まれる。 ファントムリード 2 回範囲に対する操作をした時に、間にinsert が発生していると、結 果が異なる 2 回count しようとした時に、間で1 件insert されてた場合、2 回目は 1 件多い数字になる READ COMMITTED で発生してたAnomaly は発生しない 7
REPEATABLE READ(2) REPEATABLE READ(2) 同じtransaction 内で2 回read しようとしても結果は同じ。 => しかし、この仕組みのことを知らずに、
最新のデータを取るぞ!って思って2 回目のread をしても1 回目のread と同 じデータなので、 事故る可能性がある。 8
REPEATABLE READ(2) REPEATABLE READ(2) Mysql のInnnoDB では、ネクストキーロックという仕組みでファントムリー ドが起きないようにしている。 が、そのせいでギャップロックが発生する https://dev.mysql.com/doc/refman/5.6/ja/innodb-next-key-locking.html
9
言いたかったこと 言いたかったこと Rails を使っているとActiveRecord のお陰で、DB サーバーがMysql なのか PostgreSQL なのかを気にせず使えてとても便利。 だが、こういう違いが有ることを意識しておかないと事故る可能性がある。
10
最後に 最後に 極力、自信がないところは書かないように気を付けましたが、 間違っているところが有るかもしれないので、 このスライドの内容を鵜呑みせずに、 くわしくはググるか↓の記事を見てください。 このスライドはおもに↓の記事を参照しながら書きました。 http://qiita.com/kumagi/items/1dc1a91ec007365ac694 http://gyouza-daisuki.hatenablog.com/entry/2013/11/19/150838 https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82
11