Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
sysadmin:tips:mysql [2011/05/23 16:03]
james créée
sysadmin:tips:mysql [2015/07/17 17:15] (Version actuelle)
james ajout commande fragmentation
Ligne 1: Ligne 1:
 +{{tag>​mysql prompt export csv innodb}}
 +
 ====== Mysql ====== ====== Mysql ======
  
Ligne 7: Ligne 9:
 Le plus simple est de modifier le prompt pour afficher par exemple : utilisateur,​ serveur, base de donnée. Le plus simple est de modifier le prompt pour afficher par exemple : utilisateur,​ serveur, base de donnée.
  
-Pour ce faire, ajouter dans la section [mysql] du fichier /​etc/​mysql/​my.cnf la directive suivante :<​code>​prompt = "\\u@\\h \\d > "</​code>​+Pour ce faire, ajouter dans la section [mysql] du fichier /​etc/​mysql/​my.cnf la directive suivante :<​code>​prompt = "\u@\h \d > "</​code>​
  
 Si vous n'etes pas admin du serveur, vous pouvez placer cette option dans le fichier .my.cnf de votre répertoire personnel, comme par exemple avec la commande suivante :<​code>​ Si vous n'etes pas admin du serveur, vous pouvez placer cette option dans le fichier .my.cnf de votre répertoire personnel, comme par exemple avec la commande suivante :<​code>​
 cat << EOF >> ~/.my.cnf cat << EOF >> ~/.my.cnf
 [mysql] [mysql]
-prompt = "\\u@\\h \\d > "+prompt = "\u@\h \d > "
 EOF</​code>​ EOF</​code>​
 +
 +Dans le cas ou cela ne marcherait pas (hostname a localhost par exemple), il existe une autre possibilité : exporter la variable suivant en bash
 +<​code>​export MYSQL_PS1="​\u@`hostname` (\d) > "</​code>​
 +Vous pouvez par exemple rajouter cette commande dasn votre ~/.bashrc ou ~/​.bash_variables
 +
 +===== Avoir rapidement le nombre d'​entrées dans une GROSSE table (valable en innodb uniquement) =====
 +
 +Cela donne uniquement une valeur approximative,​ le nombre d'​enregistrements n'​etant pas mis a jour pour des raisons de perf :
 +<​code>​show table status like '​MaGrosseTable';</​code>​
 +
 +===== Exporter des données dans un fichier csv =====
 +
 +Pour exporter des données dnas un fichier CSV, utiliser un "​SELECT ... INTO OUTFILE"​ comme par exemple dans l'​exemple ci dessous :
 +<​code>​SELECT order_id,​product_name,​qty FROM orders INTO OUTFILE '/​tmp/​orders.csv'​ FIELDS TERMINATED BY ','​ ENCLOSED BY '"'​ LINES TERMINATED BY '​\n'</​code>​
 +
 +<​note>​Il vous faudra un acces au serveur mysql pour récupérer le fichier csv obtenu</​note>​
 +<​note>​Il faudra aussi que l'​utilisateur MySQL que vous utilisez ait le droit "​FILE"​ sous pein d'​obtenir une erreur "ERROR 1045 (28000): Access denied for user '​monUser'​@'​%'​ (using password: YES)"
 +
 +Pour lui affecter si vous le pouvez, utiliser une syntaxe similaire a: "GRANT FILE ON maBase.* TO '​monUser'​@'​%';"​
 +
 +</​note>​
 +
 +====== Savoir quelles tables sont fragmentées =====
 +Pour savoir quelles tables sont fragmentées,​ on peut utiliser la commande suivante :<​code>​SELECT engine, table_schema,​ table_name, data_free*100/​data_length AS percent_frag FROM information_schema.tables where data_free IS NOT NULL and data_free <> 0 order by percent_frag ;</​code>​
 +Il suffit ensuite de lancer un "​OPTIMIZE table MaTable"​ sur ces tables pour réduire la fragmentation
 +<​note>​Il doit y avoir mieux cette commande donne des faux positifs et/ou quelques valeurs bizarres, mais ca marche (tm)</​note>​
 +
sysadmin/tips/mysql.1306159383.txt.gz · Dernière modification: 2011/05/23 16:03 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0