Friday, 16 November 2018

How to Get True Size of MySQL Database?



I would like to know how much space does my MySQL database use, in order to select a 
web host. I found the command SHOW TABLE STATUS LIKE 'table_name' so when I
 do the query, I get something like this:
Name       | Rows | Avg. Row Length | Data_Length | Index Length
----------   ----   ---------------   -----------   ------------
table_name   400          55            362000        66560
  • numbers are rounded.
So do I have 362000 or 400*362000 = 144800000 bytes of data for this table? 
And what does Index Length mean?

 Answers




From S. Prakash, found at the MySQL forum:
SELECT table_schema "database name",
    sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
    sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema; 





If you use phpMyAdmin, it can tell you this information.
Just go to "Databases" (menu on top) and click "Enable Statistics".
You will see something like this:
This will probably lose some accuracy as the sizes go up, but it should be accurate enough 
for your purposes.










SUM(Data_free) may or may not be valid. It depends on the history of innodb_file_per_table. More discussion is found here.

0 comments:

Post a Comment