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

Administration MySQL Discussion :

optimisation - nettoyage


Sujet :

Administration MySQL

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut optimisation - nettoyage
    Bonjour à tous,

    ****************
    Situatuon
    ****************
    - mysql 5.6.30
    - VDS 4Go RAM / Intel® Bi Xeon® QuadCore L5420 2,5GHz bas voltage
    - Application : prestashop (table en innodb)

    ****************

    Cherchant à garder un serveur propre, réactif et optimiser, je prévois de faire un nettoyage dans ma BDD principale qui à l'heure actuelle pèse environ 190Mo.

    Question:
    1 - bien que je sois persuadé, que la conception de la table ai un impact bien plus grand, que leur poids, le poids des tables, et le volumes de donnée a t il un impact sur les performance? (sachant que je parle de table ~50Mo et 50000 lignes) ou est de la nano-optimisation?

    2 - Sous phpmyadmin lorsque je fait mes test, après suppression des données, le poids reste le même, il me faut faire
    ALTER TABLE `table_to_opti` ENGINE = InnoDB;
    FLUSH TABLE `table_to_opti`;
    Est ce cohérent?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    La conception de la base de donnée plus que celle de chaque table, est un élément capital, avec essentiellement
    - le respect des formes normales
    - le choix des identifiants
    - le choix des types de données
    ...

    Interviennent ensuite les éléments liés au modèle physique de données
    - choix des index
    - utilisation du partitionnement
    ...

    Puis l'optimisation des requêtes et des traitements
    - utilisation de prédicats sargables
    - requetes ensemblistes, éviter les boucles avec curseurs
    - chasse aux tris et groupages inutiles
    - gestion des verrous et de l'isolation
    - sélection des données utiles au traitement
    - parallélisme
    ...

    Quand tout ça est réglé aux petits oignons, le volume dans les tables est rarement un frein aux performances, du moins avec un SGBD apte à supporter la charge, MySQL est loin d'être le meilleur sur ce chapitre.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    Merci @escartefigue

    Tu confirmes ce dont le me doutait.
    Si je part du principe que prestashop n'a pas du être codé avec les pieds (j'ai quelque doute) et que je ne prévois pas de tout reconstuire, finalement j'ai rien à faire.
    Finalement, l'opti à faire se passerai plus du coté de la config, cache de mysql

    Dans tous les cas, si je me crée un script au moins pour supprimer les données inutile
    dois je en fin de script
    Défragmenter la table + Recharger la table?

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    A partir du moment où des mises à jour sont faites en masse (delete et/ou update et dans une moindre mesure insert) il est intéressant de réorganiser les données et mettre à jour les statistiques


    Concernant cette remarque

    Citation Envoyé par gotcha5832 Voir le message
    Si je part du principe que prestashop n'a pas du être codé avec les pieds
    Je n'en ai pas la moindre idée, mais il n'est pas rare que les progiciels du marché soient modélisés n'importe comment, à commencer par le non respect des formes normales !

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    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 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par gotcha5832 Voir le message
    Merci @escartefigue

    Tu confirmes ce dont le me doutait.
    Si je part du principe que prestashop n'a pas du être codé avec les pieds (j'ai quelque doute)
    Vous faites bien d'en avoir. la modélisation des bases prestashop et joomla est une grosse merde que nous avons dénoncé dans cet ouvrage :
    http://www.eyrolles.com/Informatique...-9782212142068

    Pour info :
    Nom : Modélisation Eyrolles Soutou brouard.jpg
