2012-08-07 1 views
10

MySQLのデータベースのサイズを調べるためのクエリや関数はありますか?もしMySQLのデータベースのサイズを見つける典型的な方法は何ですか?MySQLクエリのデータベースサイズ

私はグーグルとSELECT CONCAT(sum(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE)/1024/1024),2))," MB") AS Size FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA like '%YOUR_DB_NAME%' ;

を発見し、それは私が474989023196466.25 MBを可能にする400メガバイト知っているデータベースを返しました!

+0

、 data_freeはdata_lengthよりもはるかに大きく、クエリが負の数を返すことを意味します。おそらく、それを符号なしの正の整数と解釈することになります。したがって、無意味な結果になります。そのクエリを貼り付けようとすると、「BIGINT UNSIGNEDの値が範囲外です」というエラーが表示されます。 – octern

+0

このページで提供されている特定のデータベース/テーブルのサイズについては、http://www.rathishkumar.in/2017/12/how-to-find-database-and-table-size-in-mysql.htmlをご覧ください。 – rathishDBA

答えて

23

このクエリを使用して試してみてください:

SELECT table_schema AS "Data Base Name", 
sum(data_length + index_length)/1024/1024 AS "Data Base Size in MB" 
FROM information_schema.TABLES GROUP BY table_schema ; 

それともこれで、あなたがラウンドしたい場合:

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

は試してみてください。私のテーブルのすべてにおいて

SELECT table_schema, sum(data_length + index_length) FROM information_schema.TABLES GROUP BY table_schema; 
0
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;