RDSを使用してAmazon AWSでホストされているWebサイト用のMySQLデータベースがあります。 5GBのストレージが利用可能です。実際にその中のデータがどれだけ大きいか(したがって、5GBのクォータがどれだけ残っているか)を知るにはどうすればよいですか?
数回クリックするだけで、この情報をAmazonから直接取得する簡単な方法を見つけました。
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)
はレポートをキロバイト単位で表示します(SELECT 2 pw)
はレポートをメガバイト単位で表示します(SELECT 3 pw)
は、レポートをギガバイトで表示します(SELECT 4 pw)
は、レポートをテラバイト単位で表示します(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;
show table status from mydatabsename;
ここで、mydatabasenameはデータベース名です。
これは、テーブルごとのData_lengthとIndex_lengthのメトリックおよびその他のメトリックを示します。これらの列を合計し、バイト単位であることを覚えておく必要があります。したがって、kbを取得するには1024で除算し、megsを取得するには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()割り当てを行わないことに注意してください。これは私には意味がありません。しかし、再び、私も最新バージョンを持っていません。