Google Cloud SQL でまともなパフォーマンスを得るのに苦労しています。たとえば、かなり基本的な CRUD 操作を行っています。
public BaseUser getUser(String token) throws SQLException{
Connection conn = DriverManager.getConnection(JDBC_CON_STRING);
PreparedStatement ps = conn.prepareStatement(GET_USER_BY_TOKEN_QUERY);
ps.setString(1, token);
ResultSet rs = ps.executeQuery();
List<BaseUser> users = inflateUser(rs);
if(users.size() == 0){
return null;
}
if(users.size() > 1){
logger.info("DATABASE MAY BE CORRUPTED, THERE'S MORE THAN 1 USER WITH THE SAME TOKEN");
}
ps.close();
rs.close();
conn.close();
return users.get(0);
}
また、各クエリの平均応答時間は 450 ミリ秒です。+= openConnection の場合は 150、操作の場合は 150、close の場合は 150。画像をご覧ください。下。
Google のドキュメント、フォーラム、複数のブログを読みましたが、何が間違っているのかわかりません (何か間違ったことをしているに違いありません。450 ミリ秒/クエリは非常に難しいです...)
更新 1:私は決定的に Google Cloud SQL の問題ではありません。独自のローカル MySQL サーバーをインストールしましたが、パフォーマンスが大幅に向上しました (「挿入または更新」で 80 ミリ秒、最後にコミットを選択します)。 Google 開発者からのヒント。チーム、私は Google クラウド プラットフォーム全体が本当に気に入っていますが、そのレベルのレイテンシで作業することはまったく不可能です =(
UPDATE 2: 2014/05/06遅延の問題は D0 または D16 と同じです。10000 行 (3 つの varchar と最大 100 バイトの blob) を挿入しようとすると、待機時間のため、Google ComputeEngine VM から 32 秒かかります。所要時間は、10000 回の挿入と 1 回のバッチ挿入で同じです。64 スレッドを使用すると、所要時間は 3 秒に短縮されます。ネイティブの mysql jdbc ドライバーでテストしました。
助言がありますか?ありがとう!