Lancer pour obtenir le Total de Données MySQL et l'Utilisation des Index En Base de données et Moteur de Stockage
SELECT Statistic,DataSize "Data Size",IndexSize "Index Size",TableSize "Table Size"FROM(SELECTIF(ISNULL(table_schema)=1,10,0) schema_score,IF(ISNULL(engine)=1,10,0) engine_score,IF(ISNULL(table_schema)=1,'ZZZZZZZZZZZZZZZZ',table_schema) schemaname,IF(ISNULL(B.table_schema)+ISNULL(B.engine)=2,"Storage for All Databases",IF(ISNULL(B.table_schema)+ISNULL(B.engine)=1,
CONCAT("Storage for ",B.table_schema),
CONCAT(B.engine," Tables for ",B.table_schema))) Statistic,
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') DataSize,CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') IndexSize,
CONCAT(LPAD(REPLACE(FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') TableSize FROM(SELECT table_schema,engine,
SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables
WHERE table_schema NOTIN('mysql','information_schema','performance_schema')AND engine ISNOTNULLGROUPBY table_schema,engine WITH ROLLUP) B,(SELECT3 pw) A) AA ORDERBY schemaname,schema_score,engine_score;
Mise en garde
Dans chaque requête, vous verrez (SELECT 3 pw). Le pw est synonyme de la Puissance De 1024 pour afficher les résultats.
(SELECT 0 pw) permettra d'Afficher le Rapport en Octets
(SELECT 1 pw) permettra d'Afficher le Rapport en kilo-octets
(SELECT 2 pw) permettra d'Afficher le Rapport en Mégaoctets
(SELECT 3 pw) permettra d'Afficher le Rapport en Gigaoctets
(SELECT 4 pw) permettra d'Afficher le Rapport dans Téraoctets
(SELECT 5 pw) permettra d'Afficher le Rapport dans Pétaoctets (merci de me contacter si vous exécutez cette une)
Ici est un rapport de la requête avec un peu moins de mise en forme:
SELECT IFNULL(db,'Total')"Database",
datsum / power(1024,pw)"Data Size",
ndxsum / power(1024,pw)"Index Size",
totsum / power(1024,pw)"Total"FROM(SELECT db,SUM(dat) datsum,SUM(ndx) ndxsum,SUM(dat+ndx) totsum
FROM(SELECT table_schema db,data_length dat,index_length ndx
FROM information_schema.tables WHERE engine ISNOTNULLAND table_schema NOTIN('information_schema','mysql')) AA
GROUPBY db WITH ROLLUP) A,(SELECT1 pw) B;
Confiance en moi, j'ai fait ces requêtes, il y a 4 ans et les utilisent encore aujourd'hui.
MISE À JOUR 2013-06-24 15:53 HAE
J'ai quelque chose de nouveau. J'ai changé les requêtes de sorte que vous n'avez pas à régler la pw paramètre pour les différentes unités d'affiche. Chaque unité d'affichage est calculé pour vous.
Vous devriez modifier votre question et mettre 4 espaces au début de chaque ligne qui devrait apparaître en tant que code. est-il une raison particulière à LPAD à 17? J'utilise 17 en raison de la sortie de la FORMAT fonction. Le numéro un billion de dollars a 13 chiffres. L'exécution de FORMAT(1000000000000,0) affiche 1,000,000,000,000. Notez que 4 virgules sont ajoutés. Donc, j'utilise de 17 à accueillir de petites colonnes d'affichage à côté de grandes colonnes d'affichage, la présentation du rapport de l'uniformité. Vous pouvez expérimenter avec les valeurs de largeur, puis d'autres 17 car il n'affecte pas le calcul de l'espace disque. J'ai essayé des requêtes comme celle-ci, et je vais essayer ces requêtes spécifiques, et j'ai toujours courir sur la question qu'ils prennent beaucoup de temps à s'exécuter. Est-il possible d'optimiser ces requêtes afin de courir plus vite? là est le problème. Si toutes les tables étaient à l'intérieur de ibdata1 et innodb_file_per_table a été désactivé, la requête est de la dynamite vite à cause de l'interrogation du dictionnaire de données et les données/les pages d'index à l'intérieur d'un fichier. Dans votre situation, chaque accès à un tableau avec ibdata1 du dictionnaire de données des résultats dans un descripteur de fichier étant ouvert sur chacun correspondant .ibd fichier. J'ai un client DB à 112.000+ tables (900 GO) et il faut 2 heures. J'ai un autre client avec 41000+ tables (2.5 TB) et il faut 15 secondes (Pas une Faute de frappe, je l'ai dit 15 sec). La différence était innodb_file_per_table.
Si seulement MySQL est disponible, l'utilisation AFFICHER la TABLE de commande d'ÉTAT, et de regarder la Data_length colonne de chaque tableau, qui est exprimée en octets.
Si vous avez d'autres langues disponibles sur la machine, un script dans l'un d'eux qui s'exécute régulièrement (cron), vérifie l'espace libre du disque ou de la taille du répertoire de base de données et mises à jour par e-mail ou autrement. Il y a beaucoup trop d'options à proposer une solution particulière, tout dépend de votre situation.
Pour les tables MyISAM, j'ai l'habitude de vérifier la taille du fichier /var/lib/mysql/mydatabasename/répertoire. Les tables InnoDB utilisation monolithique fichiers, de sorte que vous avez à l'utilisation AFFICHER la TABLE d'ÉTAT.
Puisque vous avez VM et vous n'avez pas vraiment la manière dont l'espace est utilisé,
Je pense que le plus simple est de vérifier la taille de données MySQL dir.
Par défaut, il est /var/lib/mysql.
Aussi, il est agréable de nettoyage de la base de données mysql binaire journaux (si possible) avant de vérifier les données dir taille.
Vous pouvez vous référer MONyog qui a Disk Info fonctionnalité qui vous permet de trouver de l'espace Disque de l'analyse au niveau du serveur de Base de données niveau et au niveau de la Table
Salut, comme c'est votre première réponse, veuillez d'abord vérifier si votre réponse existe déjà, comme . Dans ce cas, il est préférable de upvote cette réponse, au lieu de dire exactement la même chose.
J'ai quelques gros requêtes à partager:
Lancer pour obtenir le Total de Données MySQL et l'Utilisation des Index Par le Moteur de Stockage de
Lancer pour obtenir le Total de Données MySQL et l'Utilisation des Index En Base de données
Lancer pour obtenir le Total de Données MySQL et l'Utilisation des Index En Base de données et Moteur de Stockage
Mise en garde
Dans chaque requête, vous verrez
(SELECT 3 pw)
. Le pw est synonyme de la Puissance De 1024 pour afficher les résultats.(SELECT 0 pw)
permettra d'Afficher le Rapport en Octets(SELECT 1 pw)
permettra d'Afficher le Rapport en kilo-octets(SELECT 2 pw)
permettra d'Afficher le Rapport en Mégaoctets(SELECT 3 pw)
permettra d'Afficher le Rapport en Gigaoctets(SELECT 4 pw)
permettra d'Afficher le Rapport dans Téraoctets(SELECT 5 pw)
permettra d'Afficher le Rapport dans Pétaoctets (merci de me contacter si vous exécutez cette une)Ici est un rapport de la requête avec un peu moins de mise en forme:
Confiance en moi, j'ai fait ces requêtes, il y a 4 ans et les utilisent encore aujourd'hui.
MISE À JOUR 2013-06-24 15:53 HAE
J'ai quelque chose de nouveau. J'ai changé les requêtes de sorte que vous n'avez pas à régler la
pw
paramètre pour les différentes unités d'affiche. Chaque unité d'affichage est calculé pour vous.Rapport Par Le Moteur De Stockage De
Rapport De Base De Données
Rapport De Base De Données /Moteur De Stockage
est-il une raison particulière à LPAD à 17?
J'utilise 17 en raison de la sortie de la
FORMAT
fonction. Le numéro un billion de dollars a 13 chiffres. L'exécution deFORMAT(1000000000000,0)
affiche1,000,000,000,000
. Notez que 4 virgules sont ajoutés. Donc, j'utilise de 17 à accueillir de petites colonnes d'affichage à côté de grandes colonnes d'affichage, la présentation du rapport de l'uniformité. Vous pouvez expérimenter avec les valeurs de largeur, puis d'autres 17 car il n'affecte pas le calcul de l'espace disque.J'ai essayé des requêtes comme celle-ci, et je vais essayer ces requêtes spécifiques, et j'ai toujours courir sur la question qu'ils prennent beaucoup de temps à s'exécuter. Est-il possible d'optimiser ces requêtes afin de courir plus vite?
là est le problème. Si toutes les tables étaient à l'intérieur de ibdata1 et innodb_file_per_table a été désactivé, la requête est de la dynamite vite à cause de l'interrogation du dictionnaire de données et les données/les pages d'index à l'intérieur d'un fichier. Dans votre situation, chaque accès à un tableau avec ibdata1 du dictionnaire de données des résultats dans un descripteur de fichier étant ouvert sur chacun correspondant
.ibd
fichier. J'ai un client DB à 112.000+ tables (900 GO) et il faut 2 heures. J'ai un autre client avec 41000+ tables (2.5 TB) et il faut 15 secondes (Pas une Faute de frappe, je l'ai dit 15 sec). La différence était innodb_file_per_table.OriginalL'auteur RolandoMySQLDBA
Si seulement MySQL est disponible, l'utilisation AFFICHER la TABLE de commande d'ÉTAT, et de regarder la Data_length colonne de chaque tableau, qui est exprimée en octets.
Si vous avez d'autres langues disponibles sur la machine, un script dans l'un d'eux qui s'exécute régulièrement (cron), vérifie l'espace libre du disque ou de la taille du répertoire de base de données et mises à jour par e-mail ou autrement. Il y a beaucoup trop d'options à proposer une solution particulière, tout dépend de votre situation.
OriginalL'auteur MaxVT
Pour les tables MyISAM, j'ai l'habitude de vérifier la taille du fichier /var/lib/mysql/mydatabasename/répertoire. Les tables InnoDB utilisation monolithique fichiers, de sorte que vous avez à l'utilisation AFFICHER la TABLE d'ÉTAT.
OriginalL'auteur Javier
Puisque vous avez VM et vous n'avez pas vraiment la manière dont l'espace est utilisé,
Je pense que le plus simple est de vérifier la taille de données MySQL dir.
Par défaut, il est
/var/lib/mysql
.Aussi, il est agréable de nettoyage de la base de données mysql binaire journaux (si possible) avant de vérifier les données dir taille.
OriginalL'auteur Vadim
Vous pouvez vous référer MONyog qui a Disk Info fonctionnalité qui vous permet de trouver de l'espace Disque de l'analyse au niveau du serveur de Base de données niveau et au niveau de la Table
OriginalL'auteur Glenn McKay
Résultat
Cela permettra de montrer que l'ordre décroissant en ko
OriginalL'auteur wpdevramki