Tout sur les index

Les index n'ont plus de secret pour dbnewz, et il n'en n'auront plus pour vous non plus quand vous aurez lu ce long dossier. En plus du classique EXPLAIN qui explique l'utilisation des index par les requêtes, vous pourrez découvrir PROCEDURE ANALYSE(), qui optimise le type de données pour votre table.
Index simples, index multiple, choix des index : tout y passe. Il ne reste que la structure des index et leurs performances, à voir dans les prochains articles.

Introduction à PHP Reports

PHP Reports est une bibliothèque qui aide à la génération de formulaires de rapports. Elle découpe la production des rapports en trois couches : les données, la page et les groupes. Cela permet de maîtriser les différents regroupements et aspects d'un rapport, pour produire rapidement un fichier HTML sans reinventer la roue à chaque fois. Sans être une révolution, cette petite bibliothèque peut se révéler utile à bien des moments.

Stocker des fichiers dans MySQL

Est-il mauvais de stocker des fichiers dans MySQL ? Il n’y a pas de bonne ou mauvaise réponse à cette question. Tout dépend de vos besoins. Personnellement, je préfère stocker les fichiers à l’extérieur de la base de données pour les raisons suivantes:

  • Le filesystem va mieux cacher les fichiers
  • Le serveur MySQL va avoir plus de facilité à cacher les autres données
  • Le débit de donnée du serveur va être moins élevé
  • Il est plus facile de réorganiser et maintenir les fichiers
  • Le tablespace demeure petit (si vous devez utiliser InnoDB)

Une bonne approche est de stocker un pointeur vers les fichiers sur le filesystem plutôt que le binaire du fichier directement dans la BD. Il y a cependant des avantages à les stocker dans la base de données:

  • Toutes les données sont centralisées à une place pour les backups
  • C’est plus …
[Lire plus]
Vidéo PHP et MySQL, édition 50

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



Ces vidéos …

[Lire plus]
Appeler du code Java depuis MySQL

"Cette dépêche est la suite de ma session à JavaDeus 2008, où j'ai montré comment utiliser Lucene à l'intérieur de MySQL, en utilisant une branche expérimentale, quelques procédures stockées et déclencheurs.
Comme le processus n'est pas entièrement évident, et que cette branche est très expérimentale, j'ai pensé qu'il serait utile de détailler tout cela en ligne. Il est vraiment surprenant de voir comment peu de code (en Java, en tous cas) peut vous donner un moteur de recherche en texte intégral complet et souple."
Où il est question de faire une procédure stockée en Java. Beaucoup de compilation, et au final, l'utilisation directe de Java en MySQL.

[Lire plus]
Différence entre MySQL 4 et MySQL 5

J?ai fais beaucoup de tests pour m?assurer qu’une base de donnée en production sur MySQL 4 allait avoir le même comportement sur MySQL 5. Voici donc ma conclusion et les recommandations en conséquence.

La première différence que j?ai trouvé concerne les strings qu?on insère dans un champ char/varchar. Si on insère une string qui possède des espaces au début ou à la fin, MySQL4 les trim automatiquement. Ce n?est pas le cas de MySQL5. Il faut donc être spécialement attentif à ce qu?on insère et trimer tout les valeurs avant (c’est ce qu’il faudrait toujours faire de toute façon). Supposons qu?il se glisse accidentellement 2 espaces dans un champs, et qu?il y a 2 000 000 d?enregistrements dans la table. Il y aura donc 3.81 Mo de données et 3.81 Mo d?index (si le champs est indexé) pour stocker des espaces inutiles. Ça peut sembler trivial mais 3.81 Mo d?index, c?est énorme.

Une autre différence concerne …

[Lire plus]
DBDesigner 4 : générer son MCD par reverse engineering

Disposer dun MCD (modèle conceptuel de données) lorsquon travaille sur une requête SQL impliquant différentes tables représente un gain de temps.
Il est en effet plus rapide de jeter un coup doeil sur un MCD afin de repérer quels sont les champs qui lient une table à une autre plutôt que denchaîner les DESC ma_table, puis repérer la clé primaire et les éventuelles clés étrangères, et rebolote sur la ou les tables de destination
La prochaine série darticles sur les index MySQL va nous amener à enchaîner quelques requêtes sur une des deux bases dexemple disponibles sur le site de MySQL : world et sakila, le prétexte est donc tout trouvé pour évoquer ici la solution que jai retenu pour obtenir le MCD de ces tables : DBDesigner 4.
Cet outil nest pas nouveau, son successeur officiel est même déjà connu, il sagit de MySQL Workbench. Celui-ci nétant pas encore disponible sous linux, nous utiliserons son ancêtre …

[Lire plus]
pager : retraitements des résultats MySQL

Le client en ligne de commande MySQL dispose d'un système pour appeler des scripts externes avant d'afficher les résultats. On peut donc automatiser des mises en forme personnalisées, ou simplement noter des informations tout en traitant des données.
Le plus simple est encore le pager less, qui évite les défilements infinis de données.

 
 
pager less
 
SHOW innodb STATUS\G
 


Baron Schwartz montre aussi comment calculer la durée d'attente d'un verrou ou bien comment l'utiliser avec Maatkit pour faire un affichage en arbre. Très pratique, vraiment.

DBDesigner 4 : générer son MCD par reverse engineering

Disposer d’un MCD (modèle conceptuel de données) lorsqu’on travaille sur une requête SQL impliquant différentes tables représente un gain de temps.
Il est en effet plus rapide de jeter un coup d’oeil sur un MCD afin de repérer quels sont les champs qui lient une table à une autre plutôt que d’enchaîner les “DESC ma_table”, puis repérer la clé primaire et les éventuelles clés étrangères, et rebolote sur la ou les tables de destination…

La prochaine série d’articles sur les index MySQL va nous amener à enchaîner quelques requêtes sur une des deux bases d’exemple disponibles sur le site de MySQL : world et sakila, le prétexte est donc tout trouvé pour évoquer ici la solution que j’ai retenu pour obtenir le MCD de ces tables : DBDesigner 4.

Cet outil n’est pas nouveau, son successeur officiel est même déjà …

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


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.



8 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Cache_Lite, Drupal, Gallery, Horde, Joomla, RoundCube Webmail, ming et vBulletin


[Lire plus]