TOPサーバ構築・運用> キャラクターセットの変換性能
徹底比較!! PostgreSQL vs MySQLパート2
徹底比較!! PostgreSQL vs MySQLパート2

第3回:実は差があるキャラクターセットの違い
著者:NTTデータ   藤塚 勤也   2007/5/8
前のページ  1  2  3  次のページ
キャラクターセットの変換性能

   便利なキャラクターセットの変換機能ですが、性能上どのくらいの影響があるのか気になるところです。そこで、簡単な性能測定を行いましたので、それについて説明します。

   性能測定用としてPCを1台用意し、PostgreSQLとMySQLを動作させました。使用したPCのハードウェア仕様は以下の通りです。通常オフィスのディスクトップ用途に使用する程度のものです。
CPU
Pentium4 3.2GHz
メモリ
2Gバイト
ハードディスク
Serial ATA 3.0Gb/s(7,200回転)

表2:測定用PCのハードウェア仕様

   OSには「CentOS 4.2」を使用し、PostgreSQLとMySQLともにソースからインストールしました。PostrgeSQLのバージョンは8.1.8で、MySQLのバージョンは5.0.22です。なお、使用したMySQLのストレージエンジンはMyISAMです。

   性能測定対象は、ECU-JPのデータを変換せずにSELECTで読み出した場合と、Shift-JISおよびUTF-8に変換して読み出した場合の処理時間です。この測定は、以下のような方法で行いました。

   測定用にCHAR(10)タイプのカラムだけを持ったテーブルを作成し、そこに「ああああああああああ」というデータを10万件格納しました。格納したデータのキャラクターセットはEUC-JPです。

   そして、このテーブルを対象に「SELECT * FROM テーブル名」のSQL文にて、10万件すべてのデータを抽出し、ファイルに書き出す処理をします。

   またSQL文を発行する前には、クライアントで使用するキャラクターセットを定義するようにしました。定義したキャラクターセットは、EUC-JP/Shift-JIS/UTF-8の3種類です。そして、この用意した処理の実行時間を測定しました。

   この方法によって、「EUC-JPのデータをEUC-JPとして抽出」「Shift-JISとして抽出」「UTF-8として抽出」の3種類の測定結果を得ました。


性能測定結果

   まず注意して欲しい点として、今回の性能測定結果の処理時間の絶対値はまったく意味がありません。重要なのは、日本語データのキャラクターセットをサーバとクライアント間で変換を行わなかった場合と変換を行った場合の処理時間の差です。PostgreSQLとMySQLで比較した場合も、この処理時間の差がどれだけ異なるかに注目してください。

PostgreSQLの処理時間
図2:PostgreSQLの処理時間

PostgreSQLの処理時間の増加の割り合い
図3:PostgreSQLの処理時間の増加の割り合い

MySQLの処理時間
図4:MySQLの処理時間

PostgreSQLの処理時間の増加の割り合い
図5:PostgreSQLの処理時間の増加の割り合い

   図2と図3はPostgreSQLの結果で、図4と図5はMySQLの結果です。図2のグラフは、3種類のキャラクターセットによる処理時間の絶対値です。図3のグラフは、クライアントのキャラクターセットをEUC-JPにした時の処理時間を0とした時、Shift-JISに変換した場合とUTF-8に変換した場合の処理時間の増加割り合いを示したものです。

   PostgreSQLでは図3、MySQLでは図5のグラフに注目してください。PostgreSQLの場合は、データベース内にあるEUC-JPのデータをEUC-JPのままクライアントに抽出する処理時間に比べ、Shift-JISに変換してクライアント側に抽出すると20%処理時間が増加し、UTF-8に変換すると123%も処理時間が増加する結果となりました。

   同様にMySQLの場合は、Shift-JISで10%の増加、UTF-8で22%の増加といった結果になりました。

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


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

INDEX
第3回:実は差があるキャラクターセットの違い
  日本語データの取り扱い
キャラクターセットの変換性能
  日本語データのバイト数