6

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 ドライバーでテストしました。

助言がありますか?ありがとう!

4

2 に答える 2

1

AppEngine の MySQL Connector/J ドライバーで試してみると、パフォーマンスが向上する可能性があります。使用するクラス名と URL 形式については、https: //developers.google.com/appengine/docs/java/cloud-sql/#Java_Connect_to_your_database を参照してください。

ロブ

于 2013-12-12T16:26:10.130 に答える