1

適切なデータベース設定を必要とする既存のアプリケーションを移行しています。2 つのサーバー構成で単純な mysqlslap テストを実行しました - アプリと db サーバーの組み合わせ、個別のアプリと 2 つの db サーバー (マスター/スレーブ):

mysqlslap --auto-generate-sql --concurrency=50 --number-of-queries=1000 --number-char-cols=50 --number-int-cols=50 -vv

  • 同じインスタンス サイズを使用し、db サーバーから実行されている場合でも、別のサーバーの結果は遅くなります。
  • マイクロタイムを使用してクエリをループする別のテストでは、サーバー間にかなりの遅延があります。例: テスト 1 は、結合で 0.01 秒、分離で 0.1 秒であり、3.0 (分離) と比較して 0.2 (結合) です。

私の質問:

  1. これらは期待される結果ですか?
  2. サーバー間の待ち時間を最小限に抑える方法はありますか?
  3. sysbench を使用して既存のサーバーと照合することはできません。実行したテストは満足のいくものですか、それともより良い代替手段がありますか?
4

1 に答える 1

4

MySQL のスペシャリストではありませんが、現実は気にしません ;)
物理も同じです。

  1. はい。ネットワークを導入すると、遅延があります。
  2. リクエスト、バッチ。45 ナノ秒の遅延を保証します。一般的に: 小さなリクエスト、バッチを作成しないでください。
  3. general は小さなセットの場合があります。私が持っていたデータベースサーバーは数百でヒットしていました。一般的に 1000 クエリは小さなセットかもしれません。

最後に、遅延があります - それに対処してください。これを行う主な方法は、行ごとではなく、データのバッチを要求することです。次に、「レイテンシー」は 1 つのスレッドに対するものであることを理解してください。容量が大きいため、スループットはさらに高くなる可能性があります。それはここでのトレードオフです。

もしよろしければ: 大規模なアプリケーションはすべて分割されているため、対処できないわけではありません。ただし、実際のデータベース サーバーがあると役立ちます。基本的に、マシンは別のボトルネックにならないように十分強力でなければなりません。レイテンシが得られ、スケーラビリティも得られます。通常、スケーラビリティはレイテンシよりも価値があります。

繰り返しますが、これは物理学です。ここでは、MySQL に固有のものは何もありません。

于 2012-12-18T20:56:42.787 に答える