web-dev-qa-db-fra.com

Comment savoir quelle est la taille de ma base de données Amazon RDS (MySQL)?

J'ai une base de données MySQL pour mon site Web hébergée sur Amazon AWS à l'aide de RDS. Il dispose de 5 Go de stockage. Comment savoir quelle est la taille réelle des données (et donc combien de quota de 5 Go il me reste)?

10

J'ai enfin trouvé le moyen facile d'obtenir ces informations directement auprès d'Amazon en quelques clics.

  1. Connectez-vous au tableau de bord de gestion RDS
  2. Cliquez sur "Instances de base de données"
  3. Cliquez sur l'instance qui vous intéresse. Cela devrait l’étendre et montrer beaucoup plus d’informations à ce sujet.
  4. Voir l'onglet "Surveillance" à gauche (il devrait être sélectionné par défaut)
  5. Il existe un moniteur "Stockage" qui indique la quantité d’espace utilisé et affiche un graphique de la quantité disponible:

enter image description here

4

Voici des requêtes plus organisées sur INFORMATION_SCHEMA

Tailles par moteur de stockage

SELECT IFNULL(B.engine,'Total') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Data Size", CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Table Size" FROM
(SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM
information_schema.tables WHERE table_schema NOT IN
('mysql','information_schema','performance_schema') AND
engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;

Tailles par base de données

SELECT DBName,CONCAT(LPAD(FORMAT(SDSize/POWER(1024,pw),3),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Data Size",CONCAT(LPAD(
FORMAT(SXSize/POWER(1024,pw),3),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "Index Size",
CONCAT(LPAD(FORMAT(STSize/POWER(1024,pw),3),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Total Size" FROM
(SELECT IFNULL(DB,'All Databases') DBName,SUM(DSize) SDSize,SUM(XSize) SXSize,
SUM(TSize) STSize FROM (SELECT table_schema DB,data_length DSize,
index_length XSize,data_length+index_length TSize FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')) AAA
GROUP BY DB WITH ROLLUP) AA,(SELECT 3 pw) BB ORDER BY (SDSize+SXSize);

Tailles par base de données/moteur de stockage

SELECT Statistic,DataSize "Data Size",IndexSize "Index Size",TableSize "Table Size"
FROM (SELECT IF(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 NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY table_schema,engine WITH ROLLUP) B,
(SELECT 3 pw) A) AA ORDER BY schemaname,schema_score,engine_score;

CAVEAT

Dans chacune des trois (3) requêtes, vous verrez (SELECT 3 pw). Le pw représente le Power Of 1024 pour afficher les résultats dans des unités spécifiques:

  • (SELECT 0 pw) affichera le rapport en octets
  • (SELECT 1 pw) affichera le rapport en kilo-octets
  • (SELECT 2 pw) affichera le rapport en mégaoctets
  • (SELECT 3 pw) affichera le rapport en giga-octets
  • (SELECT 4 pw) affichera le rapport en TeraBytes
  • (SELECT 5 pw) affichera le rapport en PetaBytes (veuillez me contacter si vous exécutez celui-ci)

Voici une requête de rapport avec un peu moins de mise en forme dans KB:

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 IS NOT NULL
AND table_schema NOT IN ('information_schema','mysql')) AA
GROUP BY db WITH ROLLUP) A,(SELECT 1 pw) B;

Essaie !!!

10
RolandoMySQLDBA

show table status from mydatabsename; où mydatabasename est le nom de votre base de données.

Cela vous montre les métriques Data_length et Index_length par table et d'autres métriques. Vous devez totaliser ces colonnes et vous rappeler qu'elles sont en octets, vous devez donc diviser par 1024 pour obtenir le Ko, puis par 1024 pour obtenir les mégas, puis par 1024 pour obtenir les concerts. Cela montre également l'espace libre dans votre allocation d'index/base de données.

Vous pouvez obtenir plus de détails et sum () si vous voulez explorer: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html

SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS;

Affiche l'espace restant dans l'allocation d'index/de base de données ...

SELECT SUM(Data_length) FROM INFORMATION_SCHEMA.PARTITIONS;

SELECT SUM(Index_length) FROM INFORMATION_SCHEMA.PARTITIONS;

... montre les données et la taille d'index utilisée (vous devrez les ajouter pour l'allocation totale)

Si vous voulez disséquer un peu plus les choses ...

select sum(Data_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema";

select sum(Index_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema";

select sum(DATA_FREE) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema";

select sum(Data_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema" and TABLE_NAME = "aspecifictable";

select sum(Index_length) from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA = "myschema" and TABLE_NAME = "aspecifictable";

Bien sûr, vous pouvez aussi utiliser MySQL Workbench comme je l’ai trouvé ici: http://dev.mysql.com/downloads/tools/workbench/ mais cela suppose que vous avez un accès de port à votre serveur de base de données. Néanmoins, vous pouvez aussi en faire beaucoup en mode hors connexion. Veuillez noter que le plan de travail ne totalise pas () les allocations, ce qui n’a aucun sens pour moi. Mais là encore, je n'ai pas la dernière version non plus.

2
closetnoc