Tengo una base de datos MySQL para mi sitio web alojada en Amazon AWS usando RDS. Tiene 5 GB de almacenamiento disponible. ¿Cómo puedo saber qué tan grandes son realmente los datos que contiene (y, por lo tanto, cuánto de la cuota de 5GB me queda)?
Tengo una base de datos MySQL para mi sitio web alojada en Amazon AWS usando RDS. Tiene 5 GB de almacenamiento disponible. ¿Cómo puedo saber qué tan grandes son realmente los datos que contiene (y, por lo tanto, cuánto de la cuota de 5GB me queda)?
Respuestas:
Aquí hay más consultas organizadas contra el 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;
En cada una de las tres (3) consultas, verá (SELECT 3 pw)
. Los pw
soportes para el poder de 1024 para mostrar los resultados en unidades específicas:
(SELECT 0 pw)
mostrará el informe en bytes(SELECT 1 pw)
mostrará el informe en KiloBytes(SELECT 2 pw)
mostrará el informe en MegaBytes(SELECT 3 pw)
mostrará el informe en GigaBytes(SELECT 4 pw)
mostrará el informe en TeraBytes(SELECT 5 pw)
mostrará el informe en PetaBytes (contácteme si ejecuta este)Aquí hay una consulta de informe con un poco menos de formato 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;
Finalmente encontré la manera fácil de obtener esta información directamente de Amazon con un par de clics.
show table status from mydatabsename;
donde mydatabasename es el nombre de su base de datos.
Esto le muestra las métricas Data_length e Index_length por tabla y otras métricas. Tendría que sumar estas columnas y recordar que están en bytes, por lo que tendría que dividir por 1024 para obtener kb y luego por 1024 nuevamente para obtener megs y luego por 1024 nuevamente para obtener conciertos. Esto también muestra el espacio libre dentro de su asignación de índice / base de datos.
Puede obtener más granular y sum () si desea explorar: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html
SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS;
Muestra el espacio restante en la asignación de índice / base de datos ...
SELECT SUM(Data_length) FROM INFORMATION_SCHEMA.PARTITIONS;
SELECT SUM(Index_length) FROM INFORMATION_SCHEMA.PARTITIONS;
... muestra los datos y el tamaño del índice utilizado (deberá agregarlos para la asignación total)
Si quieres diseccionar las cosas un poco más ...
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";
Por supuesto, también puede usar MySQL Workbench como lo he encontrado aquí: http://dev.mysql.com/downloads/tools/workbench/ pero eso supone que tiene acceso de puerto a su servidor de base de datos. Aún así, también puedes hacer mucho sin conexión, así que vale la pena descargarlo. Tenga en cuenta que el banco de trabajo no suma () asignaciones, lo que no tiene sentido para mí. Pero, de nuevo, tampoco tengo la última versión.
2019 : para MySQL y MariaDB Consulte este enlace provisto por AWS: https://aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/