Showing entries 1 to 10 of 11
Suivant 1 Entrées plus anciennes »
Displaying posts with tag: Astuce (reset)
Planifier sa migration MySQL

J'ai créé une courte vidéo pour te présenter le plan d'action à mettre en place pour réussir ta migration vers MySQL

The post Planifier sa migration MySQL first appeared on dasini.net - Journal d'un expert MySQL.

Où télécharger MySQL ?

Lorsque l'on démarre un nouveau projet, il est en général conseillé de partir sur la version la plus récente de MySQL, histoire de profiter des toutes dernières fonctionnalités mais aussi (surtout ?) d'être certain d'être à jour au niveau des patchs de sécurité.

Cet article centralise les différentes URLs pour télécharger la base de données Open Source la plus populaire au monde.

Topo sur les premières versions publique de MySQL

j'ai régulièrement l'opportunité de rencontrer les utilisateurs des produits MySQL, et je suis toujours un peu surpris de voir des applications critiques qui tournent sur des versions pas vraiment récente (pour employer un euphémisme) :)

La bonne nouvelle est que manifestement les anciennes versions de MySQL sont suffisamment stables et performantes pour faire tourner du business moderne. Cependant, et ce même si je comprend bien qu'il est parfois pertinent de figer toutes les couches d'une architecture, il est souvent dommage de ne pas profiter des dernières améliorations d'un point de vue, performance, stabilité, sécurité et bien entendu des nouvelles fonctionnalités de la dernière GA

Jointure vs sous-requête

MySQL est connu pour ne pas être très performant avec les sous-requêtes. Ce n'est pas faux, et d'ailleurs c'est encore le cas avec MySQL 5.5. Le contournement consiste en général à réécrire la requête, certaines sous-requêtes pouvant être aisément réécrite en jointure.

C'est le cas de

SELECT a FROM T1 WHERE col IN (SELECT col FROM T2...) qui se transforme en

SELECT distinct a FROM T1 INNER JOIN T2 ON TI.col=T2.col WHERE …

Duplicate key causé par un SELECT

Parmi les erreurs courantes en MySQL, ont trouve la fameuse ERROR 1062 (23000): Duplicate entry ’2984′ for key ‘PRIMARY’ causée par la tentative d’insertion d’une données, déjà présente, dans un colonne ayant une contrainte d’unicité.

Dans la même famille il y a aussi l’erreur 1022…

Une banale requête de lecture avec un GROUP BY:

mysql> SELECT DISTINCT(name), COUNT(name) FROM membre WHERE name <>  » GROUP BY name ERROR 1022 (23000): Can’t write; duplicate key in table ‘/tmp/#sql_29lm_0′  

C’est assez surprenant de trouver une telle erreur sur une requête aussi triviale !

En regardant le plan d’exécution, on remarque que outre le fait qu’ un index est plus que recommandé, MySQL créé une table temporaire (/tmp/#sql_29lm_0) et c’est en insérant les données dans cette dernière que le « duplicate key » se …

[Lire plus]
MariaDB 5.3, Progress reporting

Parmi les nouveautés de MariaDB 5.3, l’une d’entre elle, bien pratique est le « progress reporting », qui permet de savoir où le serveur en est dans l’exécution d’une commande.

Le principe est simple, j’exécute une commande et MariaDB m’indique le pourcentage effectué pour une étape donnée. Un exemple:

MariaDB-5.3> ALTER TABLE client ENGINE=InnoDB;
Stage: 1 of 2 'copy to tmp table'   44.5% of stage done

MariaDB-5.3> ALTER TABLE client ENGINE=InnoDB;
Stage: 2 of 2 'Enabling keys'      0% of stage done    

MariaDB-5.3> ALTER TABLE client ENGINE=InnoDB;
Query OK, 3000000 rows affected (5 min 15.24 sec)      
Records: 3000000  Duplicates: 0  Warnings: 0

Les commandes implémentant le « progress reporting » sont pour le moment: ALTER TABLE, ADD INDEX, DROP INDEX, LOAD DATA INFILE.

Le moteur Aria supporte également les commandes suivantes: CHECK TABLE, REPAIR TABLE, …

[Lire plus]
Audit MySQL – tmp_table_size & max_heap_table_size

Je suis amené à réaliser régulièrement des audits de serveurs MySQL.Voici le premier volet d’une série d’articles où je vais essayer de vous donner quelques points clés pour mieux comprendre le fonctionnement de MySQL.

La configuration du serveur est un des points que je regarde, et l’une des erreurs les plus courantes concerne le paramétrage des options tmp_table_size et max_heap_table_size.

tmp_table_size permet de fixer la taille maximale au-delà de laquelle les tables temporaires en mémoire créées par MySQL (avec le moteur Memory) se transforment en table MyISAM en migrant les données sur le disque. max_heap_table_size permet de fixer …

[Lire plus]
!include

my.cnf, comme vous le savez certainement est le nom du fichier de configuration de MySQL. Vous pouvez également le retrouver sous le nom de my.ini en environnement MS Windows. Il permet comme son nom l’indique de configurer votre serveur MySQL en y centralisant les options de … configuration. Le but ici n’est pas de détailler la longue liste des paramètres de MySQL, la documentation officielle est (presque) bien faite, mais de mettre le « focus » sur la directive !include (avec un « ! » devant).

Cette dernière permet d’inclure un fichier de configuration dans un autre (sic). Autant je suis un adèpte de la non duplication du code en dévellopement (des require_once en PHP utilisés avec modération ça vous simplifie bien …

[Lire plus]
Numéro de semaine calendaire MySQL

MySQL possède un grand nombre de fonctions pour gérer les dates et le temps. Il est possible de récupérer le numéro calendaire d’une semaine avec la fonction week. Dimanche 5 avril nous étions semaine 14. La fonction week nous le confirme:

mysql> SELECT week('2009-04-05');
+--------------------+
| week('2009-04-05') |
+--------------------+
|                 14 |
+--------------------+

Lundi 6 avril, nouvelle semaine, on passe donc à la semaine 15:

mysql> SELECT week('2009-04-06');
+--------------------+
| week('2009-04-06') |
+--------------------+
|                 14 |
+--------------------+

Souci !!! Le résultat n’est pas celui espéré (14 …

[Lire plus]
Restaurer une sauvegarde en désactivant le log binaire

Il est pafois utile de désactiver le log binaire lors d’une restauration. MySQL permet de le désactiver pour une session avec la commande SQL_LOG_BIN:

mysql> SET SESSION sql_log_bin = 0;

Lors de la restauration avec le client mysql on peut donc utiliser la ligne de commande suivante:

shell> mysql –execute=“SET SESSION sql_log_bin=0;  SOURCE mon_fichier_dump.sql;”

Showing entries 1 to 10 of 11
Suivant 1 Entrées plus anciennes »