Làm cách nào để biết cơ sở dữ liệu Amazon RDS (MySQL) của tôi lớn như thế nào?


11

Tôi có cơ sở dữ liệu MySQL cho trang web của mình được lưu trữ trên Amazon AWS bằng RDS. Nó có 5GB dung lượng lưu trữ có sẵn cho nó. Làm cách nào tôi có thể biết dữ liệu trong đó thực sự lớn đến mức nào (và do đó, còn bao nhiêu dung lượng 5 GB tôi còn lại)?

Câu trả lời:


13

Dưới đây là các truy vấn có tổ chức hơn đối với THÔNG TIN_SCHema

Kích thước bằng công cụ lưu trữ

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;

Kích thước theo cơ sở dữ liệu

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 ); 

Kích thước theo cơ sở dữ liệu / công cụ lưu trữ

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;

CAUPAT

Trong mỗi ba (3) truy vấn, bạn sẽ thấy (SELECT 3 pw). Chữ pwviết tắt của Power Of 1024 để hiển thị kết quả theo các đơn vị cụ thể:

  • (SELECT 0 pw) sẽ hiển thị Báo cáo theo byte
  • (SELECT 1 pw) sẽ hiển thị Báo cáo theo KiloBytes
  • (SELECT 2 pw) sẽ hiển thị Báo cáo trong MegaBytes
  • (SELECT 3 pw) sẽ hiển thị Báo cáo trong GigaBytes
  • (SELECT 4 pw) sẽ hiển thị Báo cáo trong TeraBytes
  • (SELECT 5 pw) sẽ hiển thị Báo cáo trong PetaBytes (vui lòng liên hệ với tôi nếu bạn chạy cái này)

Đây là một truy vấn báo cáo với định dạng ít hơn một chút trong 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;

Hãy thử một lần !!!


Bạn thật tuyệt vời!
Người chơi1

4

Cuối cùng tôi đã tìm thấy cách dễ dàng để có được thông tin này trực tiếp từ Amazon với một vài cú nhấp chuột.

  1. Đăng nhập vào bảng điều khiển quản lý RDS
  2. Nhấp vào "Trường hợp DB"
  3. Bấm vào ví dụ mà bạn quan tâm. Điều đó sẽ mở rộng nó và hiển thị nhiều thông tin hơn về nó.
  4. Xem tab "Giám sát" ở bên trái (nên chọn theo mặc định)
  5. Có một màn hình "Storage" cho biết nó sử dụng bao nhiêu dung lượng và hiển thị biểu đồ về mức độ khả dụng:

nhập mô tả hình ảnh ở đây


Từ các tài liệu RDS, bộ nhớ có thể giải phóng được là "có bao nhiêu RAM trên phiên bản DB, tính bằng megabyte", chứ không phải việc sử dụng lưu trữ của thể hiện: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/ tựa
Evan Kroske

@EvanKroske Có vẻ như "Không gian lưu trữ miễn phí" thực sự là số liệu tôi muốn. Cảm ơn các liên kết doc.
Stephen Ostermiller

Có vẻ như AWS đã tân trang lại toàn bộ giao diện kể từ khi tôi viết câu trả lời này. Tôi đã cập nhật nó dựa trên những gì tôi thấy ngày hôm nay.
Stephen Ostermiller

Có vẻ như họ có thể đã tân trang lại nó, tôi không thấy tab theo dõi. và lưu trữ chỉ liệt kê tổng kích thước được phân bổ.
Brian Thomas

2

show table status from mydatabsename; trong đó mydatabasename là tên cơ sở dữ liệu của bạn.

Điều này cho bạn thấy số liệu Data_length và Index_length trên mỗi bảng và các số liệu khác. Bạn sẽ phải tổng cộng các cột này và nhớ rằng chúng được tính bằng byte nên bạn sẽ phải chia cho 1024 để có được kb và sau đó là 1024 lần nữa để có được megs và sau đó là 1024 lần nữa để có được hợp đồng biểu diễn. Điều này cũng cho thấy không gian trống trong phân bổ chỉ mục / cơ sở dữ liệu của bạn.

Bạn có thể nhận được nhiều chi tiết và tổng () nếu bạn muốn khám phá: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html

SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS;

Hiển thị không gian còn lại trong phân bổ chỉ mục / cơ sở dữ liệu ...

SELECT SUM(Data_length) FROM INFORMATION_SCHEMA.PARTITIONS;

SELECT SUM(Index_length) FROM INFORMATION_SCHEMA.PARTITIONS;

... Hiển thị dữ liệu và kích thước chỉ mục được sử dụng (bạn sẽ phải thêm chúng cho tổng phân bổ)

Nếu bạn muốn mổ xẻ mọi thứ thêm một chút ...

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";

Tất nhiên, bạn cũng có thể sử dụng MySQL Workbench như tôi tìm thấy ở đây: http://dev.mysql.com/doads/tools/workbench/ nhưng giả sử bạn có quyền truy cập cổng vào máy chủ cơ sở dữ liệu của mình. Tuy nhiên, bạn có thể làm rất nhiều ngoại tuyến quá đáng để tải về. Xin lưu ý rằng bàn làm việc không tính tổng () phân bổ không có ý nghĩa với tôi. Nhưng một lần nữa, tôi cũng không có phiên bản mới nhất.


Tôi có hơn 100 cơ sở dữ liệu trong trường hợp RDS này. Có một cách thuận tiện để truy vấn tất cả chúng và tổng hợp mọi thứ?
Stephen Ostermiller

@Stephen Ostermiller 100 cơ sở dữ liệu hoặc 100 bảng? Một cơ sở dữ liệu bao gồm một hoặc nhiều lược đồ. Một lược đồ thường là một lĩnh vực chủ đề với các bảng liên quan.
Closnoc

100 cơ sở dữ liệu mỗi cơ sở với khoảng 20 bảng.
Stephen Ostermiller

Tôi đang thử nghiệm với ví dụ trên trang mà tôi đã đề cập ... sẽ quay lại với bạn chỉ sau một giây.
Closnoc

@Stephen Ostermiller Cập nhật câu trả lời. Hi vọng điêu nay co ich.
Closnoc

1

2019 : Đối với MySQL và MariaDB Vui lòng tham khảo liên kết AWS được cung cấp này: https://aws.amazon.com/premiumsupport/ledgeledge-center/view-st Storage-rds-mysql-mariadb /


Hữu ích để biết những gì đang sử dụng lưu trữ, nhưng vấn đề của tôi chỉ là biết tôi còn lại bao nhiêu dung lượng.
Stephen Ostermiller

1
Bạn có thể xem số liệu FreeStorageSpace trong giám sát RDS cho điều đó và nó cũng đã được đề cập trong tài liệu.
Vigneshwar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.