Mysql
Quelques trucs utiles concernant Mysql
Contents
1. Astuces SQL
Remplacer un morceau de texte contenu dans une colonne: update TABLE set COLONNE=replace(COLONNE, 'pattern', 'remplacement') where ID_COLONNE=ID
2. Export/Import de données binaires en ligne de commande
- Exporter un blob dans fichier ligne de commande:
mysql -B --vertical=false -e "use blob_database ; select mon_blob into dumpfile '/tmp/blob_file' from blob_table where blob_id=id ;"
- Importer un fichier dans un blob:
mysql -B --vertical=false -e "use blob_database ; update blob_table set mon_blob=load_file('/tmp/blob_file') where blob_id=id ;"
Le fichier blob_file devra accessible en lecture/écriture pour le serveur mysql!
L'utilisation cette fonction requière le privilège File_priv
Voir la fonction load_file sur le site de mysql pour plus d'informations.
3. Exporter les résultat d'une requête dans fichier
- select CHAMP1,CHAMP2 into outfile '/tmp/DUMP' from TABLE_1 where CHAMP1=ID
4. InnoDB
4.1. Problèmes de Perf lors de la migration de la version 4 à 5
Après la migration de la version 4 du serveur Mysql vers la version 5, il peut y avoir de problèmess de perfs. lors de l'utilisation des bases au format innodb. La solution est utiliser le paramètre innodb_flush_log_at_trx_commit=2 (voir http://www.mysqlperformanceblog.com/2007/06/06/mysql-4-to-mysql-5-upgrade-performance-regressions/ pour plus d'infos!)
4.2. Divers
show engine innodb status\G : affiche l'état du moteur innodb (stats mémoire, dernier dead lock...)
5. Activater / Désactiver les logs
SET GLOBAL slow_query_log = "OFF" : désactive la journalisation des requêtes longues. Pour les activer remplacer OFF par ON.
SET GLOBAL general_log= "OFF" : désactive la journalisation globale. Pour les activer remplacer OFF par ON.
6. Divers
- Afficher pour chaque base, le nom de la table et taille correspondante:
SELECT TABLE_SCHEMA as "DB", table_name AS "Table", round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB" FROM information_schema.TABLES WHERE table_schema like "%" AND table_name like "%" group by TABLE_SCHEMA,table_name order by TABLE_SCHEMA,table_name,DATA_LENGTH ;
Suppression des logs binaires: PURGE BINARY LOGS BEFORE 'DATE' ;. La date est au format YYYY-MM-DD HH:MM:SS.