SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Comprendre et optimiser la base de 
données WordPress 
WP TECH 2014
Qui suis-je ? 
● Tony Archambeau 
@TonyArchambeau 
● Projets 
sql.sh 
2
Comprendre 
3
Général Multi-site 
WP TECH 2014 
Tables WordPress 
4 
● wp_commentmeta 
● wp_comments 
● wp_links 
● wp_options 
● wp_postmeta 
● wp_posts 
● wp_terms 
● wp_term_relationships 
● wp_term_taxonomy 
● wp_usermeta 
● wp_users 
● wp_blogs 
● wp_blog_versions 
● wp_registration_log 
● wp_signups 
● wp_site 
● wp_sitecategories 
● wp_sitemeta
Modèle Physique des Données 
WP TECH 2014 
5
WP TECH 2014 
Comparaison 
● WordPress : 11 tables 
(+7 pour les multi-sites) 
● Drupal 7 : 76 tables 
● Joomla 3 : 68 tables 
● Typo3 : 60 tables 
● CMS Made Simple : 54 tables 
● SPIP 3 : 32 tables 
6
WP TECH 2014 
Structure « ordinaire » 
ID user_login user_pass user_firstname user_lastname 
1 marcel ... Marcel Martin 
2 sandrine ... Sandrine Bernard 
3 theo ... Théo Petit 
● Ajout de données = ajout de colonnes 
7 
Table « users »
Structure avec WordPress 
wp_users wp_usermeta 
WP TECH 2014 
umeta_id user_id meta_key meta_value 
1 1 firstname Marcel 
2 1 lastname Martin 
3 2 firstname Sandrine 
4 2 lastname Bernard 
5 3 firstname Théo 
6 3 lastname Petit 
ID user_login user_pass 
1 marcel ... 
2 sandrine ... 
3 theo ... 
● Ajout de données = ajout de lignes dans la 
table wp_usermeta 
8
WP TECH 2014 
Serialize 
option_id option_name option_value autoloaded 
1 active_plugins a:4:{i:0;s:38:"copyright-footer-rss/copyright-rss. 
php";i:1;s:33:"login-security/login-security. 
php";i:2;s:35:"wp-sitemap-page/wp-sitemap- 
page.php";i:3;s:17:"wp-smo/wp-smo. 
php";} 
yes 
2 widget_categories a:2:{i:2;a:4: 
{s:5:"title";s:0:"";s:5:"count";i:0;s:12:"hierarc 
hical";i:0;s:8:"dropdown";i:0;}s:12:"_multiwid 
get";i:1;} 
yes 
3 wp_user_roles a:10:{s:13:"administrator";a:2: 
{s:4:"name";s:13:"Administrator";s:12:"capa 
bilities";a:62: 
{s:13:"switch_themes";b:1;s:11:"edit_theme 
s";b:1;s:16:"activate_plugins";b:1;s:12:"edit_ 
plugins";b:1;s:10:"edit_users";b:1;s:10:"edit 
_files";b:1;s:14:"manage_options";b:1;s:17:" 
moderate_comments";b:1;s:17:"….. 
yes 
wp_options 
9
Avantages Inconvénients 
WP TECH 2014 
Différences 
● Performance 
● Facilité de lecture 
● Chercher dans les 
données sérialisées 
● Connaître les clés 
existantes 
● Clés manquantes = erreur 
ou vide volontaire 
● Type de données 
● Flexibilité 
● Adaptabilité 
● Prise en main 
● Moins de tables 
10
WP TECH 2014 
CRUD 
● wp_options : 
– add_option(), get_option(), update_option() et delete_option() 
● wp_usermeta : 
– add_user_meta(), get_user_meta(), update_user_meta() et 
delete_user_meta() 
● wp_commentmeta : 
– add_comment_meta(), get_comment_meta(), 
update_comment_meta() et delete_comment_meta() 
● wp_postmeta : 
– add_post_meta(), get_post_meta(), update_post_meta() et 
delete_post_meta() 
11
Créer une nouvelle table ? 
● Quelles données ? 
– Rentrent-elles dans les tables existantes ? 
● WordPress forever ? 
– Migration ? Evolution ? 
WP TECH 2014 
12
Créer une nouvelle table ? 
● Comment les données seront lues ? 
– Serialize et index ne font pas bons amis 
WP TECH 2014 
SELECT * 
FROM wp_users u1 
INNER JOIN wp_usermeta u2 ON u2.user_id = u1.ID 
WHERE meta_key = 'role_specifique' 
AND meta_value = '%partenaire%'; 
13 
SELECT * 
FROM wp_users u1 
INNER JOIN wp_user_role_specifique u2 
ON u2.user_id = u1.ID 
WHERE is_partenaire = 1;
Optimiser 
14
WP TECH 2014 
Hardware 
● Plugin « HyperDB » : 
– Classe PHP basée sur le code de wordpress.com 
– Gestion de la réplication (master / slave) 
– Gestion d'un failover 
– Tables sur différentes bases de données 
– Statistiques avancées 
15
WP TECH 2014 
Software 
16
WP TECH 2014 
Software 
17
● WordPress utilise le moteur de stockage par défaut 
WP TECH 2014 
Software 
18 
● MyISAM vs InnoDB 
– Attention avec le plugin « YARPP » 
– Analyser les statistiques d'utilisation 
– Moteur de stockage modifiable pour chaque table 
● Attention si réplication 
MyISAM InnoDB 
Beaucoup de lecture, peu d'écriture x 
Recherche Full-Text (pour MySQL < 5.6) x 
Autre x
WP TECH 2014 
Structure des données 
● Utiliser les tables WordPress 
– Penser aux préfixes pour les clés 
● Créer ses propres tables si nécessaire 
19
WP TECH 2014 
Requêtes 
● Plugin « Debug Queries » lors des 
développements 
– Réduire le nombre de requêtes 
– Améliorer les performances (EXPLAIN) 
● Transient 
– set_transient(), get_transient() et delete_transient() 
● Activer Slow Query Log en production 
20
WP TECH 2014 
Index 
● Index du coeur WP bien pensés 
● Se baser sur Slow Query Log 
21
WP TECH 2014 
Purge 
● Cache / Transient 
● Révisions 
● Données inutiles 
– Exemple : user agent des commentaires 
● Plugins qui enregistrent trop d'information 
– Exemple : log avec le plugin « Redirection » 
● Plugins désinstallés 
22
WP TECH 2014 
Purge 
● Plugins : 
– « WP-Optimize » : purger tout ce qui est possible 
– « WP-Cleanup plugin » : supprimer les révisions 
– « Clean Options » : supprimer des données de 
wp_options 
23
● Supprimer les révisions : 
● Supprimer les commentaires de spams : 
WP TECH 2014 
Purge 
DELETE a,b,c 
FROM `wp_posts` a 
LEFT JOIN `wp_term_relationships` b ON (a.ID = b.object_id) 
LEFT JOIN `wp_postmeta` c ON (a.ID = c.post_id) 
WHERE a.post_type = 'revision'; 
DELETE FROM `wp_comments` 
WHERE `comment_approved` = 'spam'; 
24
WP TECH 2014 
Purge 
● Supprimer les « meta » des commentaires 
supprimés : 
● Supprimer les « meta » des articles 
supprimés : 
25 
DELETE FROM `wp_commentmeta` 
WHERE `comment_id` NOT IN ( 
SELECT `comment_id` 
FROM `wp_comments` ); 
DELETE pm 
FROM `wp_postmeta` pm 
LEFT JOIN `wp_posts` wp ON wp.ID = pm.post_id 
WHERE wp.ID IS NULL;
● Supprimer les mots-clés non-utilisés : 
WP TECH 2014 
Purge 
DELETE FROM `wp_terms` 
WHERE `term_id` IN ( 
SELECT `term_id` 
FROM `wp_term_taxonomy` 
WHERE `count` = 0 ); 
DELETE FROM `wp_term_taxonomy` 
WHERE `term_id` NOT IN ( SELECT `term_id` FROM `wp_terms` ); 
DELETE FROM wp_term_relationships 
WHERE term_taxonomy_id not IN ( 
SELECT term_taxonomy_id 
FROM wp_term_taxonomy ); 
26
● Supprimer le cache des flux : 
● Supprimer le user agent des commentaires : 
WP TECH 2014 
Purge 
DELETE FROM wp_options 
WHERE option_name LIKE ('_transient%_feed_%'); 
UPDATE `wp_comments` 
SET `comment_agent` = ''; 
● Supprimer les entrées liées au plugin Akismet : 
27 
DELETE FROM `wp_commentmeta` 
WHERE `meta_key` LIKE '%akismet%';
Après la purge : OPTIMIZE 
OPTIMIZE TABLE `wp_commentmeta`; 
OPTIMIZE TABLE `wp_comments`; 
OPTIMIZE TABLE `wp_links`; 
OPTIMIZE TABLE `wp_options`; 
OPTIMIZE TABLE `wp_postmeta`; 
OPTIMIZE TABLE `wp_posts`; 
OPTIMIZE TABLE `wp_terms`; 
OPTIMIZE TABLE `wp_term_relationships`; 
OPTIMIZE TABLE `wp_term_taxonomy`; 
OPTIMIZE TABLE `wp_usermeta`; 
OPTIMIZE TABLE `wp_users`; 
WP TECH 2014 
28
Prévenir le gonflement des tables 
● Désactiver les futures révisions : 
define('WP_POST_REVISIONS', false ); 
● Limiter le nombre de révisions à 5 : 
define('WP_POST_REVISIONS', 5); 
● Modifier l'intervalle des sauvegardes 
automatiques (par défaut 1 minutes) : 
define('AUTOSAVE_INTERVAL', 600 ); 
WP TECH 2014 
29
Merci de votre attention 
30

Weitere ähnliche Inhalte

Was ist angesagt?

Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsBoiteaweb
 
10 façons de casser son site WordPress ... et de le réparer !
10 façons de casser son site WordPress ... et de le réparer !10 façons de casser son site WordPress ... et de le réparer !
10 façons de casser son site WordPress ... et de le réparer !Boiteaweb
 
Conférence WordPress & E-commerce
Conférence WordPress & E-commerceConférence WordPress & E-commerce
Conférence WordPress & E-commerceFabrice Ducarme
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPressAurélien Denis
 
Wordpress : Attaque, Audit et Protection | Hackfest 2015
Wordpress : Attaque, Audit et Protection | Hackfest 2015Wordpress : Attaque, Audit et Protection | Hackfest 2015
Wordpress : Attaque, Audit et Protection | Hackfest 2015Harvey Francois
 
Prestashop le leader des cms
Prestashop le leader des cmsPrestashop le leader des cms
Prestashop le leader des cmsNassim Bahri
 
WordPress + ACF – Vers l’infini et au-delà…
WordPress + ACF – Vers l’infini et au-delà…WordPress + ACF – Vers l’infini et au-delà…
WordPress + ACF – Vers l’infini et au-delà…Brice Capobianco
 
Industrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPressIndustrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPressAurélien Denis
 
Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Boiteaweb
 
Optimiser les performances dans Wordpress
Optimiser les performances dans WordpressOptimiser les performances dans Wordpress
Optimiser les performances dans WordpressNicolas Juen
 
Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPressChi Nacim
 
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013Ghilas BELHADJ
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
WordPress en tant que CMS
WordPress en tant que CMSWordPress en tant que CMS
WordPress en tant que CMSAurélien Denis
 
Le meilleur pour votre site WordPress
Le meilleur pour votre site WordPressLe meilleur pour votre site WordPress
Le meilleur pour votre site WordPressAurélien Denis
 
Conversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressConversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressChi Nacim
 
Vue, j’avais pas vu !
Vue, j’avais pas vu !Vue, j’avais pas vu !
Vue, j’avais pas vu !Bruno Bonnin
 
Présentation générale de WooCommerce / Octobre 2018
Présentation générale de WooCommerce / Octobre 2018Présentation générale de WooCommerce / Octobre 2018
Présentation générale de WooCommerce / Octobre 2018Sandra Boulou / Web18
 

Was ist angesagt? (20)

Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des plugins
 
WordPress + HTTPS
WordPress + HTTPSWordPress + HTTPS
WordPress + HTTPS
 
10 façons de casser son site WordPress ... et de le réparer !
10 façons de casser son site WordPress ... et de le réparer !10 façons de casser son site WordPress ... et de le réparer !
10 façons de casser son site WordPress ... et de le réparer !
 
Conférence WordPress & E-commerce
Conférence WordPress & E-commerceConférence WordPress & E-commerce
Conférence WordPress & E-commerce
 
Presentation wc
Presentation wcPresentation wc
Presentation wc
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress
 
Wordpress : Attaque, Audit et Protection | Hackfest 2015
Wordpress : Attaque, Audit et Protection | Hackfest 2015Wordpress : Attaque, Audit et Protection | Hackfest 2015
Wordpress : Attaque, Audit et Protection | Hackfest 2015
 
Prestashop le leader des cms
Prestashop le leader des cmsPrestashop le leader des cms
Prestashop le leader des cms
 
WordPress + ACF – Vers l’infini et au-delà…
WordPress + ACF – Vers l’infini et au-delà…WordPress + ACF – Vers l’infini et au-delà…
WordPress + ACF – Vers l’infini et au-delà…
 
Industrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPressIndustrialiser votre maintenance sous WordPress
Industrialiser votre maintenance sous WordPress
 
Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?Pourquoi WordPress est le CMS le plus sécurisé ?
Pourquoi WordPress est le CMS le plus sécurisé ?
 
Optimiser les performances dans Wordpress
Optimiser les performances dans WordpressOptimiser les performances dans Wordpress
Optimiser les performances dans Wordpress
 
Création de themes WordPress
Création de themes WordPressCréation de themes WordPress
Création de themes WordPress
 
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013
Création de Thème WordPress - Ghilas BELHADJ - Semaine du Web 2013
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
WordPress en tant que CMS
WordPress en tant que CMSWordPress en tant que CMS
WordPress en tant que CMS
 
Le meilleur pour votre site WordPress
Le meilleur pour votre site WordPressLe meilleur pour votre site WordPress
Le meilleur pour votre site WordPress
 
Conversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPressConversion de template HTML en thème WordPress
Conversion de template HTML en thème WordPress
 
Vue, j’avais pas vu !
Vue, j’avais pas vu !Vue, j’avais pas vu !
Vue, j’avais pas vu !
 
Présentation générale de WooCommerce / Octobre 2018
Présentation générale de WooCommerce / Octobre 2018Présentation générale de WooCommerce / Octobre 2018
Présentation générale de WooCommerce / Octobre 2018
 

Ähnlich wie Comprendre et optimiser la base de données WordPress

Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...
Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...
Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...Microsoft Technet France
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerMicrosoft
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHPPierre MARTIN
 
Atelier du web - Analyser sa présence sur le web
Atelier du web - Analyser sa présence sur le webAtelier du web - Analyser sa présence sur le web
Atelier du web - Analyser sa présence sur le webAtlantic 2.0
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaIdaf_1er
 
Le seo et les redirections d urls
Le seo et les redirections d urlsLe seo et les redirections d urls
Le seo et les redirections d urlsAlexandre Filluzeau
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Guillaume RICHARD
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysALTER WAY
 
Les défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEOLes défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEODaniel Roch - SeoMix
 
Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020Wiiisdom
 
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...Clément OUDOT
 
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014Symetris
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Julien Deneuville
 
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiagoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiLionel Pointet
 

Ähnlich wie Comprendre et optimiser la base de données WordPress (20)

Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...
Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...
Retour d'expérience Bouygues Telecom : Analyse BI à l'aide d'une appliance SQ...
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL Server
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHP
 
Atelier du web - Analyser sa présence sur le web
Atelier du web - Analyser sa présence sur le webAtelier du web - Analyser sa présence sur le web
Atelier du web - Analyser sa présence sur le web
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et Pinba
 
Le seo et les redirections d urls
Le seo et les redirections d urlsLe seo et les redirections d urls
Le seo et les redirections d urls
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training Days
 
Les défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEOLes défauts de WordPress pour le SEO
Les défauts de WordPress pour le SEO
 
Pas possible en drupal, c'est faux
Pas possible en drupal, c'est fauxPas possible en drupal, c'est faux
Pas possible en drupal, c'est faux
 
Pentaho Ctools : tips & tricks
Pentaho Ctools : tips & tricksPentaho Ctools : tips & tricks
Pentaho Ctools : tips & tricks
 
Pentaho Ctools : tips & tricks
Pentaho Ctools : tips & tricks Pentaho Ctools : tips & tricks
Pentaho Ctools : tips & tricks
 
Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020
 
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
 
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Forum PHP 2014 day 1
Forum PHP 2014 day 1Forum PHP 2014 day 1
Forum PHP 2014 day 1
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?
 
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiagoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
 

Comprendre et optimiser la base de données WordPress

  • 1. Comprendre et optimiser la base de données WordPress WP TECH 2014
  • 2. Qui suis-je ? ● Tony Archambeau @TonyArchambeau ● Projets sql.sh 2
  • 4. Général Multi-site WP TECH 2014 Tables WordPress 4 ● wp_commentmeta ● wp_comments ● wp_links ● wp_options ● wp_postmeta ● wp_posts ● wp_terms ● wp_term_relationships ● wp_term_taxonomy ● wp_usermeta ● wp_users ● wp_blogs ● wp_blog_versions ● wp_registration_log ● wp_signups ● wp_site ● wp_sitecategories ● wp_sitemeta
  • 5. Modèle Physique des Données WP TECH 2014 5
  • 6. WP TECH 2014 Comparaison ● WordPress : 11 tables (+7 pour les multi-sites) ● Drupal 7 : 76 tables ● Joomla 3 : 68 tables ● Typo3 : 60 tables ● CMS Made Simple : 54 tables ● SPIP 3 : 32 tables 6
  • 7. WP TECH 2014 Structure « ordinaire » ID user_login user_pass user_firstname user_lastname 1 marcel ... Marcel Martin 2 sandrine ... Sandrine Bernard 3 theo ... Théo Petit ● Ajout de données = ajout de colonnes 7 Table « users »
  • 8. Structure avec WordPress wp_users wp_usermeta WP TECH 2014 umeta_id user_id meta_key meta_value 1 1 firstname Marcel 2 1 lastname Martin 3 2 firstname Sandrine 4 2 lastname Bernard 5 3 firstname Théo 6 3 lastname Petit ID user_login user_pass 1 marcel ... 2 sandrine ... 3 theo ... ● Ajout de données = ajout de lignes dans la table wp_usermeta 8
  • 9. WP TECH 2014 Serialize option_id option_name option_value autoloaded 1 active_plugins a:4:{i:0;s:38:"copyright-footer-rss/copyright-rss. php";i:1;s:33:"login-security/login-security. php";i:2;s:35:"wp-sitemap-page/wp-sitemap- page.php";i:3;s:17:"wp-smo/wp-smo. php";} yes 2 widget_categories a:2:{i:2;a:4: {s:5:"title";s:0:"";s:5:"count";i:0;s:12:"hierarc hical";i:0;s:8:"dropdown";i:0;}s:12:"_multiwid get";i:1;} yes 3 wp_user_roles a:10:{s:13:"administrator";a:2: {s:4:"name";s:13:"Administrator";s:12:"capa bilities";a:62: {s:13:"switch_themes";b:1;s:11:"edit_theme s";b:1;s:16:"activate_plugins";b:1;s:12:"edit_ plugins";b:1;s:10:"edit_users";b:1;s:10:"edit _files";b:1;s:14:"manage_options";b:1;s:17:" moderate_comments";b:1;s:17:"….. yes wp_options 9
  • 10. Avantages Inconvénients WP TECH 2014 Différences ● Performance ● Facilité de lecture ● Chercher dans les données sérialisées ● Connaître les clés existantes ● Clés manquantes = erreur ou vide volontaire ● Type de données ● Flexibilité ● Adaptabilité ● Prise en main ● Moins de tables 10
  • 11. WP TECH 2014 CRUD ● wp_options : – add_option(), get_option(), update_option() et delete_option() ● wp_usermeta : – add_user_meta(), get_user_meta(), update_user_meta() et delete_user_meta() ● wp_commentmeta : – add_comment_meta(), get_comment_meta(), update_comment_meta() et delete_comment_meta() ● wp_postmeta : – add_post_meta(), get_post_meta(), update_post_meta() et delete_post_meta() 11
  • 12. Créer une nouvelle table ? ● Quelles données ? – Rentrent-elles dans les tables existantes ? ● WordPress forever ? – Migration ? Evolution ? WP TECH 2014 12
  • 13. Créer une nouvelle table ? ● Comment les données seront lues ? – Serialize et index ne font pas bons amis WP TECH 2014 SELECT * FROM wp_users u1 INNER JOIN wp_usermeta u2 ON u2.user_id = u1.ID WHERE meta_key = 'role_specifique' AND meta_value = '%partenaire%'; 13 SELECT * FROM wp_users u1 INNER JOIN wp_user_role_specifique u2 ON u2.user_id = u1.ID WHERE is_partenaire = 1;
  • 15. WP TECH 2014 Hardware ● Plugin « HyperDB » : – Classe PHP basée sur le code de wordpress.com – Gestion de la réplication (master / slave) – Gestion d'un failover – Tables sur différentes bases de données – Statistiques avancées 15
  • 16. WP TECH 2014 Software 16
  • 17. WP TECH 2014 Software 17
  • 18. ● WordPress utilise le moteur de stockage par défaut WP TECH 2014 Software 18 ● MyISAM vs InnoDB – Attention avec le plugin « YARPP » – Analyser les statistiques d'utilisation – Moteur de stockage modifiable pour chaque table ● Attention si réplication MyISAM InnoDB Beaucoup de lecture, peu d'écriture x Recherche Full-Text (pour MySQL < 5.6) x Autre x
  • 19. WP TECH 2014 Structure des données ● Utiliser les tables WordPress – Penser aux préfixes pour les clés ● Créer ses propres tables si nécessaire 19
  • 20. WP TECH 2014 Requêtes ● Plugin « Debug Queries » lors des développements – Réduire le nombre de requêtes – Améliorer les performances (EXPLAIN) ● Transient – set_transient(), get_transient() et delete_transient() ● Activer Slow Query Log en production 20
  • 21. WP TECH 2014 Index ● Index du coeur WP bien pensés ● Se baser sur Slow Query Log 21
  • 22. WP TECH 2014 Purge ● Cache / Transient ● Révisions ● Données inutiles – Exemple : user agent des commentaires ● Plugins qui enregistrent trop d'information – Exemple : log avec le plugin « Redirection » ● Plugins désinstallés 22
  • 23. WP TECH 2014 Purge ● Plugins : – « WP-Optimize » : purger tout ce qui est possible – « WP-Cleanup plugin » : supprimer les révisions – « Clean Options » : supprimer des données de wp_options 23
  • 24. ● Supprimer les révisions : ● Supprimer les commentaires de spams : WP TECH 2014 Purge DELETE a,b,c FROM `wp_posts` a LEFT JOIN `wp_term_relationships` b ON (a.ID = b.object_id) LEFT JOIN `wp_postmeta` c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'; DELETE FROM `wp_comments` WHERE `comment_approved` = 'spam'; 24
  • 25. WP TECH 2014 Purge ● Supprimer les « meta » des commentaires supprimés : ● Supprimer les « meta » des articles supprimés : 25 DELETE FROM `wp_commentmeta` WHERE `comment_id` NOT IN ( SELECT `comment_id` FROM `wp_comments` ); DELETE pm FROM `wp_postmeta` pm LEFT JOIN `wp_posts` wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;
  • 26. ● Supprimer les mots-clés non-utilisés : WP TECH 2014 Purge DELETE FROM `wp_terms` WHERE `term_id` IN ( SELECT `term_id` FROM `wp_term_taxonomy` WHERE `count` = 0 ); DELETE FROM `wp_term_taxonomy` WHERE `term_id` NOT IN ( SELECT `term_id` FROM `wp_terms` ); DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN ( SELECT term_taxonomy_id FROM wp_term_taxonomy ); 26
  • 27. ● Supprimer le cache des flux : ● Supprimer le user agent des commentaires : WP TECH 2014 Purge DELETE FROM wp_options WHERE option_name LIKE ('_transient%_feed_%'); UPDATE `wp_comments` SET `comment_agent` = ''; ● Supprimer les entrées liées au plugin Akismet : 27 DELETE FROM `wp_commentmeta` WHERE `meta_key` LIKE '%akismet%';
  • 28. Après la purge : OPTIMIZE OPTIMIZE TABLE `wp_commentmeta`; OPTIMIZE TABLE `wp_comments`; OPTIMIZE TABLE `wp_links`; OPTIMIZE TABLE `wp_options`; OPTIMIZE TABLE `wp_postmeta`; OPTIMIZE TABLE `wp_posts`; OPTIMIZE TABLE `wp_terms`; OPTIMIZE TABLE `wp_term_relationships`; OPTIMIZE TABLE `wp_term_taxonomy`; OPTIMIZE TABLE `wp_usermeta`; OPTIMIZE TABLE `wp_users`; WP TECH 2014 28
  • 29. Prévenir le gonflement des tables ● Désactiver les futures révisions : define('WP_POST_REVISIONS', false ); ● Limiter le nombre de révisions à 5 : define('WP_POST_REVISIONS', 5); ● Modifier l'intervalle des sauvegardes automatiques (par défaut 1 minutes) : define('AUTOSAVE_INTERVAL', 600 ); WP TECH 2014 29
  • 30. Merci de votre attention 30