ロックとは?

【この記事の所要時間 : 約 2 分

複数のユーザーがそれぞれトランザクションを実行する場合、それぞれのトランザクションにおいて整合性を確保するために「ロック」は利用される。
ロックの種類は大まかにいって3種類ある。
 ・テーブルロック
 ・ページロック
 ・行ロック
テーブルロックは、現実のノートをテーブルにたとえるなら、誰かがノートに書き込んでいると、他の誰もそのノートには書き込みできない状態にするということ。
これは、1つのテーブルに検索以外の登録/変更/削除などを行うことができるユーザーはただ1人ということになる。
これは検索が非常に早くなるというメリットがあり、MySQLでデフォルトとなっているMyISAMで使われている。
ページロックは、先ほどのノートの例でいうところのページ単位でロックする。
よって1つのページに検索以外の登録/変更/削除などを行うことができるユーザーはただ1人ということになる。
ページとはDBがHDとやり取りする(I/Oする)単位で、一般的には複数行(複数レコード)含まれている。
行ロックとは、ノートのページ中の行ごとにロックする。
今のところもっとも細かいロック方式といえる。
よってトランザクションの同時並行性がもっとも高いといえ、オンライントランザクション系のシステムでは行ロックは必須と言われている。
しかし良いことばかりではない。
行ロックはリソースをたくさん消費するため、パフォーマンスが落ちる。
しかし、トランザクションの同時並行性を高めたい場合は行ロックにかぎる。
MySQLではInnoDBが行ロックに対応している。
どのロック方式を使うかは、どういうシステムを作るかによるので、
ケースバイケースである。
よってこういうシステムを作るからこのロック方式を採用しているこのRDBMSを利用するといったことを設計時点で考える必要がある。

おうちで学べるデータベースのきほん
ミック 木村 明治
翔泳社
売り上げランキング: 17,763
スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください