Arnaud Gadal DBA MySQL à Virgin Mobile, Pascal Borghino architecte base de données à Yahoo! (mes potos de dbnewz) et moi, venons juste de terminer l’écriture d’un livre consacré à l’audit et à l’optimisation d’un serveur MySQL.
A travers cet ouvrage, nous avons essayés de synthétiser nos différentes expériences pour vous aider à tirer le meilleur de votre base de données. Dans le livre nous abordons des sujets comme les architectures de réplication, le tuning du serveur, les moteurs de stockage, les logs…
Audit & optimisation MySQL 5 eet édité par eyrolles et devrait être disponible d’ici 4 à 6 semaines
Conférences MySQL au Forum PHP
Le MySQL User Group Francophone est partenaire avec l’AFUP du Forum PHP, qui se tient les 12 et 13 novembre 2009, à la Cité des Sciences et de l’Industrie.
Au programme des conférences dédiées à MySQL et MariaDB :
* mysqlnd / « MySQL native driver for PHP » : Les améliorations de la stack
* Au secours, ma base de données fait ramer mon application !
* LeMug : MariaDB, the future of MySQL avec Michael Widenius aka Monty
* Retour d’expérience sur l’utilisation de MySQL Chez Orange Business Services
* Réplication MySQL : retours d’expérience
Participez à cet événement et bénéficiez d’une offre exceptionnelle :
les deux journées du Forum PHP
+
l’adhésion 2009/2010 au MySQL User Group France
pour 140 euros au lieu de 200 euros !*
Suivez ce lien pour adhérer au MUG et recevoir votre badge pour le Forum PHP
*Tarif normal de l’accès deux jours au Forum PHP 180 euros + Adhésion annuelle au MySQL User Group 20 euros.
Le cache est toujours à jour car en cas de modification d’une table, toutes les requêtes en relations avec cette table sont invalidées.
Le cache de requêtes est en général utile lorsque:
Les modifications sur les tables ne sont pas très fréquentes
Beaucoup de requêtes de lectures identiques
Utilisation de tables MyISAM. Moins intéressant pour InnoDB
Voilà un petit panorama de l’utilisation des fonctionnalités XML de MySQL. Comme nous l’avons vu, générer le résultat d’une requête au format XML reste très simple avec le client texte mysql, idem pour la génération d’une sauvegarde (mysqldump). De plus, bien que n’étant pas un base de données XML, ont peut aisément y stocker des flux XML, et les parcourir ou les modifier grâce aux fonctions extractValue et updatexml, et une bonne dose d’XPath. Le support de ce dernier, par MySQL, reste encore assez basique, mais ce manque sera comblé progressivement dans les prochaines versions.
L’édition 2009 du rendez-vous incontournable des utilisateurs PHP en France s’installe à la Cité des Sciences de La Villette, les 12 et 13 novembre 2009.
Une édition qui mettra à l’honneur le couple PHP/MySQL, avec un invité de marque, pour la 1ère fois en France : Michael « Monty » Widenius.
Les fonctionnalités XPath de MySQL 5
MySQL 5 offre la possibilité de pouvoir exécuter des requêtes XPath sur un flux XML, grâce à la fonction extractValue().
Le résultat récupéré est la concaténation de la valeur textuelle de chacun des nœuds trouvés (chaque valeur étant dissociée des autres par un espace blanc).
Comment récupérer la valeur de l’élément racine d’un flux XML ?
L’association LeMug.fr (MySQL User Group francophone) organisera son forum MySQL avec l’aide de l’Association Française des Utilisateurs de PHP (http://www.afup.org) les 12 et 13 Novembre 2009 à la Cité des Sciences et de l’Industrie.
Plusieurs conférences sont prévues sur la base de données MySQL avec des intervenants de renom. Le programme est en cours de finalisation !
Les membres de l’association LeMug.fr bénéficient d’une réduction sur le tarif global !
Pour vous inscrire ou vous tenir au courant : http://afup.org/pages/forumphp2009/inscription.php
Avalisé par les autorités américaines de la concurrence, le rachat de Sun par Oracle patauge encore en Europe. Rien n’indique que l’exécutif européen donnera son feu vert pour le moment, car il vient d’ouvrir une enquête approfondie.
Rien n’est encore joué ! Bien que les autorités américaines aient donné leur accord pour le rachat de Sun par Oracle, à Bruxelles, le dossier est encore en standby.
C’est en tout cas ce que rapporte Reuters, expliquant que l’intégration de Sun, et notamment celle de MySQL, au portefeuille d’Oracle est relativement gênante. Car purement et simplement, ceci pourrait faire d’Oracle un acteur sur les bases de données en position dominante. Ce qui n’a pas semblé choquer les autorités américaines.
La Commission Européenne a d’ailleurs ouvert aujourd’hui une enquête approfondie sur la fusion des deux groupes. Celle-ci doit être conclue au plus tard le 19 janvier 2010 ! Le commissaire à la concurrence a déclaré que « La Commission doit examiner très soigneusement les effets sur la concurrence en Europe lorsque la première entreprise mondiale de base de données se propose de racheter la première entreprise mondiale de base de données open-source ». D’où les doutes entretenus jusqu’ici…
Soulignons également que Sun a très récemment annoncé une perte sèche de 147 millions de dollars (contre un bénéfice de 88 millions de dollars sur un an) et un recul des ventes de 31% sur le dernier trimestre fiscal.
my.cnf, comme vous le savez certainement est le nom du fichier de configuration de MySQL. Vous pouvez également le retrouver sous le nom de my.ini en environnement MS Windows. Il permet comme son nom l’indique de configurer votre serveur MySQL en y centralisant les options de … configuration. Le but ici n’est pas de détailler la longue liste des paramètres de MySQL, la documentation officielle est (presque) bien faite, mais de mettre le « focus » sur la directive !include (avec un « ! » devant).
Cette dernière permet d’inclure un fichier de configuration dans un autre (sic). Autant je suis un adèpte de la non duplication du code en dévellopement (des require_once en PHP utilisés avec modération ça vous simplifie bien votre code), autant je ne suis pas un grand fan pour éclater la configuration de mon serveur MySQL en plusiseurs endroits. Cependant 🙂 il faut avouerque parfois cela peut servir !
Alors comment ça marche ?
C’est (apparemment) très simple. Mon client mysql va chercher sa configuration dans différents endroits (définit à la compilation):
daz@daz-laptop:~$ mysql –help
…
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
Mon fichier de configuration se nomme /etc/mysql/my.cnf et il contient simplement la directive !include suivit du « vraie » fichier de configuration:
daz@daz-laptop:~$ cat /etc/mysql/my.cnf
!include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf
Et au final dans mon fichier de configuration (au passage j’utilise le très pratique soft développé par Giuseppe Maxia : MySQL Sandbox):
daz@daz-laptop:~$ cat /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf
[mysql]
prompt=’mysql [\h] {\u} (\d) > ‘
[client]
port = 5135
socket = /tmp/mysql_sandbox5135.sock
…
Simple non ?
C’est (presque) tout, et ça marche…pas 🙁
daz@daz-laptop:~$ mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
Une petite vérification s’impose:
daz@daz-laptop:~$ mysql –help
mysql Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
…
port 0
socket (No default value)
Les paramètres ne sont pas prit en compte. (commentaire de l’expert: ça ne peut donc pas fonctionner)
(30 minutes et beaucoups d’insultes plus tard…)
En fait, la subtilité, c’est de rajouter un saut à la ligne, à la fin de la commande !include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf
daz@daz-laptop:~$ mysql –help
mysql Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
…
port 5135
socket /tmp/mysql_sandbox5135.sock
daz@daz-laptop:~$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.35-log MySQL Community Server (GPL)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql [localhost] {daz} ((none)) >
(commentaire de l’expert: ça fonctionne !)
Giuseppe Maxia