DBのオートコミットって知ってる??

オートコミットとは DB
オートコミットとは


DBの処理実行中に「停電だ!」とかでセッションが途切れてしまったとします。

そんな時でも、トランザクションをちゃんと張っていれば、
DBの処理が中途半端にならず、ロールバックしてくれますよね。

トランザクションを張る際、コミットと宣言することで、
そのトランザクションを終了させることができるわけですが…

トランザクションを明示的に張らずとも、
自動的に張った状態にできるオートコミット値をご存知でしょうか??

オートコミットというのは名前の通り、自動でコミットさせるかどうかの設定です。

DBのオートコミットのデフォルト値は、ONです。
つまり、自動でコミットするため、deleteを実行したら自動コミットが走り、
トランザクションを貼っていない限りはロールバックできないのです。

自動コミットをOFFにすると、
deleteを実行した時でも、まだコミットされておらず、DBには反映されていません。
コミットを宣言すると、DBに反映される訳なんですねー。

DBのオートコミットの設定がどうなっているかは、
以下のようにコンソールから確認できます。

show variables where variable_name="autocommit";

こんな感じで出力されます。

Variable_name|Value|
-------------+-----+
autocommit   |ON   |

これをOFFにしたかったら、以下を実行。

set autocommit = 0;

ただ、あえてOFFにしている現場は今のところ見たことないですね。
ONがデフォルトで普通ですし、OFFにはしないようにした方が良いと思いますが、
もし「変な挙動になる!」とかで戸惑ったら、設定値を確認してもいいかもですね!

ちなみに、以下でDBの設定値を一覧で取得できるよ。

show variables;
タイトルとURLをコピーしました