2013-01-03 8 views
6

Je vais avoir du mal à obtenir des performances décentes avec Google Cloud SQL, je fais quelques opérations CRUD assez basique, par exemple:mauvaises performances Google Cloud SQL

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); 
} 

Et obtenir une moyenne de 450 ms Reponse temps pour chaque requête. + = 150 pour openConnection, 150 pour l'opération, 150 pour close. Voir l'img. au dessous de.

enter image description here

J'ai lu la documentation Google, des forums et des blogs multiples et ne peux toujours pas voir ce que je fais mal (je dois faire quelque chose de mal, 450MS/requête est wayyy à bien .. C'est définitivement un problème de Google Cloud SQL, j'ai installé mon propre serveur MySQL local et j'ai de meilleures performances (80ms pour un "insert ou update", puis sélectionnez enfin commit .), j'espère que je pourrais obtenir quelques conseils de Google dev. équipe, je aime vraiment toute la plate-forme cloud Google, mais il est tout simplement impossible de travailler avec ce niveau de latence = (

MISE À JOUR 2: 06/05/2014 Le problème de latence est le même avec un D0 ou un D16 La tentative d'insertion de 10000 lignes (3 varchar et un blob de ~ 100bytes) prend 32s à partir d'une machine virtuelle Google ComputeEngine en raison de la latence, la durée est la même avec 10000 insertions et un seul enregistrement par lots. est en baisse à 3. Je l'ai testé avec le pilote natif MySQL jdbc.

Toutes les suggestions? Merci!

+0

Etes-vous certain que votre schéma est indexé correctement? – jon

+0

C'est une table de test avec + - 15 colonnes et un index secondaire. Si je suppose que ça doit aller. Notez également que la connexion et les opérations de fermeture prennent plus de 100 ms, ce qui n'est pas normal ... –

+0

Avez-vous accordé l'accès à votre instance Cloud SQL à plusieurs applications de moteur d'application? –

Répondre

0

J'ai eu un problème nuage GAE + SQL utilisé avec php et la prise.

Le problème était ma requête qui utilisait en fait 3 requêtes et lisait des milliers de lignes même difficiles à sortir en couple. Je l'ai trouvé avec HeidiSQL et j'ai mis EXPLAIN devant la requête de sélection.

Had pour faire la jonction à côté php afin que le temps de chargement (inspecté dans devtools chrome, pas mysql temps d'exécution) de cette requête ensemble est passé de 600 ms à 151 ms

Questions connexes