IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Diverses questions concernant mysql et php


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Diverses questions concernant mysql et php
    Bonjour,

    Je poste mes questions dans cette rubrique car la plupart concernent MySQL.

    Je travaille sur un gros projet que nous avons monté avec des amis depuis plus de 2 ans et qui fonctionne de mieux en mieux. J'ai appris beaucoup de choses concernant le dév. web en php/MySQL sur le tas, mais je rencontre régulièrement des problèmes et des choix à faire que j'aimerais vous soumettre pour avoir votre avis.

    1/ Une question concernant la taille des tables MySQL. Certaines des tables que nous utilisons sont très grosses en taille et en nombre de ligne. Par ex. l'une d'elle fait plus de 5 millions de lignes et 510M. A partir de quel moment la taille d'une table risque de devenir un vrai problème?

    En outre, lorsque cela est possible, est-il intéressant de spliter en plusieurs les tables qui grossissent? Par exemple, sortir les infos d'abonnement de la table des membres pour le lire avec un LEFT JOIN?

    Inversement, lorsque l'on lit une dizaine de tables différentes regroupant des infos de même type, est-ce intéressant des les réunir en une seule en y ajoutant simplement une colonne donnant le type d'info lue, au risque de se retrouver avec une table 10 fois plus volumineuse qu'une seule de ces 10 tables?

    2/ J'ai assez souvent des erreurs de type :
    1213 deadlock
    1205 lock time out exceeded
    et ce même sur des tables en InnoDB ou des tables temporaires.
    Comment éviter au mieux les problèmes de concurrence d'accès sur des tables qui sont souvent lues et modifiées? Cela dépend-il des configs serveurs?

    3/ J'utilise les sessions en base pour accélérer leur lecture; cependant, je constate que par moment (sans doute à cause de la charge?), je perds des informations de session. C'est très génant quand une session sert à stocker des infos importantes du type "âge du membre" ou "mail d'envoi". Que faire pour blinder l'utilisation des sessions en base?
    J'écris souvent les variables en session pour éviter d'aller les relire ensuite dans la base et ainsi réduire le nombre de select. Mais est-ce vraiment si utile que ça?

    4/ Et enfin, dernière question, certaines pages du site utilisent entre 4 et 8 requêtes AJAX; or, je constate que de temps en temps, aucune des requête n'aboutit. Je recharge la page par F5 et automatiquement, les requêtes aboutissent. C'est assez génant d'afficher un message "chargement en cours" qui ne donne rien de plus!
    Avez vous rencontré ce problème, ou des idées à me donner sur le sujet?

    En vous remerciant d'avance et en espérant avoir respecté l'esprit de ce forum,

    Chnain

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Es ce que toutes les lignes sont utilisées ? Si non, il est conseiller de supprimer les lignes inutiles pour qu'elles n'apparaissent pas dans le résultat de tes requêtes.
    Si les requêtes sont si longue que ça, il y a peut être un problème au niveau de l'architecture de la base (données redondantes, etc...).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par raptor70
    Es ce que toutes les lignes sont utilisées ? Si non, il est conseiller de supprimer les lignes inutiles pour qu'elles n'apparaissent pas dans le résultat de tes requêtes.
    Si les requêtes sont si longue que ça, il y a peut être un problème au niveau de l'architecture de la base (données redondantes, etc...).
    Non, la base est relativement bien optimisée : nettoyages par crontab chaque nuit des incohérences et des données inutiles. Je ne pense pas qu'il y ait de colonnes inutiles et des EXPLAIN ont été exécutées sur toutes les tables.
    Les deadlock ne sont pas forcément dues à des slow queries, je pense.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Euh... personne ici pour me donner de conseils? Où sont cachés les experts? :-(

Discussions similaires

  1. Question concernant integration BIRT- PHP
    Par nabil.brarou dans le forum BIRT
    Réponses: 28
    Dernier message: 24/07/2012, 08h55
  2. Diverses questions concernant un formulaire
    Par nid4mail dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/04/2011, 14h54
  3. [MySQL] Communication et questions concernant php/MySql
    Par ash_rmy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/03/2007, 20h38
  4. C++ diverses questions concernant directX
    Par TERRIBLE dans le forum DirectX
    Réponses: 5
    Dernier message: 05/10/2005, 23h09
  5. Question pour un site PHP/MySQL et Javascript
    Par DvP dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/09/2005, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo