Perconaで実行するよりも、3ノードのMySQLデータベースクラスターがあります。 1つのヒットに多数の行を挿入するストアドプロシージャがあります。
これは(私たちのDBAによって)警告されましたが、これによりクラスターがクラッシュする可能性がありますが、これに関してオンラインで何かを見つけることができません。
誰かが洞察を提供できますか?
いくつかの一般的な考慮事項、最初に:
MySQL、特にInnoDBについて話していますが、OLTPロード、特にポイントSELECTSと書き込みのパフォーマンスを向上させるために最適化されています。これは、バルク挿入を実行できないことを意味しません(600デスクトップグレードSSDで000行挿入/秒)ですが、主にトランザクション処理/インデックスのマージなどで追加のロックと追加のリソースを取得することにより、他の操作のパフォーマンスに影響を与えます。
密なクラスタリングソリューション(MySQLモデルの場合)でネットワークを介して分散する場合、大規模なトランザクション処理のオーバーヘッドが悪化します。複数のノードにまたがって多数の行を同期的にロードする必要があるという事実は、通常、大量のメモリを必要とし、NDBやGaleraなどの堅固に接続されたノードソリューションではそれらを問題にします。
今ガレラの詳細に:
ws_max_size_rows
が128K(128 000行)であり、wsrep_max_ws_size
が1GBであることです。これらの値は構成可能ですが、トランザクションが構成された値よりも大きい場合、ロードプロセスは直接失敗します。[pt-fifo-split][1]
のようなイベントツールがあります。別の方法として、これらのファイルを一時的に非同期にしながら、一度に1つずつ各ノードに個別にロードすることもできます。これは議論すべきではない1つの質問です-本番クラスターがある場合、あなたが最初に論文を試すことができるテストクラスターが必要です。最良のシナリオでは、恐ろしいパフォーマンス/デッドロックが発生します。通常、メモリが不足し、1つ以上のノードがクラッシュし、クラスター全体がクラッシュします。
ガレラの動作の背後にある理由、およびパフォーマンスを犠牲にしてダウンタイムを回避する方法について詳しく知るには、以下をお読みください。