2011-03-27 3 views
2

Je ne peux pas acheter plus de matériel. J'ai 2gig ram pour mysql.Mysql Scaling pour petite application

Maintenant, mon widget est affiché sur 57 sites avec 3000 vues en moyenne. Mon widget nécessite 200 insertion par vue pour optimiser le contenu du contenu. ce qui signifie en moyenne près de 400 insertions par seconde.

Maintenant, que proposez-vous que je fasse pour accélérer les inserts. Les données insérées sont divisées dans les trois tableaux, deux d'entre eux recevant chacun 80 et le dernier 40 insertions. J'utilise MYISAM, je n'aime pas INNODB parce que je ne l'ai jamais utilisé, ni je ne suis pas confortable à l'utiliser en ce moment, mais une bonne raison peut me persuader de le faire. Le problème est que, aux heures de pointe, il y a environ 1200 insertions par seconde, ce qui est un véritable goulot d'étranglement.

Principalement les requêtes sont des mises à jour pour augmenter les impressions. Donc mettre à jour les impressions = impressions + 1 où widget = widget_id

Toutes les suggestions pour accélérer les requêtes de base de données seraient fantastiques.

Il peut également y avoir un cache pour les insertions, par exemple des insertions en cours dans un lot. Quelque chose comme ca. Inserts opportuns, encarts en vrac, etc. BTW, j'apprécierais vraiment si cela pourrait être expliqué dans les détails, puisque je suis un noob complet.

Merci les gars

Répondre

7

Il est dans votre intérêt de considérer InnoDB. InnoDB est l'endroit où MySQL se comporte le plus comme les autres bases de données relationnelles appropriées et offre le plus de fiabilité et de fonctionnalité. Dans votre cas, le plus gros inconvénient immédiat de MyISAM est que toute la table est verrouillée chaque fois qu'une ligne est insérée ou mise à jour. Bien que MyISAM soit très rapide pour les projets à petite échelle, si vous avez beaucoup d'inserts en cours, cela risque d'être un goulot d'étranglement si ce n'est déjà fait. Vous voudrez probablement plus tard également les clés étrangères, les transactions, etc. qu'InnoDB fournit.

Vous devriez également lire les documents MySQL et les articles au MySQL Performance Blog pour obtenir des conseils sur la configuration optimale de MySQL en ce qui concerne les tampons et autres options de configuration. MySQL Tuner peut également vous aider à déterminer ce dont vous avez réellement besoin. Il affichera des statistiques telles que les pourcentages d'insertion et les pourcentages de sélection, la quantité de mémoire utilisée pour les différents tampons, la performance de votre cache de requêtes, etc. Il donne également des conseils sur ce qu'il faut modifier pour améliorer ces choses, bien que ces conseils devraient être pris avec un grain de sel et de recherche avant de les faire réellement.

+1

Où puis-je obtenir le tuner mysql? – Vish

+1

Si vous utilisez MySQL sous Linux, il y a de fortes chances que votre distribution l'ait dans leur dépôt. Si ce n'est pas le cas ou si vous voulez juste une version plus récente, vous pouvez le télécharger depuis http://mysqltuner.pl – jmichalicek

+1

comment exécuter les scripts pl. – Vish