Cette question demande comment trouver le volume total de données sur toutes les tables d'une base de données MySQL. Il n'y a pas une seule commande pour vous donner directement la taille totale en octets, car cela nécessiterait de résumer les tailles des fichiers de données de chaque table, des index et potentiellement d'autres frais généraux. Cependant, nous pouvons obtenir une bonne approximation en additionnant les tailles rapportées par INFORMATION_SCHEMA
. Cette approche se concentre sur la taille du fichier de données, qui est un indicateur raisonnable du volume global de données. Gardez à l'esprit que cela n'inclut pas les tailles d'index ou autres sur-têtes.
SELECT SUM(data_length + index_length) / (1024 * 1024) AS total_size_MB FROM information_schema.TABLES WHERE table_schema = 'your_database_name'; -- Replace 'your_database_name' with your database name
Cette requête sélectionne la somme de data_length
et index_length
(les deux en octets) dans le tableau information_schema.TABLES
, le filtre pour votre base de données spécifique et convertit le résultat en mégaocytes (MB) pour une liaison plus facile. N'oubliez pas de remplacer 'your_database_name'
par le nom réel de votre base de données.
pour obtenir efficacement une liste de toutes les tableaux et leurs comptes de ligne respectifs, nous pouvons tirer parti de la base de données INFORMATION_SCHEMA
. Cette méthode évite les frais généraux d'interroger chaque tableau individuellement, ce qui le rend beaucoup plus efficace pour les bases de données avec de nombreuses tables.
SELECT table_name, TABLE_ROWS FROM information_schema.TABLES WHERE table_schema = 'your_database_name'; -- Replace 'your_database_name' with your database name
Cette requête récupère le table_name
et TABLE_ROWS
(qui est un nombre de lignes approximatif) de la table information_schema.TABLES
pour votre base de données spécifiée. La valeur TABLE_ROWS
est une estimation fournie par MySQL et pourrait ne pas être parfaitement précise, en particulier pour les très grandes tables ou tables avec des structures complexes. Pour un décompte plus précis, vous devez utiliser COUNT(*)
sur chaque tableau individuellement, qui, comme mentionné, est moins efficace pour un grand nombre de tableaux.
pour voir la taille de chaque table dans votre base de données, vous pouvez à nouveau utiliser la base de données INFORMATION_SCHEMA
. Cela vous donnera la taille du fichier de données et les index pour chaque tableau.
SELECT table_name, data_length / (1024 * 1024) AS data_size_MB, index_length / (1024 * 1024) AS index_size_MB, (data_length + index_length) / (1024 * 1024) AS total_size_MB FROM information_schema.TABLES WHERE table_schema = 'your_database_name'; -- Replace 'your_database_name' with your database name ORDER BY total_size_MB DESC;
Cette requête fournit le table_name
, data_size_MB
, index_size_MB
, et total_size_MB
pour chaque tableau de votre base de données. Les résultats sont commandés par la taille totale de l'ordre descendant, ce qui facilite l'identification des tables les plus importantes. N'oubliez pas que ces tailles sont des approximations et peuvent ne pas refléter parfaitement l'utilisation réelle de l'espace du disque.
Bien que MySQL n'ait pas de commande intégrée pour générer directement un rapport complet ou PHP) pour automatiser ce processus. La procédure stockée exécuterait les requêtes illustrées ci-dessus et formaterait la sortie. Une approche de script offre plus de flexibilité en termes de formatage et de distribution de rapport.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!