Optimisation bases de données

1

Nous utilisons les serveurs MariaDB qui est une très bonne évolution des serveurs MySQL, et ne change rien en terme de compatibilité des bases de données MySQL vers MariaDB. Avec MariaDB, il est suggéré de convertir les tables MyISAM vers le nouveau format Aria, car cela donne une meilleure résistance au crash, et un peu plus de vitesse. La conversion vers innoDB est la seconde option.

Convertir les tables est une tâche très primaire d'une optimisation de bases de données, la vraie optimisation consiste à avoir des index dans votre base de données, et ceci est difficilement accessible dans les CMS existants, mais accessible pour les modules tiers que vous avez acheté (suggérez à l'éditeur d'optimiser leur module). Pour des sites personnalisés, seul un spécialiste en bases de données ou un webmaster très expérimenté peut faire ce travail techniquement difficile... Egalement, vous référer aux tutoriels en ligne spécialisés.

Avant de convertir, essayez les fonctions de phpmyadmin dans cet ordre en sélectionnant toutes les tables d'une base : vérifier la table, réparer la table, optimiser la table...

L'idée première est de repérer les grosses tables dans une base de données, en taille MB, mais aussi celles contenant beaucoup de lignes : faîtes des tris de vos tables depuis phpmyadmin de votre cpanel afin de faire un repérage.

Si sa grosseur est justifiée, c'est à dire pas pour des logs/cache ou similaires, dans quel cas il faut les vidanger régulièrement.

Si aucun cas ne concerne votre base et que le problème persiste, alors le problème vient probablement de la conception de la base de données  ou quelques tables liées à des plugins, ou encore que votre code PHP n'est pas bon non plus...

 

Comment convertir les tables MyISAM vers Aria ou InnoDB ?

Pour convertir /ex toutes les MyISAM existantes vers InnoDB. Depuis phpmyadmin, cliquez à gauche sur votre base de données, puis cliquez sur SQL en haut... Coller ceci ci-dessous, puis 'Exécuter'

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='MyISAM'

 

Le résultat affiché par défaut avec textes courts, il faut donc impérativement aller au dessus dans '+ Options', cliquez 'Textes complets', et obtenir ceci dans cette exemple :

ALTER TABLE ps_carrier ENGINE=InnoDB;

ALTER TABLE ps_expressmailing ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_accountdates ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_birthdays ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_buyingdates ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_categories ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_civilities ENGINE=InnoDB;

Faîtes maintenant un copier de l'ensemble ci-dessus et coller le dans SQL, puis Executer, et la conversion est faîte !

 

Recommandé et prioritaire :

Si vous êtes sous MariaDB comme chez YOORshop, nous suggérons de convertir les tables MyISAM d'une base de données vers ARIA (ce format est anti-crash, et plus performant):

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=ARIA;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='MyISAM'

 

Pour convertir les tables InnoDB d'une base de données vers ARIA :

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=ARIA;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='InnoDB'

 

Pour convertir les tables ARIA d'une base de données vers InnoDB :

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='ARIA'

 

Pour Prestashop /ex, si votre base est grosse sans raison comme catalogue important, alors vous pouvez faire la 'vidange', ces tables prestashop peuvent être vidés sans aucun souci, voir bouton 'vider' :

ps_connections

ps_connections_page

ps_connections_source

ps_guest ( celle-ci est réliée au module de stats, et sera de nouveau rempli si vous ne désactivez pas le module)

ps_pagenotfound

ps_page_viewed

ps_referrer_cache

ps_date_range

ps_search_index + ps_search_word + ps_statssearch doit être fait en même temps, ensuite reconstruisez l'index de recherche dans prestashop

D'autres tables liées ou non à des modules, et stockant du cache sans jamais le vidanger peuvent être vidanger, consultez l'éditeur. 

 

NB :

Pour migrer vers un autre serveur mysql, vous devez convertir les table aria de nouveau en innodb ou myslam

 

Export, options :

décocher AUTO_INCREMENT

Editer la base de données avec notepad+, et enlever partout TRANSACTIONAL=1

Importez la base, il ne devrait pas y avoir d'erreurs... (le format MYSQL 40 peut aider)