Procédures stockées : langage externe, mais pas encore PHP

Lorsque MySQL envisageait d'avoir des procédures stockées, la rumeur circulait que PHP pourrait être le langage adopté. Ce ne fut pas le cas, mais l'idée de pouvoir utiliser n'importe quel langage de programmation comme procédure stockée est restée. Résultat : c'est fait.
Il existe un plug-in MySQL udfng qui accepte du code en C, Java, LegacyUDF (vieilles UDF), Perl et XML-RPC. Eric Herman et Antony Curtis cherchent d'ailleurs les prochaines plates-formes à ajouter. PHP! PHP!

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


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.



3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Joomla, e107 et ming


[Lire plus]
Myriades de proxy pour MySQL

Brian Aker a cessé de compter le nombre de proxy pour MySQL qu'il a repéré : il y a SQL Relay, qui remonte à quelques années, MySQL Proxy, de Jan Kneschke. En fait, il y en a encore 4 autres différents. Lequel est le meilleur, se demande Brian?

ERROR 1030: Got error -1 from storage engine

J’ai été pris avec un problème qui m’a pris un petit temps (30 minutes) à trouver aujourd’hui. Le message retourné par le serveur n’aidait vraiment pas: ERROR 1030: Got error -1 from storage engine

Pour faire une histoire courte, c’étais un vieu serveur sur lequel j’avais eu des problèmes de corruption. Pour bien faire, j’avais ajouté l’option innodb_force_recovery=4 dans le my.cnf dans l’espoire que ca corrige le tout, chose qui ne s’est pas produite.

J’ai donc décidé de tout supprimer (tables, databases, fichiers temporaires, etc) et de remettre à neuf avec un dump.sql créé avec mysqldump. Le recovery allait bien jusqu’à ce que le dump tente d’insérer dans une table InnoDB: ERROR 1030: Got error -1 from storage engine.

Pas évident au premier coup d’oeil. J’ai donc googlé jusqu’à temps que je trouve un post d’un gars qui avait eu le même problème. Il …

[Lire plus]
ORDER BY RAND() Optimisation

Il n?existe pas d?autres moyen magique de sélectionner des enregistrements aléatoirement. Il y a seulement ORDER BY RAND(). Cependant, ORDER BY RAND() est un performance killer lorsque la table possède plusieurs milliés d?enregistrements.Prenons le cas où on veut afficher 10 enregistrements aléatoirement et que cette requête va être exécutée excessivement souvent par l?application. La table utilisée pour les tests est une table avec 500000 enregistrements.

Pour commencer, voyons voir comment MySQL réagis avec une requête qui ordonne sur la clef primaire avec une limite de 10 enregistrements:

  1. SELECT SQL_NO_CACHE *
  2. FROM tableA
  3. ORDER BY id LIMIT 10;
  4. // 0.00 sec

On s?y attendait, c?est tellement rapide que le client Mysql n?arrive pas à être assez précis pour dire le temps que ca a pris. Maintenant, une requête qui ordonne par RAND() avec une limite de 10 …

[Lire plus]
Gestion des changements avec MySQL Workbench

"Vous pensiez peut-être que la conception était la seule mission que MySQL Workbench pouvait remplir, et c'est certainement le coeur de son travail. Mais une des raisons qui font que j'utilise un assistant de modélisation aussi souvent n'est pas dans ses capacités à produire des liens logiques, mais pour ce qu'il peut faire pour moi dans le cadre des évolutions de versions. MySQL Workbench contient un grand nombre de contrôle de changements que vous n'aviez peut-être pas repéré à première vue, alors laissez moi vous montrer comment il peut gérer les altérations de votre modèle de données."

Réplication retardée

Lorsque la réplication retarde de 3 secondes, cela a un impact sur la cohérence d'un serveur Web. Mais alors, quel est le fou qui veut pouvoir configurer 30 minutes de retard sur une réplication?
En fait, la réplication permet de protéger un serveur contre les crash : si le serveur maître plante, l'esclave dispose déjà des commandes nécessaires pour proposer une sauvegarde de secours, jusqu'au moment du crash. Mais si c'est une erreur d'administration, où la commande DROP TABLE n'est pas munie d'une condition WHERE, alors votre bévue sera immédiatement répercutée sur l'esclave et donc, la sauvegarde. La réplication protège contre les crash, mais pas contre les bourdes.
La réplication retardée, de 30 minutes par défaut, peut vous aider dans ce genre de situations.

[Lire plus]
BLOB Streaming : bientôt sur votre PHP

Blob streaming est une fonctionnalité du moteur MySQL PBXT de primebase qui va révolutionner l'utilisation des blob : désormais, le contenu des blobs est stocké directement dans le système de fichiers, et la lecture de ces blob se fait directement vers le client, sans passer par le moteur MySQL, ni le moteur de table. Au lieu de lire le blob dans le fichier de données, le charger en mémoire, puis l'envoyer à PHP, qui lui-même, alloue la mémoire pour le stocker temporairement, puis l'envoie au navigateur, c'est un raccourci qui est utilisé : le contenu est géré dans la table (ses metadonnées), mais stocké sur le système de fichiers, et accessible directement. Au passage, le stockage d'images en base de données devient raisonnable en termes de performances.
PrimeBase a 2 projets Google cette année, : une extension PHP et le support dans phpMyAdmin. Espérons que cela arrive rapidement!

  •   …
[Lire plus]
Vidéo PHP et MySQL, édition 44

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



Ces vidéos sont …

[Lire plus]
Programmation créative avec MySQL

Guiseppe Maxia publie sa conférence de CommunityOne, consacrée à la programmation créative en MySQL. C'est un ensemble de trucs et d'utilisation de différentes tables et technologies de MySQL, très habiles.
Il y a par exemple les doubles insertions : il suffit de faire un moteur blackhole, et d'ajouter un trigger qui réalise les insertions dans deux autres tables. Il y a aussi les tables fédérées ou les vues.
La conférence fait aussi une liste sans concession des limitations de certaines technologies actuelles. J'aurai aimé le voir en conférence, car Guiseppe a une expérience SQL incroyable.