Community journal

The latest from the MySQL community

Ideas, releases, practical guides, and perspectives from the people building with MySQL.

Follow the feed
Showing entries 2201 to 2210 of 2494 « Previous | Next »
Comment MySQL exécute les clause ORDER BY


Actuellement, MySQL a trois moyen de produire un résultat ordonné :

En utilisant un index couvrant toutes les colonnes demandées et ordonnées En utilisant un tri en mémoire En utilisant une table temporaire

Sergey Petrunia détaille le fonctionnement de chaque méthode. La meilleure reste toujours la technique des index couvrants : il faut créer un index avec toutes les colonnes utilisées dans la requête. De cette manière, MySQL ne va même pas lire les données sur le disque, puisqu'elles sont déjà dans l'index. Le gain est apréciable.

MySQL : misères et solutions


Voici deux billets tombés sur mes téléscripteurs presque en même temps : d'abord, les misères d'un ancien administrateur Oracle, qui découvre que autocommit est désactivé par défaut (le contraire d'Oracle). Il finit par résoudre son problème avec une procédure de connexion : une petite fonction stockée sur le serveur, qui est exécutée automatiquement à chaque connexion.

L'autre relate les tribulations d'un utilisateur de cluster, qui finalement revient à la réplication.

Petites misères et solutions : beaucoup d'informations pratiques du terrain à chaque fois. Par exemple, InnoDB produit 50% moins de données si le nombre de connexion simultanée augmente de 100%. Intéressant.

LOAD XML : charger du XML directement dans MySQL


Il existe désormais une commande LOAD XML, qui analyse un fichier XML pour le charger en base de données. Elle fonctionne sur le même principe que LOAD DATA, mais analyse partiellement le code XML pour deviner les lignes et les colonnes. Le tout est reconstitué dans une table MySQL.

LOAD XML [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'filename' [REPLACE | IGNORE] INTO TABLE [db_name.]tbl_name [CHARACTER SET charset_name] [ROWS IDENTIFIED BY ''] [IGNORE number [LINES | ROWS]] [(column_or_user_var,...)] [SET col_name = expr,...]

Disponible depuis MySQL 5.2.5, c'est à dire 6.0.0. A l'inverse, le client MySQL est déjà capable de produire des résultats en XML depuis longtemps. C'est l'option --xml ou -X.

Comment MySQL exécute les clause ORDER BY


Actuellement, MySQL a trois moyen de produire un résultat ordonné :

En utilisant un index couvrant toutes les colonnes demandées et ordonnées En utilisant un tri en mémoire En utilisant une table temporaire

Sergey Petrunia détaille le fonctionnement de chaque méthode. La meilleure reste toujours la technique des index couvrants : il faut créer un index avec toutes les colonnes utilisées dans la requête. De cette manière, MySQL ne va même pas lire les données sur le disque, puisqu'elles sont déjà dans l'index. Le gain est apréciable.

Sécurité PHP 5 et MySQL

Je viens de lire récemment Sécurité PHP 5 et MySQL, écrit par Damien Seguy et Philippe Gamache. J’ai évidement commencé par les parties que me tiennent à coeur, MySQL et en particulier:

  • Risques liés aux bases de données
  • Vulnérabilités des base de données
  • Mesures de sécurité pour MySQL

Je vous le conseille, vous trouverez un condensé de tout ce qu’il faut savoir à ce sujet pour protéger vos bases de données. Merci messieurs!
Je vais m’attaquer à la partie PHP

Problème de verrou?

J’ai eu un petit problème sympa à résoudre. En résumé, nous avons 2 tables t1 et t2.

mysql> select * from t1;
+——+——+
| id | name |
+——+——+
| 1 | a |
| 2 | b |
| 3 | ab |
| 4 | bc |
+——+——+

mysql> select * from t2;
+————–+———+
| dependent_id | base_id |
+————–+———+
| 1 | 1 |
| 3 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 3 | 2 |
| 4 | 2 |
+————–+———+

Nous ouvrons une transaction (T1) et nous exécutons la requête suivante.

SELECT * FROM t1 JOIN t2 WHERE t1.id=t2.dependent_id AND t2.base_id=1 FOR UPDATE;

+——+——+————–+———+
| id | name | dependent_id | base_id |
+——+——+————–+———+
| 1 | a | 1 | 1 |
| 3 | ab | 3 | 1 …

[Lire plus]
Différentes sauvegardes pour MySQL


"En supposant que vous ne voulez pas acheter de logiciel supplémentaire (eg, Zmanda), vous pouvez utiliser mysqldump (export) et/ou LVM (hot backup) pour vos besoins en sauvegarde. mysqlhotcopy n'est pas fait pour InnoDB. La réplication est aussi une bonne idée. Voici plus d'information sur chaque méthode."

Une revue du paysage de la sauvegarde de données MySQL, par un administrateur Oracle. Ceux qui connaissent cette technologie retrouveront un certain nombre de concept familier, déclinés à la sauce MySQL.

Problème de verrou?


Ou comment il suffit d'avoir plus de donner pour débloquer deux transactions.

Et où vous en apprendrez plus sur le fonctionnement de l'optimiseur interne de MySQL.

Différentes sauvegardes pour MySQL


"En supposant que vous ne voulez pas acheter de logiciel supplémentaire (eg, Zmanda), vous pouvez utiliser mysqldump (export) et/ou LVM (hot backup) pour vos besoins en sauvegarde. mysqlhotcopy n'est pas fait pour InnoDB. La réplication est aussi une bonne idée. Voici plus d'information sur chaque méthode."

Une revue du paysage de la sauvegarde de données MySQL, par un administrateur Oracle. Ceux qui connaissent cette technologie retrouveront un certain nombre de concept familier, déclinés à la sauce MySQL.

Problème de verrou?


Ou comment il suffit d'avoir plus de donner pour débloquer deux transactions.

Et où vous en apprendrez plus sur le fonctionnement de l'optimiseur interne de MySQL.