パーティション分割された Oracle テーブル (実際には数列、およそ 100G 程度のサイズ) からデータを読み取り、パーティションの数に等しい数のスレッドを使用して Cassandra クラスターにロードする Java アプリがあります。進行状況を監視するスレッドは、次のように各スレッドの進行状況を表示します (@ ?? ms/rec で挿入された行)。
問題は、(while ループ内から) どの API メソッド (insert/batch_mutate) を呼び出しても、レイテンシが着実に増加していることです。ご覧のとおり、10ms/rec 未満で開始し、着実かつ一貫して上昇しています。何が原因か推測できますか?
PS : いくつかの理由で、hector よりも raw thrift クライアントを選択しました。それが利用可能な唯一のソリューションでない限り、より高いレベルのクライアントを選択することはできません。いずれにせよ、私はこの奇妙な行動に興味があります。
監視スレッドからのサンプル出力:
24@0 ms/rec, 135323@485 ms/rec, 131821@513 ms/rec, 155841@339 ms/rec, 243@0 ms/rec, 226146@538 ms/rec, 0, 0, .
24@0 ms/rec, 135431@523 ms/rec, 131939@427 ms/rec, 156008@316 ms/rec, 243@0 ms/rec, 226247@553 ms/rec, 0, 0, .
24@0 ms/rec, 135534@535 ms/rec, 132052@506 ms/rec, 156172@345 ms/rec, 243@0 ms/rec, 226355@472 ms/rec, 0, 0, .
24@0 ms/rec, 135643@519 ms/rec, 132171@455 ms/rec, 156323@387 ms/rec, 243@0 ms/rec, 226464@492 ms/rec, 0, 0, .
24@0 ms/rec, 135735@498 ms/rec, 132273@514 ms/rec, 156466@355 ms/rec, 243@0 ms/rec, 226561@508 ms/rec, 0, 0, .
24@0 ms/rec, 135858@474 ms/rec, 132404@455 ms/rec, 156630@330 ms/rec, 243@0 ms/rec, 226676@533 ms/rec, 0, 0, .