Un souvent inutilisé mais plus verbeux
AFFICHER LA LISTE DE PROCESSUS COMPLÈTE
est pratique, mais pas aussi bon que le génial analyseur de requêtes non-entreprise - activer comme ça
mysql> set profiling = 1;
Requête OK, 0 lignes affectées (0,00 sec)
Ces deux sont des requêtes inutiles pour remplir le tableau des profils,
mysql> sélectionnez * dans _test.customers;
ERREUR 1146 (42S02): la table '_test.customers' n'existe pas
mysql> sélectionnez * dans test.customers limit 0;
Ensemble vide (0,00 sec)
Obtenez une liste de toutes les requêtes profilées et leur durée
mysql> afficher les profils;
+ ---------- + ------------ + ------------------------- ------ +
| Query_ID | Durée | Requête |
+ ---------- + ------------ + ------------------------- ------ +
| 1 | 0,00013400 | sélectionnez * parmi _test.customers |
| 2 | 0,01546500 | sélectionnez * dans test.customers |
+ ---------- + ------------ + ------------------------- ------ +
Les informations d'affichage pour la dernière requête seraient simplement "afficher le profil" - ou vous pouvez spécifier une requête
mysql> afficher le profil de la requête 2;
+ ---------------------- + ---------- +
| Statut | Durée |
+ ---------------------- + ---------- +
| début | 0,000053 |
| vérification des autorisations | 0,000007 |
| Tables d'ouverture | 0,000014 |
| Verrouillage du système | 0,000006 |
| Serrure de table | 0,000008 |
| init | 0,000065 |
| optimisation | 0,000003 |
| exécution | 0,000201 |
| fin | 0,000003 |
| fin de la requête | 0,000002 |
| articles gratuits | 0,000020 |
| enregistrement d'une requête lente | 0,000002 |
| nettoyage | 0,000004 |
+ ---------------------- + ---------- +
13 lignes en jeu (0,00 sec)
Vous pouvez également demander des informations spécifiques telles que CPU, BLOCK IO et SWAPS entre autres (le tout sur la page de manuel )
mysql> afficher le cpu du profil pour la requête 2;
+ ---------------------- + ---------- + ---------- + ---- -------- +
| Statut | Durée | CPU_user | CPU_system |
+ ---------------------- + ---------- + ---------- + ---- -------- +
| début | 0,000056 | 0,001000 | 0,000000 |
| vérification des autorisations | 0,000007 | 0,000000 | 0,000000 |
| Tables d'ouverture | 0,000010 | 0,000000 | 0,000000 |
| Verrouillage du système | 0,000005 | 0,000000 | 0,000000 |
| Serrure de table | 0,000007 | 0,000000 | 0,000000 |
| init | 0,000059 | 0,000000 | 0,000000 |
| optimisation | 0,000003 | 0,000000 | 0,000000 |
| statistiques | 0,015022 | 0,000000 | 0,000000 |
| préparation | 0,000014 | 0,001000 | 0,000000 |
| exécution | 0,000004 | 0,000000 | 0,000000 |
| Envoi de données | 0,000245 | 0,000000 | 0,000000 |
| fin | 0,000004 | 0,000000 | 0,000000 |
| fin de la requête | 0,000002 | 0,000000 | 0,000000 |
| articles gratuits | 0,000021 | 0,000000 | 0,000000 |
| enregistrement d'une requête lente | 0,000002 | 0,000000 | 0,000000 |
| nettoyage | 0,000004 | 0,000000 | 0,000000 |
+ ---------------------- + ---------- + ---------- + ---- -------- +
16 lignes en jeu (0,00 sec)
N'oubliez pas de le désactiver par la suite, car la journalisation ajoute des frais généraux.
mysql> set profiling = 0;
Requête OK, 0 lignes affectées (0,00 sec)
Certaines commandes MySQL qui ne sont pas toujours connues ou mémorisées.
Changez l'orientation du jeu de résultats en vertical pour faciliter la lecture et le collage.
Annulez la requête que vous tapez actuellement tout en la laissant dans votre historique.
Modifiez une requête ou la dernière requête (respectivement) avec votre $ EDITOR préféré.
Effacez la sortie de la console.
Comparez les jeux de résultats par hachage MD5.
Modifiez votre invite.
Recherchez dans l'historique de vos commandes une chaîne donnée (comme Bash).
Commencez à taper un terme de recherche et répétez ^ R pour parcourir les résultats.
la source
md5sum -
idée d'utiliser comme téléavertisseur. TuTrucs que j'ai appris qui peuvent être utiles à certains:
Pour exécuter le fichier que vous avez précédemment enregistré:
Utilisation "\!" pour accéder aux commandes shell. Par exemple:
Donc, si vous souhaitez écrire votre déclaration dans un fichier (sans utiliser l'option éditeur), vous pouvez entrer:
Si vous entrez
vous aurez alors vos relevés et résultats de requête dirigés / imprimés vers le nom de fichier que vous avez spécifié. Utilisez
\\t
pour désactiver cette fonction.Terminer une requête avec
\\G
au lieu d'un ";" afin d'afficher la sortie dans un format de ligne plutôt que dans des colonnes.N'excluez pas l'utilisation d'une clause Where ... LIKE avec l'instruction SHOW. Par exemple:
Enfin, pour trouver l'emplacement de votre répertoire de données MySQL sans regarder le
my.cnf
fichier, utilisez:la source
J'aime personnellement la
SHOW
commandeVous pourriez faire
SHOW PROCESSLIST
- Pour voir toutes les connexions en cours d'exécution à mysqlSHOW CREATE TABLE TableName
- Pour voir le sql utilisé pour créer la tableSHOW CREATE PROCEDURE ProcedureName
- Pour voir le sql utilisé pour créer le SPSHOW VARIABLES
- Pour voir toutes les variables systèmeObtenez la liste complète ici
la source
En fait documenté , mais très ennuyeux: conversions de date automatiques pour les données incorrectes.
Parfois, vous serez "chanceux" lorsque MySQL n'ajuste pas l'entrée aux dates valides à proximité, mais la stocke à la place comme
0000-00-00
par définition non valide. Cependant, même dans ce cas, vous auriez pu souhaiter que MySQL échoue plutôt que de stocker cette valeur en silence pour vous.la source
Une autre caractéristique qui distingue MySQL des autres bases de données est la
REPLACE INTO
commande. Tu peux faire:Vous pouvez également écrire l'instruction replace comme vous écrivez l'instruction update:
la source
Pas vraiment une fonctionnalité cachée, mais elle est moins connue et je l'utilise beaucoup pour économiser en faisant une requête pour vérifier si quelque chose existe avant de faire une MISE À JOUR ou INSÉRER
La documentation est ici
la source
Pour voir le plan d'exécution des requêtes, utilisez
EXPLAIN
par exemple
la source
Pas vraiment caché, mais le journal des requêtes lentes peut être très utile pour rechercher la cause des problèmes de performances aux heures de pointe.
Dans le fichier
my.cnf
, section [mysqld] - ajoutez:la source
Eh bien, je ne peux pas marquer cela comme un doublon car c'est un site différent (et je n'ai pas le représentant ici) mais je vais simplement créer un lien vers cet excellent article de stackoverflow pour la même question :
la source
Tout comme un ajout à la réponse de pQD (en tant que noobie, je ne suis pas encore en mesure d'ajouter un commentaire), si vous n'avez pas encore ajouté le chemin vers le journal des requêtes lentes dans le fichier my.cnf correct, le journal des erreurs sera écrit dans le répertoire de données (utilisez SHOW VARIABLES LIKE 'datadir'; pour savoir où il se trouve) et le nom de fichier sera au format [nom système] -slow.log
la source