sql >> データベース >  >> RDS >> Mysql

MySQLスペースを監視する方法は?

    共有すべき大きなクエリがいくつかあります:

    これを実行して、ストレージエンジンごとのMySQLデータとインデックスの合計使用量を取得します

    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;
    

    これを実行して、データベースごとのMySQLデータとインデックスの合計使用量を取得します

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

    これを実行して、データベースおよびストレージエンジンごとのMySQLデータとインデックスの合計使用量を取得します

    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は、結果を表示するためのPowerOf1024の略です。

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

    書式設定が少し少ないレポートクエリは次のとおりです。

    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;
    

    私を信じてください。私は4年以上前にこれらのクエリを実行し、現在でも使用しています。

    UPDATE 2013-06-24 15:53 EDT

    何か新しいものがあります。 pwを設定する必要がないように、クエリを変更しました 異なるユニット表示のパラメータ。各ユニットの表示は自動的に計算されます。

    ストレージエンジンによるレポート

    SELECT
        IFNULL(ENGINE,'Total') "Storage Engine",
        LPAD(CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',
        SUBSTR(units,pw1*2+1,2)),17,' ') "Data Size",
        LPAD(CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',
        SUBSTR(units,pw2*2+1,2)),17,' ') "Index Size",
        LPAD(CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',
        SUBSTR(units,pw3*2+1,2)),17,' ') "Total Size"
    FROM
    (
        SELECT ENGINE,DAT,NDX,TBL,
        IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
        FROM 
        (SELECT *,
            FLOOR(LOG(IF(DAT=0,1,DAT))/LOG(1024)) px,
            FLOOR(LOG(IF(NDX=0,1,NDX))/LOG(1024)) py,
            FLOOR(LOG(IF(TBL=0,1,TBL))/LOG(1024)) pz
            FROM
            (SELECT
                ENGINE,
                SUM(data_length) DAT,
                SUM(index_length) NDX,
                SUM(data_length+index_length) TBL
            FROM
            (
               SELECT engine,data_length,index_length FROM
               information_schema.tables WHERE table_schema NOT IN
               ('information_schema','performance_schema','mysql')
               AND ENGINE IS NOT NULL
            ) AAA GROUP BY ENGINE WITH ROLLUP
    ) AAA ) AA) A,(SELECT ' BKBMBGBTB' units) B;
    

    データベース別レポート

    SELECT
        IFNULL(DB,'Total') "Database",
        LPAD(CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',
        SUBSTR(units,pw1*2+1,2)),17,' ') "Data Size",
        LPAD(CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',
        SUBSTR(units,pw2*2+1,2)),17,' ') "Index Size",
        LPAD(CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',
        SUBSTR(units,pw3*2+1,2)),17,' ') "Total Size"
    FROM
    (
        SELECT DB,DAT,NDX,TBL,
        IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
        FROM 
        (SELECT *,
            FLOOR(LOG(IF(DAT=0,1,DAT))/LOG(1024)) px,
            FLOOR(LOG(IF(NDX=0,1,NDX))/LOG(1024)) py,
            FLOOR(LOG(IF(TBL=0,1,TBL))/LOG(1024)) pz
        FROM
        (SELECT
            DB,
            SUM(data_length) DAT,
            SUM(index_length) NDX,
            SUM(data_length+index_length) TBL
        FROM
        (
           SELECT table_schema DB,data_length,index_length FROM
           information_schema.tables WHERE table_schema NOT IN
           ('information_schema','performance_schema','mysql')
           AND ENGINE IS NOT NULL
        ) AAA GROUP BY DB WITH ROLLUP
    ) AAA) AA) A,(SELECT ' BKBMBGBTB' units) B;
    

    データベース/ストレージエンジン別のレポート

    SELECT
        IF(ISNULL(DB)+ISNULL(ENGINE)=2,'Database Total',
        CONCAT(DB,' ',IFNULL(ENGINE,'Total'))) "Reported Statistic",
        LPAD(CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',
        SUBSTR(units,pw1*2+1,2)),17,' ') "Data Size",
        LPAD(CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',
        SUBSTR(units,pw2*2+1,2)),17,' ') "Index Size",
        LPAD(CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',
        SUBSTR(units,pw3*2+1,2)),17,' ') "Total Size"
    FROM
    (
        SELECT DB,ENGINE,DAT,NDX,TBL,
        IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
        FROM 
        (SELECT *,
            FLOOR(LOG(IF(DAT=0,1,DAT))/LOG(1024)) px,
            FLOOR(LOG(IF(NDX=0,1,NDX))/LOG(1024)) py,
            FLOOR(LOG(IF(TBL=0,1,TBL))/LOG(1024)) pz
        FROM
        (SELECT
            DB,ENGINE,
            SUM(data_length) DAT,
            SUM(index_length) NDX,
            SUM(data_length+index_length) TBL
        FROM
        (
           SELECT table_schema DB,ENGINE,data_length,index_length FROM
           information_schema.tables WHERE table_schema NOT IN
           ('information_schema','performance_schema','mysql')
           AND ENGINE IS NOT NULL
        ) AAA GROUP BY DB,ENGINE WITH ROLLUP
    ) AAA) AA) A,(SELECT ' BKBMBGBTB' units) B;
    


    1. docker-compose mysqlinitsqlは実行されません

    2. MySQLでデータベースのすべての権限を付与する方法

    3. 警告の取得:集計またはその他のSET操作によってNULL値が削除されます

    4. SQL Server 2014StandardEditionの常識的なライセンスの変更