Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sysadmin:tips:mysql [2012/08/30 10:41] james ajout export prompt mysql bash |
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 17: | Ligne 19: | ||
Dans le cas ou cela ne marcherait pas (hostname a localhost par exemple), il existe une autre possibilité : exporter la variable suivant en bash | 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> | <code>export MYSQL_PS1="\u@`hostname` (\d) > "</code> | ||
- | Vous pouvez par exemple rajouter cette commande dasn votre ~/.bashrc | + | 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> | ||