Outils pour utilisateurs

Outils du site


informatique:mysql:requetes_administration

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:mysql:requetes_administration [2019/09/06 06:57] – [Gérer les processus en cours] alexisinformatique:mysql:requetes_administration [2022/09/23 05:11] (Version actuelle) alexis
Ligne 1: Ligne 1:
 ====== Requêtes d'administration ====== ====== Requêtes d'administration ======
 ===== Affichage des erreurs ===== ===== Affichage des erreurs =====
 +<WRAP prewrap>
 <code sql> <code sql>
 SHOW ERRORS SHOW ERRORS
 </code> </code>
 +</WRAP>
 Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/show-errors.html|ici]] Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/show-errors.html|ici]]
 +
 ===== Affichage des alertes ===== ===== Affichage des alertes =====
 +<WRAP prewrap>
 <code sql> <code sql>
 SHOW WARNINGS SHOW WARNINGS
 </code> </code>
 +</WRAP>
 Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html|ici]] Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html|ici]]
 +
 ===== Affichage de la description d'une table ===== ===== Affichage de la description d'une table =====
 +<WRAP prewrap>
 <code sql> <code sql>
 DESC <table> DESC <table>
 </code> </code>
 +</WRAP>
 Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/explain.html|ici]] Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/explain.html|ici]]
 +
 ===== Purge des caches ===== ===== Purge des caches =====
 +<WRAP prewrap>
 <code sql> <code sql>
 /* Ferme les tables ouvertes, force la fermeture des tables utilisées, purge le tampon de requêtes */ /* Ferme les tables ouvertes, force la fermeture des tables utilisées, purge le tampon de requêtes */
Ligne 23: Ligne 33:
 FLUSH HOSTS FLUSH HOSTS
 </code> </code>
 +</WRAP>
 Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/flush.html|ici]] Plus d'informations [[http://dev.mysql.com/doc/refman/5.5/en/flush.html|ici]]
  
 ===== Changement de mot de passe ===== ===== Changement de mot de passe =====
 +<WRAP prewrap>
 <code sql> <code sql>
 SET PASSWORD = PASSWORD('<password>') SET PASSWORD = PASSWORD('<password>')
 </code> </code>
 +</WRAP>
  
 ===== Changer les droits d'un utilisateur ===== ===== Changer les droits d'un utilisateur =====
 +<WRAP prewrap>
 <code sql> <code sql>
 /* Pour donner les droits à tous les hôtes, il faut utiliser % */ /* Pour donner les droits à tous les hôtes, il faut utiliser % */
Ligne 38: Ligne 51:
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
 </code> </code>
 +</WRAP>
  
 ===== Récupérer la liste des index d'une base de données ===== ===== Récupérer la liste des index d'une base de données =====
 +<WRAP prewrap>
 <code sql> <code sql>
 SELECT DISTINCT s.INDEX_SCHEMA SELECT DISTINCT s.INDEX_SCHEMA
Ligne 50: Ligne 65:
 AND s.TABLE_SCHEMA = '<database>' AND s.TABLE_SCHEMA = '<database>'
 </code> </code>
 +</WRAP>
  
 ===== Gérer les processus en cours ===== ===== Gérer les processus en cours =====
 +<WRAP prewrap>
 <code sql> <code sql>
 -- Affiche la liste des processus en cours -- Affiche la liste des processus en cours
Ligne 59: Ligne 76:
 kill <id>; kill <id>;
 </code> </code>
 +</WRAP>
  
 ===== Comparer le schéma de deux tables ===== ===== Comparer le schéma de deux tables =====
 +<WRAP prewrap>
 <code sql> <code sql>
 SELECT COLUMN_NAME SELECT COLUMN_NAME
Ligne 75: Ligne 94:
 HAVING COUNT(1)=1 HAVING COUNT(1)=1
 </code> </code>
 +</WRAP>
 La requête précédente est un peu violente car elle valide que les champs sont à la même position. La requête précédente est un peu violente car elle valide que les champs sont à la même position.
 En voici une qui est moins restrictive car elle ne fait pas cette vérification : En voici une qui est moins restrictive car elle ne fait pas cette vérification :
 +<WRAP prewrap>
 <code sql> <code sql>
 SELECT COLUMN_NAME SELECT COLUMN_NAME
