Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the sizes of the tables of a MySQL database?

Tags:

mysql

I can run this query to get the sizes of all tables in a MySQL database:

show table status from myDatabaseName; 

I would like some help in understanding the results. I am looking for tables with the largest sizes.

Which column should I look at?

like image 535
JPashs Avatar asked Mar 08 '12 15:03

JPashs


People also ask

How do you know the size of the each table of the database?

This can be accomplished easily with the following query: SELECT TABLE_SCHEMA AS `Database`, TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.

How can I tell how many tables are in a MySQL database?

To check the count of tables. mysql> SELECT count(*) AS TOTALNUMBEROFTABLES -> FROM INFORMATION_SCHEMA. TABLES -> WHERE TABLE_SCHEMA = 'business'; The following output gives the count of all the tables.


1 Answers

You can use this query to show the size of a table (although you need to substitute the variables first):

SELECT      table_name AS `Table`,      round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`  FROM information_schema.TABLES  WHERE table_schema = "$DB_NAME"     AND table_name = "$TABLE_NAME"; 

or this query to list the size of every table in every database, largest first:

SELECT       table_schema as `Database`,       table_name AS `Table`,       round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`  FROM information_schema.TABLES  ORDER BY (data_length + index_length) DESC; 
like image 55
ChapMic Avatar answered Sep 22 '22 11:09

ChapMic