RDS를 사용하여 Amazon AWS에서 호스팅되는 웹 사이트에 대한 MySQL 데이터베이스가 있습니다. 사용 가능한 스토리지가 5GB입니다. 실제로 데이터의 크기가 얼마나 큰지 어떻게 알 수 있습니까 (따라서 남은 5GB 할당량의 양)?
RDS를 사용하여 Amazon AWS에서 호스팅되는 웹 사이트에 대한 MySQL 데이터베이스가 있습니다. 사용 가능한 스토리지가 5GB입니다. 실제로 데이터의 크기가 얼마나 큰지 어떻게 알 수 있습니까 (따라서 남은 5GB 할당량의 양)?
답변:
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;
세 개의 쿼리 각각에을 볼 수 (SELECT 3 pw)
있습니다. pw
1024의 전원을위한 스탠드는 특정 단위로 결과를 표시합니다 :
(SELECT 0 pw)
보고서를 바이트 단위로 표시합니다(SELECT 1 pw)
킬로바이트 단위로 보고서를 표시합니다(SELECT 2 pw)
메가 바이트 단위로 보고서를 표시합니다(SELECT 3 pw)
기가 바이트 단위로 보고서를 표시합니다(SELECT 4 pw)
테라 바이트 단위로 보고서를 표시합니다(SELECT 5 pw)
PetaBytes로 보고서를 표시합니다 (이를 실행하면 저에게 연락하십시오)형식이 약간 적은 보고서 쿼리는 다음과 같습니다 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;
마지막으로 몇 번의 클릭으로 Amazon에서 직접이 정보를 얻을 수있는 쉬운 방법을 찾았습니다.
show table status from mydatabsename;
여기서 mydatabasename은 데이터베이스 이름입니다.
테이블 및 기타 메트릭 당 Data_length 및 Index_length 메트릭이 표시됩니다. 이 열을 합계하고 바이트 단위임을 기억해야하므로 kb를 얻으려면 1024로 나누고 meg를 얻으려면 다시 1024로, gigs를 얻으려면 1024로 다시 나누어야합니다. 또한 인덱스 / 데이터베이스 할당 내 여유 공간이 표시됩니다.
http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html 을 탐색하고 싶다면 더 세밀하고 sum () 얻을 수 있습니다.
SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS;
인덱스 / 데이터베이스 할당에서 남은 공간을 표시합니다 ...
SELECT SUM(Data_length) FROM INFORMATION_SCHEMA.PARTITIONS;
SELECT SUM(Index_length) FROM INFORMATION_SCHEMA.PARTITIONS;
... 사용 된 데이터 및 색인 크기를 표시합니다 (총 할당을 위해 추가해야 함).
좀 더 해부하고 싶다면 ...
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";
물론 http://dev.mysql.com/downloads/tools/workbench/ 에서 찾은 것처럼 MySQL Workbench를 사용할 수도 있지만 데이터베이스 서버에 대한 포트 액세스 권한이 있다고 가정합니다. 여전히, 당신은 다운로드 가치가 너무 많은 오프라인을 할 수 있습니다. 워크 벤치는 나에게 의미가없는 할당을 sum ()하지 않습니다. 그러나 다시, 나는 최신 버전이 없습니다.
2019 : MySQL 및 MariaDB의 경우 다음 AWS 제공 링크를 참조하십시오 : https://aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/