2011-09-02 4 views
0

En prévision d'un scénario en direct, j'ai construit mon site entier sur un Thinkpad 390x qui a un processeur de 500 MHz avec 256 Mo de RAM à 100 MHz.Mysql Matériel de serveur local

J'ai chargé ma base de données avec plus de 200 000 lignes de données parasites, en essayant de tester mes requêtes. J'ai remarqué
un énorme succès de performance à cause de cela évidemment. Toutes mes requêtes utilisent des index, mais certains contiennent jusqu'à 15+ (avec tous les indices).

MySQL dispose de 16 Mo de cache activés, ce qui réduit les temps de requête à presque rien, mais à quelles conséquences? Avec un site Web dynamique, je ne vois pas comment un cache pourrait beaucoup aider lorsque j'autorise des requêtes uniques comme une fonction de recherche. J'utilise aussi eaccelerator pour le PHP.

Les requêtes de plus de 10 secondes se produisent lorsque j'utilise COUNT(*) AS total avec plusieurs conditions JOIN et WHERE. Les autres requêtes qui ne récupèrent qu'une seule ligne ou deux fonctionnent au même niveau que lorsque je n'avais que quelques lignes. J'ai également remarqué que mysqld frappe 99,7% de la contrainte du processeur lors d'une requête presque immédiatement. Essentiellement, je ne sais pas si le logiciel est en faute ou plus du matériel. L'ordinateur portable est ancien, mais en même temps, il n'a qu'une seule charge à s'inquiéter sans que d'autres utilisateurs mettent l'accent sur la base de données.

Merci

EDITExplain statement sur un enfant de trouble qui prend ~ 8 secondes: Here is more informations sur la configuration de la table

+0

Vous aurez besoin de poster plus de détails pour déterminer quel est le problème. CREATE TABLE instructions et un EXPLAIN sur la requête lente serait un bon début. –

+0

Merci. J'ai ajouté un 'EXPLAIN' et [voici plus d'info] (http://stackoverflow.com/questions/7238781/slow-group-concat-query) sur mon installation de la table: – Justin

+0

Est-ce une requête de la vie réelle qui sera courir sur une base régulière? Il semble très inhabituel d'avoir une table 15+ join. Je comprends que vous essayez de normaliser, mais il y a une chose comme la surnormalisation. –

Répondre

1

Il est très difficile de savoir, sans comprendre pleinement la structure de la table, les données et les requêtes, mais Ce que vous décrivez ressemble à des temps de réponse raisonnables pour les requêtes que vous exécutez. Voici quelques réflexions:

  • Envisagez de réduire la taille de la requête. Seulement demander ce dont vous avez besoin à l'époque, pas tout ce dont vous pourriez avoir besoin à la fin.
  • Souvent, quelques petites requêtes surpasseront une énorme
  • Selon la taille de votre base de données, vous pourrez peut-être lancer suffisamment de RAM sur le serveur pour garder toute la base de données en RAM, ce qui rend les requêtes Plus vite.
  • Essayez d'organiser vos requêtes afin de filtrer vos données sur la première table de votre liste. Il semble que votre première table renvoie 17 000 enregistrements qui doivent être filtrés par le reste des tables. Cela peut être nécessaire, mais peut-être que les tables pourraient être organisées différemment.
Questions connexes