trying to understand table size Can somebody help explain the "data_length" of the table? Why is it so big in my example below of a table with just one column and one row?

mysql&gt; create table `network_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; insert into network_type(id) VALUES (1);
Query OK, 1 row affected (0.00 sec)

mysql&gt; SELECT data_length FROM information_schema.TABLES  WHERE table_schema = "test";

+-------------+
| data_length |
+-------------+
|       16384 |
+-------------+
1 row in set (0.01 sec)
With innodb_file_per_table configured, the network_type table will exist in a physical file under the DB folder. For example, let's say your table has the following attributes:


Table name somedb.network_type
datadir is /var/lib/mysql


You will find the physical file /var/lib/mysql/somedb/network_type.ibd

That file is the home of all data and index pages in InnoDB. The pre-compiled size of a page is 16K. There is room inside that page for more data, but 16K is the fixed allocation for data and index.

When you ran SELECT data_length FROM information_schema.TABLES  WHERE table_schema = "test";, MySQL simply reported the most granular space InnoDB is using.