TOPサーバ構築・運用> PostgreSQLのデータ構造は追記型




徹底比較!! PostgreSQL vs MySQL
徹底比較!! PostgreSQL vs MySQL

第6回:PostgreSQLとMySQLの特長とは
著者:NTTデータ   藤塚 勤也   2006/6/20
前のページ  1  2  3  次のページ
PostgreSQLのデータ構造は追記型

   PostgreSQLの最大の特長を1つあげるとすると、テーブルファイル内に追記型構造にてレコードを格納している点です。この追記型構造により、非常にシンプルにMVCCモデルを実現している一方、不要領域を定期的に削除するためのVACUUM処理を定期的に実行する必要があります。

   更新処理(UPDATEとDELETE)が多いシステムでは、頻繁にVACUUM処理を実施しないとPostgreSQLのデータベース処理の性能劣化に繋がります。しかし、VACUUM処理自体もデータベース処理に影響を与えますので、十分な配慮が必要です。

   PostgreSQLは、バージョンアップを重ねるごとにこのVACUUM処理に関して改良が施されています。今後も更なる改良に期待したいところです。


MySQLはストレージエンジンを選択できる

   MySQLの最大の特長は、ストレージエンジンをテーブルごとに選択できる点です。そして、その選択したストレージエンジンによって特長が異なることです。MyISAMは、テーブル単位のファイルによるデータ構造を持ち、トランザクション機能をサポートしていません。一方のInnoDBは、テーブルスペース内に複数のテーブルやインデックスを格納するデータ構造を持ち、トランザクション機能をサポートしています。

   このように、代表的な2つのストレージエンジンにおいても、まったく異なる特長を持っています。よってMySQLをシステムに適用する際には、慎重に使用するストレージエンジンを選択する必要があります。

   なお、MySQLのバージョン5.0では表2のようなストレージエンジンが使用できます。

ストレージエンジン 概要
MyISAM MySQL標準のストレージエンジンとして使用される
InnoDB 行ロックとトランザクションをサポートする
BDB ページ単位のロックとトランザクションをサポートする
Memory メモリ上にテーブルを配置する
Merge 複数のMyISAMテーブルを統合する
Archive 圧縮したデータベースを使用する
Federated リモートのデータベースを参照する
NDB クラスター構成にて使用される
CSV データファイルにCSVを使用する
Blackhole ダミーテーブルを使用する

表2:MySQLにて使用できるストレージエンジン


RDBMS付加機能

   PostgreSQLとMySQLのRDBMS付加機能を表3にまとめました。

機能 PostgreSQL MySQL
MyISAM InooDB
サブクエリ
ストアードプロシージャ
ビュー
トリガ
ファンクション
情報スキーマ
日本語対応

表3:RDBMS付加機能

   表2にあげた各機能をさらに詳細の仕様まで比較すれば様々な差異があります。しかし、各機能をサポートしているかどうかといった観点においては、PostgreSQLとMySQLに特別な差はありません。

   ただし、MySQLがストアドプロシージャやトリガ機能をサポートしたのはバージョン5.0からですので、PostgreSQLに比べると若干歴史が浅いと思います。歴史が浅いということは、それらの機能の実績がPostgreSQLに比べMySQLの方が少ないということに繋がります。

前のページ  1  2  3  次のページ


NTTデータ  藤塚 勤也
著者プロフィール
株式会社NTTデータ   藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。

INDEX
第6回:PostgreSQLとMySQLの特長とは
  はじめに
PostgreSQLのデータ構造は追記型
  性能