Comprendre et optimiser la base de données WordPress WP TECH 2014



Documents pareils
WordPress :: Migrer son site du local vers le serveur en ligne

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Sommaire. 1. Présentation de WordPress. 2. Hébergement et installation. 3. Prise en main, ajouter des contenus

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

Introduction à ElasticSearch

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Comment mettre en ligne un site WordPress local

Optimisation de MySQL

Optimisations des SGBDR. Étude de cas : MySQL

BTS/CGO P10 SYSTEME INFORMATION Année

Choix du Logiciel WORDPRESS

Audit et optimisation MySQL 5

WordPress, thèmes et plugins : mode d'emploi

Olivier Mondet

SQL Historique

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Synchronisation Mysql (Replication)

Initiation ++ pour le

SYSTÈMES D INFORMATIONS

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Les BASES de DONNEES dans WampServer

PROGRAMMES FORMATIONS INTERNET

PHP. PHP et bases de données

Tour d horizon des CMS. Content Management System

Nouveautés de Drupal 8. Léon

Projet en nouvelles technologies de l information et de la communication

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Mysql. Les requêtes préparées Prepared statements

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

STAGE2 STAGIAIRE / NIKOLAOS TSOLAKIS. 16/02/2015 : choix des outils nécessités pour l application : Didier Kolb, le maitre de stage

Un site web collaboratif avec Drupal. Judith Hannoun - Journées INSHS 16 Octobre 2012

Cours SQL. Base du langage SQL et des bases de données

Session S12 Les bases de l optimisation SQL avec DB2 for i

Le langage SQL Rappels

Optimiser WordPress pour le référencement naturel

MYSQLDUMP & ZRM COMMUNITY

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Langage SQL : créer et interroger une base

FileMaker 13. Guide de référence SQL

Sybase Adaptive Server Enterprise 15

les techniques d'extraction, les formulaires et intégration dans un site WEB

MySQL 5.6. Performances et Tuning. MySQL Performances et Tuning. MySQL 5.6. Vincent TAHON

TP Bases de données réparties

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Utiliser un CMS: Wordpress

OpenPaaS Le réseau social d'entreprise

MySQL - Réplication. Fichiers de relais et de statut de la réplication. Mise en place de la réplication

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Découvrir Drupal, le CMS Open Source de référence. Michel-Marie MAUDET Linagora /

Les 13 plugins WordPress gratuits et indispensables. Mohamed El Amine Benni

Construction d un Site Internet Dynamique avec Joomla René-Yves Hervé, Ph.D.

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

PHP 5. La base de données MySql. A. Belaïd 1

Module de livraison DPD Magento

Les bonnes pratiques. de l hébergement d un CMS

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

SOMMAIRE. 1. Comprendre les bases - référencement, indexation et positionnement - comment fonctionne Google pour indexer et référencer un site?

Encryptions, compression et partitionnement des données

Créer son propre site Internet formation WordPress 2015

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

Historisation des données

Les logiciels libres de gestion de contenus Internet / Extranet pour le secteur public. 24 septembre 2008

MariaDB/MySQL Avancé. Pierre Mavro Creative Commons License

Les bases de l optimisation SQL avec DB2 for i

Les bases de données

Ora2Pg Performances. (C) 2013 Gilles Darold

Programme CREATION SITE INTERNET (CMS Wordpress)

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

CREATION WEB DYNAMIQUE

Fingerprinting d'applications Web

Introduction à JDBC. Accès aux bases de données en Java

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

WordPress. Présentation HETIC

Piwik L'alternative Open Source en web analytique - Version numérique

Guide d'installation et de configuration du module

Drupal (V7) : principes et petite expérience

Systèmes de Gestion de Bases de Données

Travaux pratiques. avec. WordPress. Karine Warbesson

Joomla! Création et administration d'un site web - Version numérique

Introduction aux SGBDR

Drupal : Optimisation des performances

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Gestion des utilisateurs et de leurs droits

Modélisation et Gestion des bases de données avec mysql workbench

Blogging et sites de contenu. Comment créer un site de contenu et l'animer

Les Utilisateurs dans SharePoint

GUIDE DE DEMARRAGE V1.02

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Quel CMS choisir pour son site web?

Transcription:

Comprendre et optimiser la base de données WordPress

Qui suis-je? Tony Archambeau @TonyArchambeau Projets sql.sh 2

Comprendre 3

Tables WordPress Général wp_commentmeta wp_comments wp_links wp_options wp_postmeta wp_posts wp_terms wp_term_relationships wp_term_taxonomy wp_usermeta wp_users Multi-site wp_blogs wp_blog_versions wp_registration_log wp_signups wp_site wp_sitecategories wp_sitemeta 4

Modèle Physique des Données 5

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

Structure «ordinaire» Table «users» 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

Structure avec WordPress wp_users ID user_login user_pass 1 marcel... 2 sandrine... 3 theo... wp_usermeta 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 Ajout de données = ajout de lignes dans la table wp_usermeta 8

Serialize wp_options option_id option_name option_value autoloaded 1 active_plugins a:4:{i:0;s:38:"copyright-footer-rss/copyrightrss.php";i:1;s:33:"login-security/loginsecurity.php";i:2;s:35:"wp-sitemap-page/wpsitemap-page.php";i:3;s:17:"wp-smo/wpsmo.php";} 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;} 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 yes yes 9

Différences Avantages Inconvénients Flexibilité Adaptabilité Prise en main Moins de tables 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 10

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? 12

Créer une nouvelle table? Comment les données seront lues? Serialize et index ne font pas bons amis 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%'; SELECT * FROM wp_users u1 INNER JOIN wp_user_role_specifique u2 ON u2.user_id = u1.id WHERE is_partenaire = 1; 13

Optimiser 14

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

Software 16

Software 17

Software WordPress utilise le moteur de stockage par défaut MyISAM vs InnoDB Attention avec le plugin «YARPP» Analyser les statistiques d'utilisation Moteur de stockage modifiable pour chaque table Attention si réplication Beaucoup de lecture, peu d'écriture Recherche Full-Text (pour MySQL < 5.6) Autre MyISAM x x InnoDB x 18

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

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

Index Index du cœur WP bien pensés Se baser sur Slow Query Log 21

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

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

Purge Supprimer les révisions : 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'; Supprimer les commentaires de spams : DELETE FROM `wp_comments` WHERE `comment_approved` = 'spam'; 24

Purge Supprimer les «meta» des commentaires supprimés : DELETE FROM `wp_commentmeta` WHERE `comment_id` NOT IN ( SELECT `comment_id` FROM `wp_comments` ); Supprimer les «meta» des articles supprimés : DELETE pm FROM `wp_postmeta` pm LEFT JOIN `wp_posts` wp ON wp.id = pm.post_id WHERE wp.id IS NULL; 25

Purge Supprimer les mots-clés non-utilisés : 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

Purge Supprimer le cache des flux : DELETE FROM wp_options WHERE option_name LIKE ('_transient%_feed_%'); Supprimer le user agent des commentaires : UPDATE `wp_comments` SET `comment_agent` = ''; Supprimer les entrées liées au plugin Akismet : DELETE FROM `wp_commentmeta` WHERE `meta_key` LIKE '%akismet%'; 27

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`; 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 ); 29

Merci de votre attention 30