sql >> データベース >  >> RDS >> PostgreSQL

心理的パフォーマンスについて

    数日前に、PostgreSQL用の完全にオープンソースの論理レプリケーションソリューションであるpglogicalをリリースしました。これは、それほど遠くない将来にPostgreSQLツリーに含まれることを願っています。論理レプリケーションによって可能になるすべてのことについて説明するつもりはありません。pglogicalリリースの発表は非常に優れた概要を示し、Simonは数日前の別の投稿で論理レプリケーションの利点についても簡単に説明しました。

    代わりに、発表で言及された1つの特定の側面、つまり既存のソリューションとのパフォーマンスの比較についてお話ししたいと思います。 pglogicalページの言及

    ベンチマーク

    この投稿では、各ソリューションが遅れることなく処理できる最大の「持続可能な」スループット(1秒あたりのトランザクション数)を見つけるために実行したベンチマークの詳細について説明します。これを行うために、さまざまな数のクライアントを使用してi2.4xlarge AWSインスタンスのペアでいくつかのpgbenchテストを実行し、マスターのスループットとスタンバイが追いつくまでにかかった時間を測定しました(遅れていた場合) 。次に、その結​​果を使用して、スタンバイノードの最大スループットの見積もりを計算しました。

    たとえば、16のクライアントでpgbenchを30分間実行し、マスターで10000 tpsを測定したが、スタンバイが遅れており、追いつくのにさらに15分かかったとします。その場合、最大の持続可能なスループットの見積もりは

    tps =(実行されたトランザクション)/(スタンバイが追いつくまでの合計実行時間)

    つまり、

    tps =(30 60 10.000)/(45 * 60)=18.000.000 / 2.700 =6.666

    したがって、その場合、スタンバイでの最大の持続可能なスループットは6.666 tpsです。つまり、マスターで測定されたトランザクションレートの約66%にすぎません。

    システム

    ベンチマークは、同じプレースメントグループで構成されたi2.4xlarge AWSインスタンスのペア(つまり、それらの間に最大2Gbitのネットワーク接続がある)と、RAID-0で構成された4x SSDドライブ(I/Oがここで問題が発生します)。インスタンスには最大122GBのRAMがあるため、データセット(スケール5000のpgbench)はRAMに収まります。すべてのテストは、まったく同じ構成のPostgreSQL 9.5.0で実行されました:

    checkpoint_timeout = 15min
    effective_io_concurrency = 32
    maintenance_work_mem = 1GB
    max_wal_size = 8GB
    min_wal_size = 2GB
    shared_buffers = 16GB

    すべてのレプリケーションシステムで、特に最新の利用可能なバージョンが使用されました

    • slony1 2.2.4
    • skytools 3.2

    チュートリアルで説明されているように、単純なレプリケーションが設定されました(どちらもベンチマークに使用されたpgbenchの例を使用します)。

    結果

    次に示す結果には、論理レプリケーションに関連するオーバーヘッドをより正確に把握できるように、ストリーミングレプリケーション(非同期モード)も含まれています。トランザクションレートは、pgbenchで測定された「生の」数値ではなく、この投稿の冒頭に示した式を使用して計算された「持続可能な」レートです。

    クライアント ストリーミング pglogical slony londiste
    1 1075 1052 949 861
    2 2118 2048 1806 1657
    4 3894 3820 3456 1643
    8 6506 6442 2040 1645
    16 9570 8251 1535 1635
    24 11388 7728 1548 1622
    32 12384 7818 1358 1623

    1. MS Accessの破損パート2:予防と回復のためのベストプラクティス

    2. OracleSIDとサービス名。接続の問題

    3. SELECTタイプのクエリは、ネストできる唯一のタイプですか?

    4. SQLServerピボットと複数結合