13

MySqlを使用してapplicationgを実行しました。MySqlは、PostGISが持つGIS機能の一部をサポートしていないことがわかった後、アプリに適していないことがわかりました(注:mysqlは最小境界の長方形GIS検索のみをサポートします)。

そこで、DBをPostgreSQLに変更しました。次に、Windowsで実行されているPostgresql8.2がMysql5.1と比較して非常に遅いことがわかりました。遅いとは、およそ4〜5倍遅いという意味です。

どうしてこれなの?構成に変更が必要なものはありますか?

私はこのような他のウェブサイトからいくつかのコメントを見つけました:

更新:速度低下の原因は、DBに挿入しているBLOBが原因であることがわかりました。10〜15 MB/sの持続速度でBLOBを挿入できる必要があります。挿入/読み取りするBLOBごとにlibpqのlo_readとlo_writeを使用しています。それが最善の方法ですか?誰かが以前に大きなBLOBを高速で挿入するためにPgsqlを使用したことがありますか?

編集:PgSqlが最近Windowsに移植されたと聞きました。これが理由の1つでしょうか?

4

3 に答える 3

21

Windows上のPostgreSQLは、移植時にトレードオフが発生したため、他のソリューションと比較して追加のオーバーヘッドを支払う場合があります。

たとえば、PostgreSQLは接続ごとにプロセスを使用し、MySQLはスレッドを使用します。Unixでは、これは通常、目立ったパフォーマンスの違いではありませんが、Windowsでは、新しいプロセスの作成に非常にコストがかかります(fork()システムコールがないため)。このため、PostgreSQLを使用する場合、Windowsでは持続的接続または接続プールを使用することがはるかに重要になります。

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

また、データベースの構成をどのように調整したかについても何も言及していません。デフォルトでは、PostgreSQLに付属の設定ファイルは非常に保守的です。何も変更していない場合は、必ず確認する必要があります。PostgreSQLwikiで利用可能なチューニングアドバイスがいくつかあります。

さらに詳細を提供するには、実行速度が遅いものと、データベースをどのように調整したかについて、より多くの詳細を提供する必要があります。pgsql-generalメーリングリストにメールを送ることをお勧めします。

于 2009-07-22T07:12:07.810 に答える
7

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

あなたは本当にWindows上で8.2を実行するべきではありません。私の意見では、8.3は真に本番環境に対応した最初のWindowsリリースでした。8.4はまだ優れています。とにかく8.2はかなり時代遅れであり、アップグレードすることができれば、いくつかのメリットを享受できます。

考慮すべきもう1つのことはチューニングです。PostgreSQLは、最適なパフォーマンスを実現するためにMySQLよりも多くの調整を必要とします。基本的な調整以上のヘルプが必要な場合は、メーリングリストの1つに投稿することを検討してください。

于 2009-07-22T00:00:28.380 に答える
-1

PostgreSQLは、特定の時点までMySQLよりもすでに低速です(途方もなく大きなデータベースがある場合、実際には高速です)。参考までに、これは問題の原因ではありませんが、それを覚えておいてください。

于 2009-07-22T00:06:28.040 に答える