0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

未経験からエンジニアになりたい人は、プログラミングから始める人が多いと思いますが、
エンジニアの仕事は、プログラミングだけではありません。そして、プログラミングだけでは、エンジニアになれません。同時にプログラミングが苦手でも、システム構成や開発の流れを理解するとエンジニアに近づきます!
今回はMySQLの色々その1として、Readとロックの色々について更に詳しく調べてみましょう!

インスタスライド_202302032.gif

Readの種類

ダーティリード【Dirty Reads】
並列実行中の他のトランザクションが書き込んだ未コミットのデータを読み込む。

ノンリピータブルリード【Non-repeatable Reads】
並列実行中の他のトランザクションが更新しコミットしたデータを読み込んでしまうため、以前読み込んだデータを再度読み込むと異なる値となる。

ファントムリード【Phantom Reads】
並列実行中の他のトランザクションが挿入しコミットしたレコードを読み込んでしまうため、以前存在しなかった行データが読めてしまう。

MySQLでは

MySQLのInnoDBでは、

分離レベルは Repeatable read でファントムリード等の間違ったReadが発生しないよう工夫が施されています。

この仕組みがネクストキーロックと呼ばれるアルゴリズムです。

ネクストキーロック

Where句で指定したデータとインデックスの隙間(ギャップ)のギャップロック
直近のデータのロック(レコードロック)

この2つをあわせてネクストキーロックという

まとめ

ーReadで色々な種類があり、 MySQLでもその対策がされている

ーMySQLでは、where句以外のデータもロックされる

ーロックの範囲を知ればロック対象を減らせてパフォーマンスが上がる

最後に

未経験の皆さん、若手エンジニアの皆さん、勉強方法について悩みがあればなんでも気軽に質問して下さい!
これからも記事を書いていきますので、モチベーションアップのためフォロー、イイねお願いします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?