ฉันมีฐานข้อมูล MySQL สำหรับเว็บไซต์ของฉันที่โฮสต์บน Amazon AWS โดยใช้ RDS มีพื้นที่เก็บข้อมูล 5GB ฉันจะบอกได้อย่างไรว่าข้อมูลในนั้นมีขนาดใหญ่เพียงใด (ดังนั้นจึงมีโควต้า 5GB เหลืออยู่เท่าไหร่)
ฉันมีฐานข้อมูล MySQL สำหรับเว็บไซต์ของฉันที่โฮสต์บน Amazon AWS โดยใช้ RDS มีพื้นที่เก็บข้อมูล 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;
ในแต่ละแห่งที่สาม (3) (SELECT 3 pw)
คำสั่งคุณจะเห็น pw
ยืนสำหรับพลังงาน 1024 เพื่อแสดงผลในหน่วยที่เฉพาะเจาะจง:
(SELECT 0 pw)
จะแสดงรายงานเป็นไบต์(SELECT 1 pw)
จะแสดงรายงานเป็น KiloBytes(SELECT 2 pw)
จะแสดงรายงานเป็นเมกะไบต์(SELECT 3 pw)
จะแสดงรายงานเป็น GigaBytes(SELECT 4 pw)
จะแสดงรายงานเป็น TeraBytes(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 ต่อตารางและตัวชี้วัดอื่น ๆ คุณจะต้องรวมคอลัมน์เหล่านี้และจำไว้ว่าพวกเขาอยู่ในหน่วยไบต์ดังนั้นคุณจะต้องหารด้วย 1024 เพื่อรับ kb แล้วตามด้วย 1024 อีกครั้งเพื่อรับ megs แล้ว 1024 อีกครั้งเพื่อให้ได้กิ๊ก นอกจากนี้ยังแสดงพื้นที่ว่างในการจัดสรรดัชนี / ฐานข้อมูลของคุณ
คุณสามารถได้รับรายละเอียดเพิ่มเติมและผลรวม () หากคุณต้องการสำรวจ: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html
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";
แน่นอนคุณสามารถใช้ MySQL Workbench เหมือนที่ฉันพบได้ที่นี่: http://dev.mysql.com/downloads/tools/workbench/แต่นั่นถือว่าคุณมีพอร์ตเข้าสู่เซิร์ฟเวอร์ฐานข้อมูลของคุณ ยังคุณสามารถทำออฟไลน์ได้มากเช่นกันดังนั้นควรค่าแก่การดาวน์โหลด โปรดทราบว่า workbench ไม่รวม () การจัดสรรซึ่งไม่สมเหตุสมผลสำหรับฉัน แต่แล้วฉันก็ไม่มีเวอร์ชั่นล่าสุดเหมือนกัน
2019 : สำหรับ MySQL และ MariaDB โปรดดูที่ลิงก์ AWS ที่ระบุนี้: https://aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/