第4回:各データベースの運用機能の比較 (1/4)

徹底比較Microsoft SQL Server vs オープンソースDB
徹底比較!! Microsoft SQL Server vs オープンソースDB

第4回:各データベースの運用機能の比較
著者:日立システムアンドサービス   鈴木 和義   2006/6/28
1   2  3  4  次のページ
トランザクションの分離レベル

   これまでの連載でGUIツールを使用したデータベース構築を比較してきました。今回は、運用まわりに主眼をおきそれぞれの機能比較を紹介していく。

   まずロックとトランザクションの分離についてだが、これはアプリケーションから見たデータの整合性を維持する機能であり、データベースにとって重要な機能である。なぜならば、複数のユーザが同時にデータを参照・更新を行った時に、変更中のデータ参照や同じデータへの同時更新を防止するからだ。

   トランザクションの分離に関してはANSI/ISO SQL規格(SQL92)で規定されており、4つの分離レベルが定義されている。トランザクションは「開始宣言→データの操作→コミット命令」の流れで行うことが基本であり、コミットを行うまでデータ操作が確定しない仕組みである。トランザクションの分離レベルは、あるユーザがトランザクションを行っている途中で同じデータを別のユーザが読み出す時に発生する現象の組み合わせで分類されており、項番が大きいほど分離レベルが高く、一般的にパフォーマンスが低下する(表1)。

項番レベルダーティリードノンリピータブルリードファントムリード
1READ UNCOMMITTED許容許容許容
2READ COMMITTED抑止許容許容
3REPEATABLE READ抑止抑止許容
4SERIALIZABLE抑止抑止抑止

表1:SQL92のトランザクション分離レベル

ダーティリード
コミット前の更新データが参照されること

ノンリピータブルリード
トランザクション内で一度読み込んだデータを再読み込みした場合、他のトランザクションで更新されたデータに変わってしまうこと

ファントムリード
トランザクション内で条件検索を行った後に再度同じ条件検索を行った場合、他のトランザクションの挿入操作により異なる結果になること

表2:表1の各リードの注

   各データベースの対応状況を表3に示す。

項番レベルSQL ServerMySQLPostgreSQL
1READ UNCOMMITTED項番2で動作
2READ COMMITTED
3REPEATABLE READ項番4で動作
4SERIALIZABLE

表3:各データベースの対応状況
(◎:デフォルト値)

   SQL Server 2005とMySQLは4つの分離レベルに対応した機能を実装している。一方、PostgreSQLは「READ COMMITTED」と「SERIALIZABLE」を実装し、「READ UNCOMMITTED」や「REPEATABLE READ」が指定された場合は、上位のトランザクションの分離レベルで動作する仕様となっている。

   PostgreSQLのマニュアルでも記述されているが、標準SQLの許される範囲である。また、分離レベルに関して先駆者的な存在であるOracleもすべてを対応しているわけではなく、網羅性が優劣を決めるものではない。むしろ分離レベルのデフォルトが何になっているかと、分離レベルとパフォーマンスの関係が重要である。

1   2  3  4  次のページ


株式会社日立システムアンドサービス 鈴木 和義
著者プロフィール
株式会社日立システムアンドサービス   鈴木 和義
研究開発センタ 評価センタ 主任技師。サービス視点で各社製品の評価・選定に10年以上携わる。また、2005年からIPAのOSS推進フォーラムに参加し、オープンソースのAPサーバの信頼性を評価している。

INDEX
第4回:各データベースの運用機能の比較
トランザクションの分離レベル
 稼動監視
 データベースの再編成
 バックアップ・リストア

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored