ฉันจะบอกได้อย่างไรว่าฐานข้อมูล Amazon RDS (MySQL) ของฉันใหญ่แค่ไหน


12

ฉันมีฐานข้อมูล MySQL สำหรับเว็บไซต์ของฉันที่โฮสต์บน Amazon AWS โดยใช้ RDS มีพื้นที่เก็บข้อมูล 5GB ฉันจะบอกได้อย่างไรว่าข้อมูลในนั้นมีขนาดใหญ่เพียงใด (ดังนั้นจึงมีโควต้า 5GB เหลืออยู่เท่าไหร่)

คำตอบ:


13

ต่อไปนี้เป็นคำถามที่มีการจัดระเบียบเพิ่มเติมกับ 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;

ให้มันลอง !!!


คุณเจ๋งมาก!
PLAYER1

7

ในที่สุดฉันก็พบวิธีที่ง่ายในการรับข้อมูลนี้โดยตรงจาก Amazon ด้วยการคลิกไม่กี่ครั้ง

  1. เข้าสู่แดชบอร์ดการจัดการ RDS
  2. คลิกที่ "DB Instances"
  3. คลิกที่อินสแตนซ์ที่คุณสนใจ ที่ควรขยายและแสดงข้อมูลเพิ่มเติมเกี่ยวกับมัน
  4. ดูแท็บ "การตรวจสอบ" ทางซ้าย (ควรเลือกเป็นค่าเริ่มต้น)
  5. มีหน้าจอ "ที่เก็บข้อมูล" ที่บอกจำนวนพื้นที่ที่ใช้และแสดงกราฟของจำนวนที่มีอยู่:

ป้อนคำอธิบายรูปภาพที่นี่


จาก RDS docs หน่วยความจำที่ว่างได้คือ "จำนวน RAM ที่พร้อมใช้งานบนอินสแตนซ์ DB เป็นเมกะไบต์" ไม่ใช่การใช้ที่เก็บข้อมูลของอินสแตนซ์: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/
Evan Kroske

@EvanKroske ดูเหมือนว่า "Free Storage Space" เป็นตัวชี้วัดที่ฉันต้องการ ขอบคุณสำหรับลิงค์ doc
Stephen Ostermiller

ดูเหมือนว่า AWS ได้ปรับปรุงอินเทอร์เฟซทั้งหมดใหม่ตั้งแต่ฉันเขียนคำตอบนี้ ฉันได้อัพเดทมันตามสิ่งที่ฉันเห็นในวันนี้
Stephen Ostermiller

ดูเหมือนว่าพวกเขาอาจปรับปรุงใหม่อีกครั้งฉันไม่เห็นแท็บการตรวจสอบ และพื้นที่จัดเก็บจะแสดงรายการขนาดทั้งหมดที่จัดสรร
Brian Thomas

2

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 ไม่รวม () การจัดสรรซึ่งไม่สมเหตุสมผลสำหรับฉัน แต่แล้วฉันก็ไม่มีเวอร์ชั่นล่าสุดเหมือนกัน


ฉันมีฐานข้อมูลมากกว่า 100 รายการในอินสแตนซ์ RDS นี้ มีวิธีที่สะดวกในการค้นหาทั้งหมดและสรุปทุกอย่างหรือไม่
Stephen Ostermiller

@Stephen Ostermiller 100 ฐานข้อมูลหรือ 100 ตาราง? ฐานข้อมูลประกอบด้วยหนึ่งหรือมากกว่าหนึ่งสคีมา สคีมาโดยทั่วไปเป็นพื้นที่หัวเรื่องที่มีตารางที่เกี่ยวข้อง
Closnoc

100 ฐานข้อมูลแต่ละรายการมีประมาณ 20 ตาราง
Stephen Ostermiller

ฉันกำลังทดลองกับตัวอย่างในหน้าเว็บที่ฉันอ้างถึง ... จะกลับมาหาคุณในเวลาไม่กี่วินาที
Closnoc

@Stephen Ostermiller อัพเดทคำตอบแล้ว หวังว่านี่จะช่วยได้
Closnoc

1

2019 : สำหรับ MySQL และ MariaDB โปรดดูที่ลิงก์ AWS ที่ระบุนี้: https://aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/


มีประโยชน์ในการทราบว่ามีการใช้ที่เก็บข้อมูลอย่างไร
Stephen Ostermiller

1
คุณสามารถดูตัวชี้วัด FreeStorageSpaceในการตรวจสอบ RDS สำหรับสิ่งนั้นและได้รับการกล่าวถึงในเอกสารเช่นกัน
Vigneshwar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.