mysqlデータベースのサイズを取得する方法?


542

mysqlデータベースのサイズを取得する方法は?
ターゲットデータベースの名前が「v3」であるとします。


ここに提供されたスクリプトが役立つ特定のテーブル/特定のデータベースのサイズについては、情報がINFORMATION_SCHEMA.TABLESテーブルから計算され、ここでは詳細な回答を参照してくださいrathishkumar.in/2017/12/...
Rathish

回答:


1185

このクエリを実行すると、探しているものが表示されます。

SELECT table_schema "DB Name",
        ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM information_schema.tables 
GROUP BY table_schema; 

このクエリは、より包括的な指示が利用可能なmysqlフォーラムからのものです。


4
データベースのテーブルからほとんどのデータを削除した後でも、サイズは変わり
ません

2
@VidzはInnoDBエンジンを使用しています。その場合、file_per_tableを使用してテーブルを変更しない限り、領域を解放できます。
mandza 2014年

5
このメソッドは完全に空のデータベースを返さないことに注意してください。データベースが結果に表示されるためには、少なくとも1つのテーブルが存在している必要があります。
v010dya 2014

13
単一のデータベースから選択するには、これをFROMGROUP行の間に追加します。-データベースでwhere table_schema='DATABASE_NAME'置き換えDATABASE_NAMEます。
KJ価格

2
注:MySQL WorkbenchはSyntax error: {column title} (double quoted text) is not valid input here.エラーを吐き出します。列のタイトルは目盛りで囲む必要があります。すなわちDatabase Name
KareemElashmawy 2017

75

次のMySQLコマンドを使用して決定できます

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

結果

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

GBで結果を取得

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema

2
いいね。私はこの答えが好きです。
progfan

31

または、使用している場合 phpMyAdminは、データベースstructureタブのフッターにあるテーブルサイズの合計を確認できます。実際のデータベースサイズはこのサイズをわずかに超える場合がありますが、table_schema上記方法いるようです。

スクリーンショット:

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


26

または、データディレクトリに直接ジャンプして、v3.myd、v3の合計サイズを確認することもできます。myiとv3。frmファイル(myisamの場合)またはv3.idb&v3.frm(innodbの場合)。


7
注:ibdファイルは、innodb_file_per_tableを使用している場合にのみ存在します
Slashterix

2
この答えはストレージエンジンに非常に固有です。@ brian-willisによる回答がより適切です。
Manu Manjunath 2017年

15

MBで結果を取得するには:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

GBで結果を取得するには:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

12
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

インストールされていない場合、これはmysql-utils、ほとんどの主要なディストリビューションでパッケージ化されているはずのパッケージをインストールすることでインストールできます。


4

を使用してMySQLに最初にログインします。

mysql -u username -p

単一のデータベースのサイズとそのテーブルをMBで表示するコマンド。

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

database_nameをデータベースに変更します。

MB単位のサイズですべてのデータベースを表示するコマンド。

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.