Affichages : 584
Taille : 145,1 Ko

    A +

    PS : je m'aperçoit que c'est un brouillon avant correction que je vous ais envoyé !
    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/ * * * * *

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    @SQLpro merci pour vos eclaircissement.
    pas surprenant quand on vois la qualité de dev coté php.

    Mais du coup il y a t il des choses à faire sans tout refaire?

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Si vous ne pouvez pas intervenir sur la modélisation de la BDD (point 1 de ma 1ère réponse) vous pouvez peut être le faire sur le modèle physique (point 2) et certainement le faire sur les traitements (point3)
    Ce sera toujours ça de pris, en attendant de changer carrément de BDD

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut gotcha5832.

    Citation Envoyé par gotcha5832
    1 - bien que je sois persuadé, que la conception de la table ait un impact bien plus grand, que leur poids, le poids des tables, et le volumes des donnée a-t-il un impact sur les performance? (sachant que je parle de table ~50Mo et 50000 lignes) ou est de la nano-optimisation?
    C'est quoi la "la nano-optimisation" ? Moi, pas comprendre !

    C'est pourquoi, sauf cas particulier, on ne fait plus un balayage total de la table pour trouver ce que l'on cherche.
    L'usage des index est impératif pour éviter que la volumétrie ait un impact sur les performance de vos requêtes.

    Mais avant d'aborder des questions de performances, il faut revoir la modélisation qui est fréquemment un point délaissé par les débutant.

    Citation Envoyé par gotcha5832
    2 - Sous phpmyadmin lorsque je fait mes test, après suppression des données, le poids reste le même, il me faut faire
    ALTER TABLE `table_to_opti` ENGINE = InnoDB;
    FLUSH TABLE `table_to_opti`;
    Est ce cohérent?
    Pour la première commande, oui c'est normal de procéder ainsi.

    Si vous n'utilisez pas de serveur Slave, le "flush table" ne vous pas à grand chose.

    Si vous désirez qu'une table occupe un peu moins d'espace sur le disque dur, ajoutez ceci :
    --> https://dev.mysql.com/doc/refman/5.7...ion-usage.html

    Je vous conseille de lire la documentation MySql.

    Citation Envoyé par gotcha5832
    Finalement, l'opti à faire se passerai plus du coté de la config, cache de mysql
    L'optimisation ne concerne pas que les requêtes lourdes. Il faut aussi envisager de revoir à l'usage le fichier "my.ini".
    Il existe différents niveaux à l'optimisation, que ce soit matériel, réseau (trafic), logiciel, mais aussi la façon de tailler les tables, les caches ...
    Faste sujet !

    Citation Envoyé par gotcha5832
    Dans tous les cas, si je me crée un script au moins pour supprimer les données inutile, dois-je en fin de script Défragmenter la table + Recharger la table?
    Et comment défragmentez-vous une table ??????
    Pour appliquer ce genre de recommandation qui aura très peu d'impact sur les performances, vous devez :
    --> extraite toutes les lignes dans l'ordre de la clef primaire.
    --> supprimer la table
    --> défragmenter le disque dur
    --> recréer la table
    --> insérer les lignes dans l'ordre de la clef primaire.

    Le mieux est d'utiliser les outils de maintenance de MySql au lieu de réinventer la réorganisation de vos tables.

    Citation Envoyé par gotcha5832
    Si je pars du principe que prestashop n'a pas dû être codé avec les pieds (j'ai quelque doute)
    Des doutes à propos de quoi ?

    Prestashop, c'est comme un jeu de clef hexagonal.

    Quand vous allez acheter ce jeu de clefs, vous vous retrouvez avec vingt-cinq clefs. Et dans la pratique, vous en utiliserez qu'une ou deux !

    Ce produit est destiné aux américains et souvent inadapté à ce que cherche à faire les européens.
    Donc non, il ne peut pas être performant, voire même plutôt redondant, ce qui fait que dans 80% des cas, vous n'utilisez pas les tables qui vous sont proposées.
    Il y a environ 135 tables pour prestashop. Alors qu'une base de données spécifique à ce que vous cherchez à faire, une quinzaine de tables au maximum suffit largement.

    Pour paraphraser SQLPRO, je dirais que c'est de la daube !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    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 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Pour paraphraser SQLPRO, je dirais que c'est de la daube !

    @+
    ça y est, maintenant tu te prends pour le défunt Jean-Pierre Coffe !!!

    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/ * * * * *

  10. #10
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    Avant tout chose merci à vous trois.


    Citation Envoyé par escartefigue Voir le message
    Si vous ne pouvez pas intervenir sur la modélisation de la BDD (point 1 de ma 1ère réponse)
    Effectivement je ne me vois pas me lancer dans ce chantier sachant que je ne suis pas un pro de mysql, et je me retrouverai avec une table plus standard, donc sans doute un cms dificilement maintenable seul sans profiter de la communauté

    Citation Envoyé par escartefigue Voir le message
    vous pouvez peut être le faire sur le modèle physique (point 2)
    toutes les tables ont des index, mais sont ils judicieux?
    Vous parlez de partitionnement?? J'ai à tord pensez que vous parliez du partitionnement du disque ext4, mais je viens de découvrir le partitionnement des tables…
    En faite je me rends compte que le sujet me dépasse.
    Auriez vous des livres sur ces sujet à me recommander?

    Citation Envoyé par escartefigue Voir le message
    certainement le faire sur les traitements (point3)
    - utilisation de prédicats sargables
    - requetes ensemblistes, éviter les boucles avec curseurs …
    euh. vite un livre



    Citation Envoyé par Artemus24 Voir le message
    C'est quoi la "la nano-optimisation" ? Moi, pas comprendre !
    Une toute petite optimisation!
    J'entends pas là, finalement des optinisation qui vont me faire gagner des nano-seconde!?

    Citation Envoyé par Artemus24 Voir le message
    C'est pourquoi, sauf cas particulier, on ne fait plus un balayage total de la table pour trouver ce que l'on cherche.
    L'usage des index est impératif pour éviter que la volumétrie ait un impact sur les performance de vos requêtes.
    Donc si toutes les tables ont des index, la volumétrie à un faible impacte?

    Citation Envoyé par Artemus24 Voir le message
    Mais avant d'aborder des questions de performances, il faut revoir la modélisation qui est fréquemment un point délaissé par les débutant.
    le truc, c,est qu'en tant que commercant, la perf est quelque chose de concret pour moi, puisque les performances de mon site, ont un impact sur mon activité.
    La modélisation… qu'elle est l'aspect concret?
    Par ailleurs, etant seul à la technique, re modelliser la bdd de presta ne serait pas forcément sérieux. si le sujet n'est pas maitrisé


    Citation Envoyé par Artemus24 Voir le message
    Le mieux est d'utiliser les outils de maintenance de MySql au lieu de réinventer la réorganisation de vos tables.
    De quel outils parlez vous?
    my


    Citation Envoyé par Artemus24 Voir le message
    Prestashop, c'est comme un jeu de clef hexagonal.

    Donc non, il ne peut pas être performant, voire même plutôt redondant, ce qui fait que dans 80% des cas, vous n'utilisez pas les tables qui vous sont proposées.
    Il y a environ 135 tables pour prestashop. Alors qu'une base de données spécifique à ce que vous cherchez à faire, une quinzaine de tables au maximum suffit largement.
    Je suis tout à fait d'accord, je vois bien effectivement que les 3/4 des tables ne sont pas utilisé.
    Et je connais le code php de presta, et il en vas de même. un gros jeu de clef hexagonal.fait pour toute les situations. Qui au final à 80% de code inutile à une situation. Sans parlez des veilles clef qui ne sont plus utilisez mais qui reste dans le trousseau

    Le soucis étant qu'en étant seul. que faire?
    Re-créez tout à partir de 0? Pas rentable du tout.

    C'est pourquoi je cherche ce que je peux faire à mon niveau

  11. #11
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut gotcha5832.

    Citation Envoyé par gotcha5832
    euh. vite un livre
    Un livre sur quoi ?
    La modélisation des bases de données, donc des livres sur Merise
    Le SGBDR MySql, il y a des tas de livres qui sont pour la plupart d'un niveau moyen.
    L'aspect système de MySql, voire l'optimisation, là, c'est bien plus rare.

    Citation Envoyé par gotcha5832
    Donc si toutes les tables ont des index, la volumétrie à un faible impacte?
    Ce n'est pas l'index seul qui fait la performance, mais un ensemble de règles qui font que votre requête sera optimisée.

    Citation Envoyé par gotcha5832
    La modélisation… qu'elle est l'aspect concret?
    La modélisation est une représentation abstraite de la réalité que vous désirez conceptualiser.
    C'est donner du sens sur quoi vous aller travailler, et pas seulement définir une organisation sous la forme d'entités et de relations.

    A vrai dire une information est porteuse de sens, à l'inverse d'une donnée.
    On aurait dû nommer cela une base d'informations et non une base de données.

    Citation Envoyé par gotcha5832
    De quel outils parlez vous?
    MySqlAdmin
    MySqlCheck
    MySqlDump
    MySqlImport
    MySqlShow
    MySqlSlap
    ...

    Ce sont des utilitaires destinés à vous faciliter la maintenance de MySql.

    Citation Envoyé par gotcha5832
    Le soucis étant seul, que faire?
    Bonne question !

    Vous avez deux choix possibles :
    1) vous former depuis la conception des bases de données jusqu'à la maintenance.
    Il y a beaucoup de choses à apprendre, qui seul, vont devenir problématique.
    Et puis, vous n'avez pas que cela à faire !

    2) confiez cela à un professionnel qui va vous faire du sur-mesure. Mais voilà cela à un coût.

    C'est peut-être un projet qui va vite vous dépasser. A chacun son métier.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 12h49
  2. optimiser "nettoyage" d'un fichier
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 11/03/2008, 13h35
  3. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 09h47
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 11h24

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