🦔

学習備忘録〜O'Reilly「初めてのSQL」12章 トランザクション〜

2024/01/04に公開

はじめに

この備忘録は、新卒1年目の初学者バックエンドエンジニアの学習記録のためにつけているものです。
解釈違いや、誤情報がある可能性があります。見つけた際にはご指摘をお願いします。

概要

トランザクションは複数のSQL文をグループ化するためのメカニズムであり、それらの文は全て成功するか失敗するかのどちらかである。

ロック

データリソースの同時使用を制御するためにデータベースサーバが使うメカニズムのこと。データベースの一部をロックした場合、その部分のデータを変更したい他のユーザはロックが解除されるまで待たなければならない。

  • 書き込みロックと読み取りロック
    複数のユーザがデータを同時に読み取ることは可能だが、各テーブルに対して与えられる書き込みロックは常に1つだけであり、書き込みロックが解除されるまで読み取りリクエストはブロックされる。
  • バージョニング
    データベースを読み取る場合はいかなるロックも必要ない。代わりに、クエリの実行が開始されてから終了するまで、ユーザが参照するデータビューの一貫性が保たれることがデータベースサーバによって保証される。

トランザクションとは

データベースサーバのアップタイムが100%で、ユーザが常にプログラムを最後まで問題なく実行でき、アプリケーションが常に正常に終了し、実行を中断するような深刻なエラーが発生しない場合は問題がない。一方で、複数ユーザが同時にアクセスするには以下の点に留意する必要がある。
それがトランザクションである。トランzカウションは、複数のSQL文を1つにまとめて、それらの文を全て成功させるか全て失敗させる仕掛けのこと。

Discussion