web-dev-qa-db-fra.com

Google Cloud SQL est lent

J'ai une instance Cloud SQL de taille D0. Quand je lance un simple

select * from table

qui a environ 500 lignes, il faut en moyenne 100 ms pour être exécuté (comme indiqué par l’invite SQL). Alors que sur mon instance locale de MySQL 5.5, cela ne prend que 1 ms. Ma machine de développement dispose d'une mémoire Intel Core i7 à double cœur de 2,9 GHz et d'une mémoire de 8 Go à 1 600 MHz. J'ai lu dans un FAQ que les performances de la base de données dépendent de la taille - les instances plus grandes ont plus de RAM et de la CPU.

Est-il raisonnable de s'attendre à ce que les problèmes de performances soient résolus avec une taille d'instance plus grande? Ou est-ce que je manque quelque chose d'autre ici?

21
andriys

Les vues étaient la cause de mauvaises performances. Google utilise son propre moteur MySQL, optimisé de manière à gêner l'affichage. Si vous avez plusieurs jointures ou/et les syndicats s'attendent à ce que les vues soient lentes.

Cependant, cela fait presque un an que j'ai posté cette question et les choses ont peut-être changé. Je n'ai pas revu les points de vue depuis que nous avons cessé de les utiliser.

5
andriys

EDIT: 10 avril 2016

GAE propose désormais MySQL Cloud de deuxième génération, où même un niveau de base tel que «db-g1-small» fonctionne aussi rapidement qu'un niveau D8 de l'ancienne offre Cloud SQL. C'est aussi beaucoup moins cher. Cela semble être une étape importante et il n'y a plus aucune raison de recourir aux piratages et aux solutions de contournement.

Vous pouvez consulter les tarifs Cloud SQL, mais le coût minimum approximatif est d'environ 20 USD par mois.

ORIGINAL POST

Google installe simplement le VM sur une boîte lente du niveau D0. Vous pouvez choisir D4 mais RAM n'est pas le problème principal autant que le processeur (ils ne mentionnent pas le GHz).

La latence du réseau n'est pas le problème. Par exemple les 0.05s ci-dessous correspondent au temps d'exécution de la requête sur le serveur uniquement. Par la suite, vous pourriez consacrer tout votre temps à la transmission de données.

mysql> select * from tracking limit 5;
+--------------------------------+-----------+-----------+
| id                             | scan_date | status    |
+--------------------------------+-----------+-----------+
| 420006929400111899561510697350 | NULL      | Delivered |
| 420010859400111899561989496058 | NULL      | Delivered |
| 420019849400111899561989496331 | NULL      | Delivered |
| 420100109400111899561903290311 | NULL      | Delivered |
| 420100319400111899561944407020 | NULL      | Delivered |
+--------------------------------+-----------+-----------+
5 rows in set (0.05 sec)

Edit: Mars 2016

Pour plusieurs applications, je n'utilise plus Cloud SQL, mais plutôt un cluster MySql de base hébergé à distance depuis que GAE a ouvert des connexions de socket sortantes. Cela semble fou? Pas selon les chiffres - envoyer une requête et récupérer des données via cette connexion de socket est plus rapide qu'un D3 co-localisé.

3
Fakeer

Nous avons également eu le même problème. Avec une instance D16, une page de forum de site Web simple prendrait plus de 10 secondes à charger. Je viens de parler à un ingénieur du support technique GoogleCloud, qui a confirmé que CloudSQL n'est pas vraiment prêt pour la "performance" (à partir de l'été 2015), et il a recommandé de tout réécrire pour utiliser DataStore ...

Donc, si vous avez des pages qui font des dizaines de petites requêtes SQL et un jeu de données trop volumineux pour tenir entièrement dans le cache, alors CloudSQL n'est pas une solution viable pour le moment.

2
stephane
  1. Où vous connectez-vous à votre instance Cloud SQL?
  2. La taille de la couche aura un impact important sur les performances. Vous pouvez modifier temporairement le niveau de l'instance pour le tester.
2
Joe Faith

Voici notre mise à jour en janvier/2019.

Utilisation de Google Cloud SQL SECOND GENERATION avec une base de données de 46 Go dans une instance de 4vcpu + 15 Go RAM, elle peut être ridiculement lente même par rapport à un macbook pro dev exécutant l'installation par défaut de MySQL avec seulement 125 Mo de mémoire allouée à cela:

Mysql: Google Cloud SQL avec 10 Go RAM est 20 fois plus lent que Macbook Pro configuré avec 125 Mo de RAM

0
sandre89