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

Langage SQL Discussion :

Demande d'avis aux pros de SQL (performances)


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut Demande d'avis aux pros de SQL (performances)
    Bonjour à tous,

    J'ai actuellement une base de données qui commence à devenir assez importante en nombre de lignes

    Je sais que de nos jours l'informatique permets d'atteindre facielement de très bonnes performance mais si je vous pose la question c'est surtout dans un but d'optimsation. Voici mon cas :

    J'ai 4 ou 5 tables dont une qui commence a compter plusieurs dizaine de milliers de ligne (pour 4 colonnes)

    A l'avenir, ma table depassera aisement la 100aine de milliers d'enregistements et probablement quelques 100aines encore en plus.

    Mes requetes PHP interrogent cette grande table en la questionnant sur un numero de ligne. Par exemple "donne moi les informations sur la ligne n° 345 501"

    J'imagine dans ma petite tête, plus on va interroger la BDD sur une ligne lointaine, plus elle va mettre du temps a parcourir la table. Ai-je raison ?

    Deuxièmement, j'avais pensé, et vous allez m'aider pour ça, a une technique pour gagner en performance lors des mes requetes (qui sont nombreuses et fréquentes)

    Puis-je imagine scinder ma GRANDE table, en plusieurs petites tables ? Du genre, au lieu d'avoir une table avec 500 000 lignes, en avoir 10 de 50 000 ? Une condition dans ma page PHP permetterai ainsi de selectioner la table souhaitez.

    Est-ce que cette methode pourrait augmenter la vitesse de mes requetes ?

    Merci par avance pour vos avis constructifs

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Bonjour,

    Je pense que cette question aurait plus sa place dans le forum consacré au SGBD concerné, que vous n'avez pas précisé.

    Si vous avez un index sur ce que vous appelez "numéro de ligne" et que vous accédez toujours à la table de cette façon, vous n'aurez sans doute jamais de souci de performance, quelques centaines de milliers de ligne n'est pas énorme.

    Si vous constatez déjà des problèmes, la structure des tables, les index et les requêtes concernées nous permettront sans doute de vous en dire plus.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Parler de numéro de ligne dans une table en base de données est une assez mauvaise pratique.

    A moins de trier la table on ne sait jamais vraiment à quelle ligne se trouve un record.

    Mis à part ça, si ta table possède un champ (numérique c'est mieux) représentant ce que tu appelles le "numéro de ligne" il te suffit de créer un indexe dessus.

    Si ton "numero de ligne" est défini comme clé primaire (identifiant unique) il est probable que ton SGBD l'aie déjà indexée.
    Si non il faut te référer à la documentation de ton SGBD pour créer un index.

    Une fois ta table indexée tu peut atteindre le million de record sans problème, même plus.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Merci pour vos réponses !

    Je n'ai actuellement pas de probleme de lenteur pour l'execution de mes requetes. Mais vu mes previsions quant aux quantités d'enregistrement, je preferais poser la question pour chercher la architecture à adopter.

    Effectivement j'ai pas été tres clair, quand je parlais du numero de lignes je parlais d'index numerotés, (1, 2, 3, ... , 500 000).

    Mes requetes sont du style Select champs1 FROM table WHERE id = 154 222 ;

    Selon vos avis on peut donc considerer que l'enregistrement 15 ou 150 000 sera lu quasiement aussi rapidement ?

    Autres question, y'a t'il une limite théorique dans le nombre d'enregistrements pour une table (a part la taille maximum des BBD fixé par les hebergeurs) ?

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Citation Envoyé par vinze60 Voir le message
    y'a t'il une limite théorique dans le nombre d'enregistrements pour une table (a part la taille maximum des BBD fixé par les hebergeurs) ?
    La limite théorique du type de données utilisé pour l'identifiant de ligne, associée à la limite théorique imposée par le SGBD
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Citation Envoyé par vinze60 Voir le message
    Effectivement j'ai pas été tres clair, quand je parlais du numero de lignes je parlais d'index numerotés, (1, 2, 3, ... , 500 000).

    Mes requetes sont du style Select champs1 FROM table WHERE id = 154 222 ;

    Selon vos avis on peut donc considerer que l'enregistrement 15 ou 150 000 sera lu quasiement aussi rapidement ?
    Oui, avec ce genre de requête vous n'aurez aucun problème de perf.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Merci beaucoup pour vos réponses,

    J'en profite pour appronfondir un peu le sujet.

    J'ai placé un chronometre sur mes pages de requetes PHP. Le resultat n'était pas vraiment celui que j'attendais et j'aimerais votre avis.

    Le temps d'execution vari entre 0,5 seconde et 3 secondes pour une requete qui fait appel à 5 tables et qui me retourne une centaine de resultat. Mes tables sont jointes par un index auto-incrementé numérique.

    Je trouve que le temps d'execution est trop long, ai-je raison de penser ça ? est-ce que les performances du server sont à remettre en cause ?

    Mon travail n'est qu'à l'état de projet pour le moment, je suis donc sur un server mutualisé qui ne me reviens pas cher. Une fois que mon projet sera finalisé je compte prendre les dispositions necessaires pour trouver un hebergeur capable de me fournir la performance adequeate.

    Pensez vous que si j'opte pour le service "sql privé" d'OVH, cela me fera gagner du temps d'execution au niveau SQL ?

    D'autre part que dois-je viser comme performance ? Ils proposent differentes offres (RAM a 128, 512, etc...) Je me doute bien que la memoire plus importante sera la plus efficace mais à partir de quel niveau serai-je censé voir une réele amelioration ?

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Vérifie en postant les requêtes directement sur le serveur que c'est bien leur exécution qui prend du temps et pas autre chose parce ton chornomètre il dépend aussi de ton code pour générer les pages.

    Vérifie aussi si tes requêtes ne sont pas plus complexes que nécessaires. Tu peux poster ici une de ces requêtes dont tu trouves l'exécution trop longue pour qu'on regarde si on peut l'optimiser.

    Sinon, tu peux lire l'article de SQLPro sur l'optimisation d'un SGBD qui te donnera entre autres des infos sur la taille de la mémoire à envisager en fonction de la taille de la BDD.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [Flex3] Demande d'avis / Performances XML
    Par alain31tl dans le forum Flex
    Réponses: 7
    Dernier message: 30/09/2010, 18h08
  2. avis aux experts sur la performance écriture fichier
    Par MattA184575 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 08/01/2010, 12h12
  3. Réponses: 6
    Dernier message: 04/09/2006, 18h15
  4. [Avis aux pros !] Problèmes de la VCL avec les threads
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/02/2006, 22h38

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