|
||||||||||||||||||
| 前のページ 1 2 3 次のページ | ||||||||||||||||||
| キャラクターセットの変換性能 | ||||||||||||||||||
|
便利なキャラクターセットの変換機能ですが、性能上どのくらいの影響があるのか気になるところです。そこで、簡単な性能測定を行いましたので、それについて説明します。 性能測定用としてPCを1台用意し、PostgreSQLとMySQLを動作させました。使用したPCのハードウェア仕様は以下の通りです。通常オフィスのディスクトップ用途に使用する程度のものです。
表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で比較した場合も、この処理時間の差がどれだけ異なるかに注目してください。 ![]() 図2:PostgreSQLの処理時間 ![]() 図3:PostgreSQLの処理時間の増加の割り合い ![]() 図4:MySQLの処理時間 ![]() 図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 次のページ |
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||





