こんにちは!Sです。
今回はデータベースのロックについて書きたいと思います。
DBで行う主な操作としては
①新規登録 ②更新 ③削除 ④参照
だと思いますが、同じテーブルに対して複数の人が同時に様々な操作を行うとデータの整合性がとれません。
そんなことにならないようにDBにはロックという機能が存在します。
ロックの粒度(行に対してのロックなのか、テーブルに対してのロックなのかなど)やルールは
使っているDBによって多少違うようですが、ここからはわたしが使っているSQL Serverについて書きます♪
◆ロックの種類
ロックには共有ロック、排他ロック、更新ロック、インテントロックなどがありますが、
難しいので詳細の説明は省きます。
初心者の方にまず覚えて頂きたいのは
①データの参照中は共有ロックがかかり、その間他の人が更新などできない
②削除などデータの書き換え中は排他ロックがかかり、他の人が何もできない
ということです。
(詳しく知りたい人はこちらやこちらを!)
バッチのスケジュールを組む際にはこれらのことを考慮しないといけないですね。
ちなみに排他ロックをどの粒度でかけるかは、SQL Serverが決めてくれます。
https://technet.microsoft.com/ja-jp/library/ms189286(v=sql.105).aspx
◆安全なおまじない
DBで行う操作の中で更新や削除はとても怖いですよね。。。
出来ればやりたくないですが、避けることはできません。
そんなとき上記のロックを利用して安全に操作を行うことができる魔法の呪文を教えてもらったので紹介します♪
1.まずはこれを書く
begin transaction
2.やりたいことをやる
update文 や delete文など
3.select文で思い通りの結果になっているか確認
4-A.やばい!思った通りの動きじゃない!というときは
ROLLBACK TRANSACTION
→これで元通り。なんの心配もいりません!
4-B.意図通り!成功!というとき
COMMIT TRANSACTION
→これを忘れずに!忘れると反映されません。
...余談ですが、わたしは今朝通勤途中に電車にすべての荷物を忘れてきました。
(別に寝ぼけていたわけでもないのに。。。)
電車を降りるところからROLLBACKしたいです。。。
開発初心者がこれだけは知っておいた方が良いこと④
Related Posts:
開発初心者がこれだけは知っておいた方が良いこと④こんにちは!Sです。 今回はデータベースのロックについて書きたいと思います。 DBで行う主な操作としては ①新規登録 ②更新 ③削除 ④参照 だと思いますが、同じテーブルに対して複数の人が同時に様々な操作を行うとデータの整合性がとれません。 そんなことにならないようにDBにはロックという機能が… Read More
開発初心者がこれだけは知っておいた方が良いこと③こんにちは開発者のSです! 今日はデータ分析について書こうと思います。 せっかくページを作ったらその反響も知りたいですよね♪ まずは分析に用いる指標について ■View数 ページが見られた回数。1人の人が10回見たらView数は10 ■訪問数 何回訪問されたか。 1回の訪問で10ページ見られ… Read More
Java初心者がはまったこと(文字列比較)はじめまして。WebエンジニアのKと申します。 これまでサーバサイドはほぼPHPで実装してきましたが、最近ではJavaへの挑戦も始めました。 慣れたPHPの感覚でJavaを書き始めると、思わぬところではまってしまうことがあり、 ここでは自戒の念を込めてはまったポイントを記しておこうと思います。 … Read More
Java初心者がはまったこと2(ラッパークラス)こんにちは。Java初心者のWebエンジニアKです。 PHPのノリでJavaを書いていたらはまったこと第二弾として、今回はラッパークラスについて書きたいと思います。 ■intとIntegerではまる Javaのソースコードを見ていると、例えば数値を扱う変数を作るとき、以下の2通りの宣言があるこ… Read More
開発初心者がこれだけは知っておいた方が良いこと②こんにちは!Sです。 前回に引き続き「開発初心者がこれだけは知っておいた方が良いこと」について書いていきます。 今回のテーマは「おかしいところの見つけ方について」です。 ネットで調べて見よう見まねで書いてみたけれど上手く動かない。。。という時に 早くどこがおかしいのかを見つける方法について書いて… Read More
URLはリンクを貼ってもらえるとうれしいな~
返信削除