Ligne 89: Ligne 110:
 HAVING COUNT(1)=1 HAVING COUNT(1)=1
 </code> </code>
 +</WRAP>
  
 ===== Récupérer la liste des tables avec une colonne manquante ===== ===== Récupérer la liste des tables avec une colonne manquante =====
 Dans certaines tables, on travaille avec les couples de colonnes ''createdAt''/''createdBy'', ''updatedAt''/''updatedBy'' et/ou ''deletedAt''/''deletedBy''. Mais parfois, on oublie l'une des deux colonnes. Trouver ces tables n'est pas un vrai problème quand on n'a que quelques tables mais avec plusieurs centaines, il vaut mieux écrire une requête appropriée. Dans certaines tables, on travaille avec les couples de colonnes ''createdAt''/''createdBy'', ''updatedAt''/''updatedBy'' et/ou ''deletedAt''/''deletedBy''. Mais parfois, on oublie l'une des deux colonnes. Trouver ces tables n'est pas un vrai problème quand on n'a que quelques tables mais avec plusieurs centaines, il vaut mieux écrire une requête appropriée.
 +<WRAP prewrap>
 <code sql> <code sql>
 SELECT @tableSchema := 'database' SELECT @tableSchema := 'database'
 , @columnName := 'deleted'; , @columnName := 'deleted';
  
--- Première écriture de la requête (naive). Le temps d'exécution est très long (≈ 10 secondes).+-- Première écriture de la requête (naïve). Le temps d'exécution est très long (≈ 10 secondes).
 SELECT t.TABLE_NAME SELECT t.TABLE_NAME
 FROM information_schema.TABLES AS t FROM information_schema.TABLES AS t
Ligne 123: Ligne 146:
 HAVING COUNT(1) = 1; HAVING COUNT(1) = 1;
 </code> </code>
 +</WRAP>
  
 ===== Calculer la taille des données ===== ===== Calculer la taille des données =====
 +<WRAP prewrap>
 <code sql> <code sql>
 -- Afficher la taille globale de l'ensemble des bases de données -- Afficher la taille globale de l'ensemble des bases de données
-SELECT table_schema AS "Nom de la base de données" +SELECT TABLE_SCHEMA AS "Nom de la base de données" 
-, CONCAT(ROUND(SUM(data_length index_length) / 1024 / 1024, 0), " MB") AS "Taille de la base de données"+, CONCAT(ROUND(SUM(DATA_LENGTH INDEX_LENGTH) / 1024 / 1024, 0), " MB") AS "Taille de la base de données"
 FROM information_schema.TABLES FROM information_schema.TABLES
-GROUP BY table_schema+GROUP BY TABLE_SCHEMA
  
 -- Afficher le détail de la taille des tables d'une base de données -- Afficher le détail de la taille des tables d'une base de données
-SELECT table_name AS "Nom de la table" +SELECT TABLE_NAME AS "Nom de la table" 
-table_rows AS "Nombre de lignes" +TABLE_ROWS AS "Nombre de lignes" 
-, CONCAT(ROUND(data_length / 1024 / 1024, 2), " MB") AS "Taille des données" +, CONCAT(ROUND(DATA_LENGTH / 1024 / 1024, 2), " MB") AS "Taille des données" 
-, CONCAT(ROUND(index_length / 1024 / 1024, 2), " MB") AS "Taille de l'index" +, CONCAT(ROUND(INDEX_LENGTH / 1024 / 1024, 2), " MB") AS "Taille de l'index" 
-, CONCAT(ROUND(((data_length index_length) / 1024 / 1024), 2), " MB") AS "Taille de la table"+, CONCAT(ROUND(((DATA_LENGTH INDEX_LENGTH) / 1024 / 1024), 2), " MB") AS "Taille de la table"
 FROM information_schema.TABLES FROM information_schema.TABLES
-WHERE table_schema = "<schema>";+WHERE TABLE_SCHEMA = "resamania" 
 +ORDER BY (DATA_LENGTH + INDEX_LENGTH) 
 +, TABLE_NAME 
 +</code> 
 +</WRAP>
  
 +===== Logguer les requêtes =====
 +<WRAP prewrap>
 +<code sql>
 +-- Définition de la destination (mysql.general_log)
 +SET GLOBAL log_output = 'TABLE';
 +-- Activation du logging
 +SET GLOBAL general_log = 'ON';
 +-- Désactivation du logging
 +SET GLOBAL general_log = 'OFF';
 +-- Purge de la table (uniquement quand le logging est arrêté)
 +TRUNCATE table mysql.general_log
 </code> </code>
 +</WRAP>
 +
 +<WRAP info>
 +Pour logguer dans un fichier :
 +<WRAP prewrap>
 +<code sql>
 +-- Définition de la destination
 +SET GLOBAL log_output = 'FILE';
 +-- Définition du fichier
 +SET GLOBAL general_log_file = "</path/to/file>";
 +</code>
 +</WRAP>
 +</WRAP>
 +
informatique/mysql/requetes_administration.1567778266.txt.gz · Dernière modification : 2019/09/06 06:57 de alexis