Sto avendo un momento difficile ottenere prestazioni decenti con Google Cloud SQL, sto facendo alcune operazioni CRUD piuttosto di base, per esempio:Poor prestazioni di 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);
}
E ottenere una media di 450ms reponse tempo per ogni query. + = 150 per openConnection, 150 per operazione, 150 per chiusura. Vedi la img. sotto.
Ho letto la documentazione di Google, forum e blog multipli e ancora non riesco a vedere quello che sto facendo male (io devo fare qualcosa di sbagliato, 450ms/query è wayyy a molto .. .)
uPDATE 1: I'ts definitivamente un problema di Google cloud SQL, ho installato il mio server MySQL locale e sto avendo modo migliore performance (80ms per un "inserire o aggiornare", quindi selezionare finalmente impegnarsi .), spero di poter ottenere alcuni suggerimenti da Google dev. squadra, mi piace molto l'intera piattaforma cloud di Google, ma è semplicemente impossibile lavorare con quel livello di latenza = (
UPDATE 2: 2014/05/06 Il problema di latenza è lo stesso con un D0 o un D16 .Il tentativo di inserire 10000 righe (3 varchar e un blob da ~ 100 byte) richiede 32 secondi da una VM di Google ComputeEngine a causa della latenza.La durata è la stessa con 10000 inserti e un singolo batch inserto.Se io uso 64 thread, quindi la durata è giù per 3s. ho provato con il driver JDBC mysql nativo.
Qualche suggerimento? Grazie!
Sei sicuro lo schema è indicizzato correttamente? – jon
È una tabella di prova con + - 15 colonne e un indice secondario. Si credo che vada bene. Inoltre, tieni presente che le operazioni di connessione e chiusura richiedono più di 100 ms, il che non è normale ... –
Hai concesso l'accesso all'istanza di Cloud SQL a più di un'applicazione del motore di app? –