Amazon RDSデータベース(MySQL)の大きさを確認するにはどうすればよいですか?


12

RDSを使用してAmazon AWSでホストされているウェブサイト用のMySQLデータベースがあります。5 GBのストレージを利用できます。その中のデータが実際にどれくらいの大きさであるか(したがって、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;

警告

three(3)クエリのそれぞれで、が表示されます(SELECT 3 pw)pw1024の電源が特定の単位で結果を表示するための略:

  • (SELECT 0 pw) レポートをバイトで表示します
  • (SELECT 1 pw) レポートをキロバイトで表示します
  • (SELECT 2 pw) レポートをメガバイトで表示します
  • (SELECT 3 pw) レポートはギガバイトで表示されます
  • (SELECT 4 pw) レポートをテラバイトで表示します
  • (SELECT 5 pw) レポートをペタバイト単位で表示します(これを実行する場合はご連絡ください)

以下は、書式設定が少し少ないレポートクエリです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

6

最後に、数回クリックするだけで、Amazonから直接この情報を取得する簡単な方法を見つけました。

  1. RDS管理ダッシュボードにログインします。
  2. 「DBインスタンス」をクリックします
  3. 関心のあるインスタンスをクリックします。それはそれを拡張し、それについてより多くの情報を表示するはずです。
  4. 左側の[監視]タブを表示します(デフォルトで選択されています)
  5. 使用している容量を示し、使用可能な容量のグラフを表示する「ストレージ」モニターがあります。

ここに画像の説明を入力してください


RDSのドキュメントからは、解放可能なメモリは、「RAMはメガバイト単位で、DBインスタンス上で提供されていますどのくらいの」インスタンスのストレージ使用量ではありません。docs.aws.amazon.com/AmazonRDS/latest/UserGuide/...
エヴァンKroske

@EvanKroske「空きストレージ容量」が実際に必要なメトリックのようです。ドキュメントリンクをありがとう。
スティーブンオスターミラー

AWSがこの回答を書いてから、インターフェース全体が刷新されたようです。今日見たものに基づいて更新しました。
スティーブンオスターミラー

彼らは再びそれを刷新したように見えます、私は監視タブを見ません。ストレージには、割り当てられた合計サイズが表示されます。
ブライアントーマス

2

show table status from mydatabsename; ここで、mydatabasenameはデータベース名です。

これにより、テーブルごとのメトリックData_lengthおよびIndex_lengthおよびその他のメトリックが表示されます。これらの列を合計し、それらがバイト単位であることを覚えておく必要があるため、kbを取得するには1024で除算し、メグを取得するには再度1024で除算し、ギグを取得するには再度1024で除算する必要があります。これは、インデックス/データベース割り当て内の空き領域も示します。

探索したい場合は、より細かく、sum()を取得できます。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/が、それはあなたのデータベースサーバへのポートアクセスを前提としています。それでも、オフラインで多くのことができるので、ダウンロードする価値があります。ワークベンチは、私には意味のない割り当てをsum()しないことに注意してください。しかし、繰り返しますが、私も最新バージョンを持っていません。


このRDSインスタンスには100を超えるデータベースがあります。それらすべてをクエリしてすべてを合計する便利な方法はありますか?
スティーブンオスターミラー

@Stephen Ostermiller 100データベースまたは100テーブル?データベースは1つ以上のスキーマで構成されます。スキーマは通常、関連するテーブルを持つサブジェクトエリアです。
closetnoc 2014年

それぞれ約20のテーブルを持つ100のデータベース。
スティーブンオスターミラー

私が参照したページの例を試してみています...すぐに戻ります。
closetnoc 2014年

@Stephen Ostermiller回答を更新しました。お役に立てれば。
closetnoc 2014年

1

2019:MySQLおよびMariaDBの場合次のAWS提供リンクを参照してください:https : //aws.amazon.com/premiumsupport/knowledge-center/view-storage-rds-mysql-mariadb/


何がストレージを使用しているかを知るのに役立ちますが、私の問題は、どれだけのストレージが残っているかを知ることでした。
スティーブンオスターミラー

1
そのためのRDSモニタリングでFreeStorageSpaceメトリック確認できます。これは、ドキュメントにも記載されています。
Vigneshwar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.