私のサーバでパフォーマンスの問題があります。Javaを使用したMySQLデータベースへの低性能書き込み
私は、仮想サーバーを借りてきた(4 GB、2 vCores /スレッド):
は今ここにセットアップです。このサーバー上では、TCPを介して第2のサーバーに接続するJavaプログラムを実行します。サーバ1がサーバ2に接続すると、サーバ2は連続的にデータを送信し始めます(1分あたり約250,000行、各行は約50バイトのデータ)。サーバ1は、各行を分割し、サーバ1上で動作するMySQLデータベースのテーブルに行を追加してデータを格納します。
これは関連するJavaパーツです。
受信データ:ちょうどまっすぐ進む
InputStream in = socket.getInputStream();
BufferedInputStream bin = new BufferedInputStream(in);
InputStreamReader inReader = new InputStreamReader(bin, "UTF-8");
BufferedReader reader = new BufferedReader(inReader);
String line;
... something...
while((line = reader.readLine())!=null) {
mySqlConn.WriteReferenceData(line);
}
}
すべて。書き込みデータ:
public void WriteReferenceData(String line) {
String[] data = line.split(";");
String query = " insert into reference (field1, field2, field3, field4, field5, field6, field7, field8)"
+ " values (?, ?, ?, ?, ?, ?, ?, ?)";
try {
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setString (1, data[0]);
preparedStmt.setString (2, data[1]);
preparedStmt.setString (3, data[2]);
preparedStmt.setString (4, data[3]);
preparedStmt.setString (5, data[4]);
preparedStmt.setString (6, data[5]);
preparedStmt.setString (7, data[6]);
preparedStmt.setString (8, data[7]);
preparedStmt.execute();
}
catch (Exception e) {
... something...
}
}
パフォーマンスを向上させるにはどうすればよいですか?
1.)サーバーが遅すぎるので、まったくありませんか?
2.)別の言語を使用していますか(インタープリタなしなど)。
3.)ちょっとしたプログラミングですか?
ありがとうございました! Raphael
それほど多くの要素が影響を受ける可能性があります:接続プールの不在、非公開のステートメント、各ステートメントの単一のトランザクションなどなど – Andremoniy
私はすでに同様の質問に似ています。http://stackoverflow.com/a/ 43778950/5558072代わりにバッチステートメントを使用できます –
私は同意します。これは遠隔からデバッグする(ほとんど)不可能です。単一のSO質問に基づいています。そして、心に留めておいてください:これは私たちが無料(よく、評判が私たちの一部を得る)のために手助けするコミュニティです。しかし、商用製品にこのような問題がある場合、おそらく弾丸を噛んで、そのような問題を素早く解決する方法を知っている孤独な銃のために雇う必要があります。 – GhostCat