2009-07-21 25 views
13

MySqlを使用してアプリケーションを実行していました。私たちは、PostGISが持つGIS機能の一部をサポートしていないことが判明した後、MySqlが私たちのアプリケーションには適していないことを発見しました(注意:mysqlは最小限の長方形のGIS検索のみをサポートします)。WindowsでPostgreSQLが遅いのはなぜですか?

DBをPostgreSQLに変更しました。我々は、Windows上で実行されているPostgreSQL 8.2がMysql 5.1と比較して非常に遅いことを発見しました。遅くなると、約4〜5倍遅くなります。

これはなぜですか?設定に変更が必要なものがありますか?

私はそのようなthisなど他のウェブサイトからいくつかのコメントが見つかりました:

にUPDATE:を私たちは、遅さの原因は、我々はDBに挿入されているBLOBが原因であることがわかりました。 BLOBを10-15 MB/sの持続速度で挿入できる必要があります。私たちは、挿入/読み込み中のBLOBごとにlibpqのlo_readとlo_writeを使用しています。それが最善の方法ですか?誰も大きなBLOBを高速で挿入するためにPgsqlを使用しましたか?

EDIT:PgSqlが最近Windowsに移植されたと聞いたことがあります。これが理由の一つかもしれませんか?

+1

1.最新バージョンは8.4(今月リリース) - アップグレード、テスト、レポートです。 2.この「その他のウェブサイト」は、PostgreSQLプロジェクトの公式メーリングリストアーカイブです。しかし、一方であなたがリンクしている投稿は非常に古いものであり、非常に古く、サポートされていないバージョン(8.0)を言及しています。 –

答えて

21

Windows上のPostgreSQLが、私たちが移植したときのトレードオフのために、他のソリューションと比較して追加のオーバーヘッドを支払うケースがあります。

たとえば、PostgreSQLは接続ごとにプロセスを使用し、MySQLはスレッドを使用します。 Unixでは、これは通常パフォーマンス上の違いではありませんが、新しいプロセスを作成するWindowsではfork()システムコールがないために非常に高価です。このため、PostgreSQLを使用している場合、永続的な接続や接続プーラーを使用すると、Windowsではより多くのメッセージがより重要になります。

私が見たもう一つの問題は、Windows上のPostgreSQLの初期段階では、書き込みキャッシュがバッテリバックアップであっても書き込みが行われていることを確認することです。 AFAIK、MySQLはこれを行わず、書き込みパフォーマンスに大きく影響します。これは安価なドライブなど、安全ではないハードウェアを使用している場合には、実際には必要です。しかし、バッテリバックアップ式の書き込みキャッシュを使用している場合は、これを通常のfsyncに変更する必要があります。現代版のPostgreSQL(確かに8.3)は、代わりにopen_datasyncにデフォルト設定されます。これにより、この違いが解消されます。

データベースの構成をどのように調整したかについては何も言及していません。デフォルトでは、PostgreSQLに同梱されている設定ファイルはと非常に控え目のです。あなたが何かを変更していないなら、間違いなくそれを見る必要があります。 PostgreSQL wikiにはチューニングに関するアドバイスがあります。

これ以上の詳細を述べるには、実行速度が遅く、データベースをどのようにチューニングしたかについて、さらに詳しく説明する必要があります。私はpgsql-generalメーリングリストへの電子メールを提案します。

+0

あなたは正しいです。私はデフォルトの設定を少し変更した後、少し速くなった。 – sivabudh

+0

Windows版の最新バージョンではどのようにパフォーマンスが向上していますか?あなたの答えは今日変わるでしょうか? –

+0

パフォーマンスは確実に向上しましたが、アーキテクチャのギャップはまだ残っています。 –

7

PostgreSQLのWindowsポートは比較的最近のものですが、私の理解は他のバージョンと同様に機能します。しかし、それは間違いなくポートです。ほとんどすべての開発者は、Unix/Linux/BSD上で主にまたは排他的に作業します。

Windowsでは8.2を実行しないでください。私の意見では、8.3は、まさにプロダクション対応の最初のWindowsリリースでした。 8.4はまだ良いです。とにかくあなたがアップグレードすることができれば、あなたはいくつかの利点を得るでしょう。

チューニングすることも考慮する必要があります。 PostgreSQLは、最適なパフォーマンスを達成するためにMySQLよりチューニングが必要です。基本的な調整以外にも、mailing listsに投稿することを検討してください。

+1

PostgreSQLはMySQLよりチューニングが必要です。実際には、デフォルトごとに非常に控えめなメモリ使用設定が行われています。まだそれが当てはまるかどうかはわかりませんが、通常は最初の容疑者です。 –

0

PostgreSQLは既に特定のポイントまでMySQLより遅いです(データベースが馬鹿馬鹿くても、実際には高速です)。ちょうど参考までに、これはあなたの問題の原因ではありませんが、それを覚えておいてください。

関連する問題