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 :

MYSQL : Premier SELECT très long


Sujet :

Requêtes MySQL

  1. #41
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    c'est un tout... le matériel, les différentes couches d'abstraction dont la VM, qui n'arrange rien... et enfin le sgbd et la façon dont il courcircuite l'accès RAM physique de l'OS

    je défends généralement mysql, mais il faut quand même admettre que là on atteint ses limites par rapport à ce qu'il peut gérer...

    donc oui il faut encore essayer des réglages de la VM... mais si aucune amélioration n'est visible alors un teste sur un vrai PC s'imposera avec linux...

    mac est pas pensé vraiment pour ce genre de chose... c'est super avec les logiciels dédié pour son OS pour le multimédia voir certain outils de développements... après tu passe par des couches logicielles pas forcément performantes pour adapter telle ou telle logiciels...

    une VM, c'est pas forcément efficace selon le processeur et s'il est optimisé pour ça...

    donc essaye sur un vrai pc... si là tu as toujours plus de 1 seconde pour lire juste ton index avec des réglages mysql boostés... à mon avis, il faudra soit revoir ta table soit tester d'autres sgbd... je pense que ça se limiterait à sql server ou oracle, car contrairement aux autres ils ont leur allocateur mémoire directe indépendant de l'OS... les autres sgbd je ne crois pas (à voir avec ceux qui connaissent mieux postgresql)

    punkoff je suis d'accord avec toi il faut encore faire des tests mais la référence c'est cette pauvre requête de comptage de ligne... si elle ne passe pas en moins d'une seconde... faut voir alors l'enfer pour la moindre jointure, etc...

    de même si le DD est pas d'une génération récente... et là mac.. comment dire... bref utilise au moins un pc qui sera au plus proche du serveur final...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  2. #42
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Une partie de ma config :

    innodb_buffer_pool_size = 7168M
    key_buffer_size=2048M
    innodb_flush_method=O_DIRECT
    innodb_thread_concurrency=4

  3. #43
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    et avec linux reboosté et ces réglage innodb, ça donne quoi?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  4. #44
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    je passe a 7 secondes lors de l'exécution du premier COUNT.

  5. #45
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    tant que pour cette requête tu es pas inférieur à 1 seconde c'est pas bon...

    tu as un pc pour tester, linux (idéal) ou windows ?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #46
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Je pourrai tester cela ce soir sur un poste fixe avec un os dédié (toujours une debian)

    Par contre si je fais la requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) AS total
    FROM product 
    WHERE company = 102
    La requête dure 100ms et retourne la valeur 9998

  7. #47
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    company n'apparait pas dans le create de ta table...

    et si tu as un index sur company c'est forcément très rapide vu que tu ne lis pas la table ou l'index principal...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  8. #48
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    je viens de le rajouter
    J'ai mis un index dessus.

  9. #49
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Alors je reviens vers vous, je suis passé sur une machine dédié dont voici la configuration :

    - Intel core i5 2430
    - 4Gb de mémoire vive
    - SSD Intel 330 "Maple Crest" - 120 Go

    La configuration de MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    character-set-server=utf8
    collation-server=utf8_general_ci
    init-connect='SET NAMES utf8;SET autocommit=0;'
    innodb_buffer_pool_size = 2800M
    key_buffer_size=1024M
    Quelques statistiques :

    La table à maintenant 151 millions de ligne.

    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM product
    met 26,32 seconds à s'executer la première fois.

  10. #50
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Vous avez 151 millions de produits ? vous vendez quoi ?

    (sous cette question je me demande si il n'y aurai pas un problème de modélisation...)

  11. #51
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    En fait c'est une application en cours de développement, et j'essaie de la pousser un max pour faire mes tests de perf.

    Seulement comme vous le dites je pense qu'a ce niveau il faut le penser à la modélisation.

  12. #52
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui aucun sgbd ne te donnera de la perf à ce niveau là...

    il faut à un moment ou un autre faire du partitionnement, du load balancing, de la parallélisation multiserveur

    comme ce qui est fait pour les mmorpg temps réel par exemple

    les limitations de la plateforme et du sgbd (réglages inclus) et les contraintes de restitution (web, applicatif, temps réel, etc...) vont impliquer de penser le modèle de donnée en conséquence...

    c'est un tout...

    par exemple, une bd d'objets 3d va pas être peuplée pareil si elle est destinée à faire du temps réel ou du rendu photo-réaliste sur des heures de calcul par image

    faire des tests tels que tu les fait n'est donc pas très parlant... car plein d'autres choses vont plomber tes performances... à titre d'exemple: le nombre de tables dans ta bd, le moteur de bd aussi (mono serveur ou distribuée), etc...

    donc faut d'abord faire le modèle de données lié à ton application puis l'adapter à la mise en charge en phase de test...

    en gros, il y a tellement d'interdépendances qu'il ne faut pas mettre la charrue avant les bœufs
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  13. #53
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Tu es passé de 20 millions en 7 secondes à 150 millions en 26 secondes.
    Ta nouvelle config est donc environ deux fois plus rapide que l'ancienne.
    Tu utilises un disque SSD, était-ce le cas avant ?
    Si on suppose que le temps de cette requête est principalement lié au fait qu'il faut relire tous les index de la table depuis le disque, j'aurai pensé qu'un disque SSD aurait donné de meilleurs résultats.

  14. #54
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Avec une vue indexées, disponible par exemple sous MS SQL Server, votre résultat serait calculé dans un temps non mesurable.
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/optimisation/indexation/

    Hélas MySQL étant l'un des SGBDR les moins performant qui soit, en plus de ne pas être un vrai SGBD relationnel et ayant de très nombreux manques en matière de fonctionnalité, je ne m'étonne donc pas de ces performances incompatibles avec un gros site web marchand !
    A lire sur MySQL : http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  15. #55
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Effectivement les chiffres parlent d'eux même.
    Je ne pensais pas qu'il y avait une telle différence entre PostgreSQL et MySQL.

    Vu que je suis encore à l'étape de développement de l'application je peux me permettre de revoir le modèle de données ainsi que le SGBD.

    Je vais faire un test avec PostgreSQL afin de comparer.
    Je vous donnerai les chiffres.

  16. #56
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Pour votre cas précis, postgresql souffre du même problème. (mais d'un point de vue générale vous aurez plus de possibilité avec ce dernier..)

  17. #57
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Quel SGBDR serait capable de gérer le cas de gros volumes de données et les transactions a votre avis ?

  18. #58
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    SQL Server, Oracle, DB2
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  19. #59
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Actuellement en formation Oracle, on vient de me donner une indication que tu pourrais tester pour ton COUNT.
    Dans COUNT(*), l'étoile signifie "tout". C'est à dire pas toutes les lignes mais toute la table. Selon le formateur, COUNT(1) serait plus rapide que COUNT(*).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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. Driver JDBC et Oracle - select très long
    Par mgax07 dans le forum JDBC
    Réponses: 5
    Dernier message: 20/02/2014, 10h03
  2. [Perfs] Insert+select très long
    Par farenheiit dans le forum Administration
    Réponses: 39
    Dernier message: 07/08/2009, 14h36
  3. Démarrage de windows vraiment très long
    Par krfa1 dans le forum Windows XP
    Réponses: 16
    Dernier message: 23/10/2005, 12h37
  4. delete très long
    Par slefevre01 dans le forum Oracle
    Réponses: 7
    Dernier message: 06/10/2005, 13h16
  5. Très long texte dans Quick Report - Comment faire ?
    Par delphi+ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 22h18

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