Chargements paralleles de fichiers .sql

Domas Mituzas a tenté plusieurs choses pour accélérer ses importations de données MySQL : la première est un client appelé paramy, qui paralellise les chargements sur plusieurs threads. Cela permet d'utiliser plus fortement le serveur, et d'utiliser à fond le processeur.
Toutes fois, le gain initial n'était pas significatif, car les tables utilisées avaient des index auto-increment. En le désactivant, puis réactivant à la fin, Domas a gagné 66% de vitesse. La commande à connaître est 'DISABLE KEYS', qui permet de désactiver les index. Sans ces vérifications supplémentaires, les insertions sont beaucoup plus rapides, et les index ne sont utilisées et regénérés qu'à la commande ENABLE KEYS. Ce sont des clauses de la commande ALTER TABLE.

[Lire plus]
Un moteur de queue pour les tables MySQL

Kazuho Oku publie un moteur de queue pour MySQL. Une table MySQL devient alors une queue : en mode normal, c'est une table comme une autre. En mode queue, on peut lancer une commande select qui attendra la prochaine ligne disponible, et la renverra : dès sélection, cette ligne est effacée.
Q4M se présente comme un moteur de table séparé, à spécifier lors de la constitution de la queue. Il met l'accent sur l'enregistrement immédiat des données qui sont insérées : le plus important pour une queue est de ne pas perdre les messages qui lui sont confiés (même s'ils sont en ligne comme celle d'Amazon).

[Lire plus]
Alertes sécurité des applications PHP et MySQL, édition 203


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



5 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Gallery, Mantis, PostNuke, WordPress et e107


[Lire plus]
Les versions MySQL plus difficiles à suivre

Coup sur coup, les versions de MySQL sont devenues plus compliquées. En fait, les moteurs de tables disponibles pour MySQL ont maintenant leur vie propre indépendante de MySQL (le serveur lui-même). Reprenons :


  • Oracle/InnoDB est livré indépendamment de MySQL depuis Avril
  • Falcon est basé sur MySQL 6.0 (pas sur la 5.1)
  • Maria est basé sur MySQL 5.1 (pas sur la 6.0)
  • MySQL Cluster a une version indépendante (lui-même est en version 6.2)
  • Les tables fédérées ont disparu de la 5.1.24 (mais reviendront en 5.1.25)


Je comprend le besoin de pouvoir faire évoluer deux projets comme le serveur MySQL et ses moteurs de tables indépendamment. Mais il faut reconnaître qu'il va être plus difficile de constituer son serveur MySQL maintenant, vu qu'il faut préciser la version de MySQL et celle des …

[Lire plus]
Modifier le innodb_log_file_size

Je me suis déjà fait avoir 2 fois par cette option. Si vous avez des tables InnoDB avec un gros load d’écriture (insert, update), il est généralement recommandé d’avoir un innodb_log_file_size assez élevé. Mais soyez vigilant: plus la grosseur du log file est élévée, plus le temps de recovery est long dans le cas d’un crash.

Mais peu importe. Là ou je veux en venir, c’est sur la manière de modifier cette option. InnoDB est un engine capricieux et innodb_log_file_size est l’un de ses caprices. Les logs jouent un rôle très important dans plusieurs concepts d’InnoDB. Il y stock un tas d’information comme le schema de certains .frm et d’autres metadata. Le problème est qu’on ne peut pas simplement modifier la grosseur du log dans le my.cnf et repartir le serveur. En fait oui, c’est possible et le serveur ne fera pas d’erreur. Mais aucune table InnoDB ne sera utilisable.

La manière …

[Lire plus]
High Performance MySQL 2nd edition, pour bientôt? ou pas.

Deux mauvaises nouvelles de la part de O’reilly ce mois-ci :

- J’attendais mon édition de High Performance MySQL 2nd edition pour la semaine prochaine, le 1er juin d’après le mail récapitulatif de précommande reçu fin avril, mais c’est la date du 1er juillet qui apparaît désormais sur la fiche d’Amazon France… Le .com indique en revanche la date du 19 juin, un peu flou tout ça.
Ceux qui comme moi sont impatients de découvrir cette seconde édition (l’ancienne datait de 2004 et était déjà excellente) devront donc patienter encore un peu.
D’ici là libre à vous de la précommander ou d’attendre mon verdict… qui ne pèsera sans doute pas grand chose face à la qualité des auteurs présents : les experts du fameux “ …

[Lire plus]
FireWall pour PHP et MySQL

Tout le monde connaît les firewall, qui surveillent le contenu du trafic réseau, et imposent des limites à ce qui est possible de faire. Le même concept a été porté en PHP et MySQL.
Le firewall doit surveiller un contenu qui ne lui est pas destiné : il hésite constamment entre appliquer des filtres de sécurité draconienne, au détriment du contenu applicatif, et une politique plus souple, au détriment de la sécurité. PHP-IDS et GreenSQL font la même chose.
PHP-IDS ne modifie pas le contenu, mais émet un score sur la probabilité qu'une donnée entrante soit potentiellement dangereuse (XSS, injection SQL, injection PHP, etc). De même, Green SQLse place entre le serveur Web et MySQL, puis surveille les requêtes entrantes pour ne pas laisser passer les commandes administratives importantes (drop table), ou naïves (comparaisons de constantes).

  •   …
[Lire plus]
Profiler les requêtes SQL : 4 étapes

Récemment, Ghislain (qui gère les serveurs de nexen) m'a rappelé l'existence de SHOW FULL PROCESSLIST, qui est si pratique pour faire afficher la totalité des requêtes SQL en cours, et non pas les premiers caractères. Quand on veut profiler un serveur, et savoir quelles sont les requêtes qui sont si lentes, c'est vraiment essentiel.
Autrement, je recommande souvent 4 étapes pour profiler une requête SQL :


  1. L'exécuter manuellement et voir le temps qu'elle prend dans le client MySQL. C'est souvent par cela qu'on commence, vu qu'il faut bien déboguer fonctionnellement la requête avant de la profiler. A ce stade, si le temps de calcul dépasse 0.00s, c'est mauvais. EXPLAIN arrive alors à la rescousse.
  2. Après les tests à l'unité, il faut évaluer le comportement avec beaucoup de données. Généralement, un ordre de magnitude de plus que ce qui est attendu est une bonne …
[Lire plus]
Vidéo PHP et MySQL, édition 46

Voici les 5 dernières vidéos PHP et MySQL.



Ces vidéos sont …

[Lire plus]
Asbru Adds More Ready-to-Use Applications to CMS

Version 6.8 of the Asbru Web Content Management system for PHP, ASP and JSP/Java has been released.

Version 6.8 of the Asbru Web Content Management system is a major upgrade with focus on supplying a number of ready-to-use applications, which makes it easy for organizations to add a variety of functions to their websites. Version 6.8 also adds Landing Page Optimization (LPO) capabilities.

Stores and Branches Directory
Among the new applications in the latest version 6.8 is a Stores and Branches Directory application. This application enables non-technical users to add searchable lists of stores and branches to their website in just three steps. When a website visitor selects a store a map and details about the store is displayed.

Careers and Jobs Directory
The new version also includes a Careers and Jobs Directory, that when added to a website enables visitors to search for jobs and submit …

[Lire plus]