私たちは、アプリケーションでOracleデータベースの代わりにPostgreSQL DBを評価しようとしています。 PostgreSQL 9.5は、128 GBのメモリ、32のCPUコア、SSDストレージを備えたLinuxマシンにインストールされています。接続プールと分散トランザクションはJBoss 7アプリケーションサーバーによって管理され、SQLクエリはHibernate 4によって生成/実行されます。ほとんどのテーブルには数千万の行があり、そのうちの1つに何百万行もあります。合計で約3000のデータベース接続(アプリケーションサーバーによってプールされます)がアクティブで同時に使用されます。いくつかのクエリを変更し、低速のインデックスを作成し、ドキュメントに基づいてDBとOSの設定を調整しました。しかし、スループットは数倍遅く、最終的にDB応答時間は10〜20倍になります。何千もの接続と分散トランザクションによるPostgreSQL DBのパフォーマンス問題
私はいくつかのグーグルをやったと私はPostgreSQLのDBを同じ方法で使用して他の誰(AB)についての情報を見つけることができませんでした。この高い数値を使用して、アクティブなデータベース接続
- を1つのテーブルの行の取引(準備されたトランザクション)
- 保存億
分散Oracleはさらに高い負荷を処理問題ありません。私はあなたの経験、提案、リンクなどを共有
ZalandoはPostgresを使用しており、同時に多くのクライアントにサービスを提供しています。だから、エンジンが面倒ではないのですが、私はそれを伝えることができます:)大規模なテーブルを扱うためには、パーティション化が便利です。この質問はかなり広範ですが、私はあなたが期待する答えを得るつもりはないと思っています。 –
コメントありがとうございます。 GITリポジトリ(https://github.com/zalando/patroni/search?utf8=%E2%9C%93&q=prepared)に基づいて、分散トランザクションは使用しません。max_prepared_transactions = 0 デフォルト値max_connectionsは100です。私は生産価値が異なる可能性が高いことを理解しています。 –
独自のトランザクションマネージャがありますか?分散トランザクションを使用して、クラスタ上の異なるデータベース間でグローバル・トランザクションを許可していますか?代わりに報酬を考えましたか? –