Ho un database MySQL per il mio sito Web ospitato su Amazon AWS utilizzando RDS. Ha 5 GB di spazio disponibile. Come posso sapere quanto sono grandi i dati in esso contenuti (e quindi quanto della quota 5 GB mi è rimasta)?
Ho un database MySQL per il mio sito Web ospitato su Amazon AWS utilizzando RDS. Ha 5 GB di spazio disponibile. Come posso sapere quanto sono grandi i dati in esso contenuti (e quindi quanto della quota 5 GB mi è rimasta)?
Risposte:
Ecco altre query organizzate su INFORMATION_SCHEMA
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;
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 );
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;
In ognuna delle tre (3) query, vedrai (SELECT 3 pw)
. I pw
sta per la potenza di 1024 per visualizzare i risultati in unità specifiche:
(SELECT 0 pw)
visualizzerà il rapporto in byte(SELECT 1 pw)
visualizzerà il rapporto in KiloBytes(SELECT 2 pw)
visualizzerà il rapporto in MegaBytes(SELECT 3 pw)
visualizzerà il rapporto in GigaBytes(SELECT 4 pw)
visualizzerà il rapporto in TeraBytes(SELECT 5 pw)
visualizzerà il rapporto in PetaBytes (per favore contattami se esegui questo)Ecco una query di report con un po 'meno di formattazione in 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;
Ho finalmente trovato il modo semplice per ottenere queste informazioni direttamente da Amazon con un paio di clic.
show table status from mydatabsename;
dove mydatabasename è il nome del database.
Questo ti mostra le metriche Data_length e Index_length per tabella e altre metriche. Dovresti totalizzare queste colonne e ricordare che sono in byte, quindi dovresti dividerlo per 1024 per ottenere kb e poi per 1024 di nuovo per ottenere mega e poi per 1024 di nuovo per ottenere concerti. Ciò mostra anche lo spazio libero all'interno dell'allocazione dell'indice / database.
Puoi ottenere più granulare e sum () se vuoi esplorare: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html
SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS;
Mostra lo spazio rimanente nell'assegnazione indice / database ...
SELECT SUM(Data_length) FROM INFORMATION_SCHEMA.PARTITIONS;
SELECT SUM(Index_length) FROM INFORMATION_SCHEMA.PARTITIONS;
... mostra i dati e la dimensione dell'indice utilizzati (dovrai aggiungerli per l'allocazione totale)
Se vuoi sezionare le cose un po 'di più ...
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";
Ovviamente puoi anche usare MySQL Workbench come ho trovato qui: http://dev.mysql.com/downloads/tools/workbench/ ma ciò presuppone che tu abbia accesso alla porta al tuo server di database. Tuttavia, puoi fare molto anche offline, quindi vale la pena scaricare. Si noti che il workbench non somma le allocazioni () che per me non hanno senso. Ma poi di nuovo, non ho nemmeno l'ultima versione.
2019 : per MySQL e MariaDB Fare riferimento a questo link fornito da AWS: https://aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/