Mélanger des commandes Shell avec du code SQL

"Lorsque vous utilisez MySQL en mode batch, vous aurez souvent besoin d'utiliser les commandes en ligne UNIX en collaboration avec des requêtes SQL. Ce script de démonstration vous montre comment faire cela."
Amit K. Saha présente ici un truc pratique pour tout faire dans un script Shell, sans passer par un langage de programmation complémentaire.

Trouver les index MySQL inutiles

Arjen Lentz propose la requête suivante pour détecter les index qui ne servent à rien dans MySQL :

 
 
SELECT s.table_name,
 
       concat(s.index_name,'(',group_concat(s.column_name order by s.seq_in_index),')') as idx,
 
       GROUP_CONCAT(s.cardinality ORDER BY s.seq_in_index) AS card,
 
       t.table_rows
 
  FROM information_schema.tables t
 
  JOIN information_schema.statistics s USING (table_schema,table_name)
 
 WHERE t.table_schema='dbname'
 
   AND t.table_rows > 1000
 
   AND s.non_unique
 
 GROUP BY s.table_name,s.index_name
 
HAVING (card + 0) < (t.table_rows / 3);
 


La requête utilise la base information_schema (MySQL 5.0 et supérieur), pour repérer les index dont la cardinalité est inférieure à 30% : c'est le niveau à partir duquel MySQL va décider que l'index est utile, et en dessous de ce niveau, MySQL décidera d'ignorer l'index et de tout …

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


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.25 et 6.0.5.
Les mises à jour sont recommandées vers ces versions.



5 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Gallery, Joomla, phpMyAdmin et vBulletin


[Lire plus]
Nouvelle version de MySQL : 6.0.5

MySQL 6.0.5, avec la dernière version de Falcon, est disponible au téléchargement. MySQL 6.0 inclut essentiellement le nouveau moteur Falcon, développé pour MySQL par Jim Starkey.
MySQL 6.0.4 apporte 2 correctifs de sécurité, portant sur les tables MyISAM et la version Microsoft. Un total de 400 bugs ont été corrigés dans cette nouvelle version.
Changements incompatibles :


  • Les tables de logs sont maintenant de type FILE, et non plus TABLE.
  • La bibliothèque de conversion chaîne <-> nombre a été changée
  • MySQL Cluster est doit être téléchargé séparément
  • NDB_LE_MemoryUsage.page_size_kb est renommé page_size_bytes
  • Une colonne ROUTINE_TYPE a été ajouté dans information_schema.PARAMETER


Corrections :


  • Sécurité : …
[Lire plus]
Les index MySQL : types, placements, efficacité

Déjà trois semaines d’écoulées depuis que certains d’entre vous, les “héros”, ont posé leurs questions (oui il est possible de devenir un héros rien qu’en lisant dbnewz ! Les véritables héros sont d’ailleurs abonnés au tout nouveau flux feedburner )

Trois semaines d’attente, cela mérite un billet digne de ce nom, c’est parti.

Indexer, pourquoi ?

L’indexation peut avoir plusieurs buts :
- Accéder à ses données plus rapidement, les index sont en effet l’outil le plus puissant pour accélérer les temps d’exécution de vos requêtes jusqu’à parfois plusieurs centaines de % !
- Définir le degré d’unicité d’une colonne donnée : chaque champ doit-il …

[Lire plus]
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]