Aller au contenu

SQL qui sature...


Sujets conseillés

Posté

Bonjour,

j'ai besoin de vos lanternes "bien éclairées" pour répondre à une petite question que je n'arrive pas à comprendre...

Je vais essayé d'être le plus clair possible (c'est pas gagné avec moi) :rolleyes:

Voilà, j'ai deux sites (portail php). Il s'agit de deux communautés, une avec un peu plus de 25.000 membres inscrits (A) et une autre plus récente avec un peu plus de 5000 membres inscrits (B).

hébergés tous les deux un serveur dédié. Je ne m'y connais pas en serveu mais j'ai les infos suivantes:

Processeur P4

Cadence 3.0 GHz

Disque dur 2 x 80 Go

Carte RAID 3ware 8000 administrable à distance

Type du disque dur IDE

RAM 1024 Mo

Carte réseau 100 Mbps

Bande passante garantie 24x7 : 2 Mbps

Débit crête (burst) : 5 Mbps

Bande passante totale : 7 Mbps

Le nombre de connectés en même temps est souvent d'environ 200-250 sur le A et 100-150 sur le B.

Les sites contiennent des fichiers à télécharger, des news, des commentaires, des livres d'or, des forums bref comme tout portail.

Le problème est que le site A rame puis bloque le site et affiche une fenêtre du script comme quoi la base MYSQL est saturée. Mon hébergeur confirme que le problème vient de MYSQL. J'admet bien entendu que les portails sont généralement lourd en ressource mais ce que je comprends pas bien, c'est que quand le site A est planté le B l'est aussi mais... si le A rame comme la plupart du temps pour le moment, le B ne rame pas et fonctionne à merveille... !?

Ma question est pourquoi les deux sites plantent ensemble mais ne rament pas ensemble ?

Merci d'avance ;)

PS:Pour continuer à faire tourner les deux sites, je pense passer sur un Dual Core.

Posté

Je ne suis pas sur de ma réponse mais lors de la création de ta table ta clés primaire ( généralement appelé id_quelque chose) tu l'a mise à combien

parce que si tu l'a mise à 2 par exemple elle sature au bout de 99 connectés (je crois que c'ets ça).

Donc si tu a compris mon explication tu dois mettre ta clés primaire à un chiffre plus grand ceci lui permettra d'avoir plus de personnes connectées sans que Mysql rame.

Posté
Je ne suis pas sur de ma réponse mais lors de la création de ta table ta clés primaire ( généralement appelé id_quelque chose) tu l'a mise à combien

parce que si tu l'a mise à 2 par exemple elle sature au bout de 99 connectés (je crois que c'ets ça).

Donc si tu a compris mon explication tu dois mettre ta clés primaire à un chiffre plus grand ceci lui permettra d'avoir plus de personnes connectées sans que Mysql rame.

Là je reconnais que j'ai du mal à suivre, et tu fais bien de dire "je ne suis pas sûr..."

Je ne vois pas en quoi une clé primaire peut faire ramer mysql, sauf si son index est manquant (ou détruit). :whistling:

Le nombre maximum de connectés sous mysql est défini dans le fichier de config mysql, le plus souvent /etc/my.cnf, et non dans une "cle primaire" ;)

Dan

Posté (modifié)

oups autant pour moi alors

je pensais que lorsque que tu défini mal tes clés primaire celle ci "ce bloque" si tu as mal défini le type de ton attribut et son nombre

donc si tu met 2 à id en INT il ce bloque " lorsqu'il arrive à 100"

mais bon visiblement le site fabbelgique les connectés ne sont pas inscrit dans la base de données donc ma réponse ne marche pas :wacko:

Modifié par Slimer
Posté

@fabbelgique,

Si mysql ne sature que sur l'un des sites, tu as probablement un index qui n'est plus à jour et cela charge ton serveur inutilement.

Il est aussi possible qu'un fichier index manque, tout simplement.

Il faut t'assurer que tous les champs renseignés après un "WHERE" aient un index. Sinon c'est "bonjour les dégâts" en cas de grosses tables.

La meilleure manière de remettre tous les fichiers d'une base à jour est d'utiliser "myisamchk" (il faut que mysql soit arrêté pour ce faire)

Posté

Merci pour vos réponses.

Je viens de chercher sur le Net ce qu'étais un index dans MYSQL, c'est ok je comprends plus ou moins, par contre, ils se trouvent ou les "WHERE" ? Je les vois dans phpmyadmin j'imagine ?

Je n'ai pas vu de "where" dans les tableaux où on voit les "Champ Type Attributs Null Défaut Extra Action"

En parlant de phpmyadmin, Je ne sais pas si il y a un rapport avec les mises à jour dont tu parles mais quand je vais dans mon phpmyadmin, ça dit:

Bienvenue à phpMyAdmin 2.6.2

MySQL 3.23.58

Peux tu encore m'aider stp ?

Posté (modifié)

Non ce n'est pas un type de champ, la clause WHERE compose tes requêtes SQL.

Comme par exemple :

SELECT id FROM tatable WHERE isActif = 1

C'est donc un critère de recherche, et tu dois vérifier qu'il existe bien un index dans la table tatable sur le champ isActif dans notre cas...

Et oui tu peux voir et modifier tout ça dans phpMyAdmin

Modifié par iNCiTE Web

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...