Why is the database size (on disk?) Different from the database size

My database contains three tables having 50k, 50k and 5m rows. All of them are InnoDB. (the largest contains varchar [256]). The size of my database is 214 MB and I received a request information_schema.TABLES(I think this gives the size of the data + index on disk?)

I had 1.5 GB of RAM, and I thought that I would convert the engine of all tables to MEMORY. But when I started to convert the largest table, I got error 1114.

After some research, I found that max_heap_table_size- only 16 MB. So, I installed max_heap_table_sizeand tmp_table_sizein 1GB.

When I tried to convert again, I saw that the memory usage of mysqld.exe goes beyond 1.2 GB and then throws the same error again, even if I convert half the lines! I deleted half of the rows from the largest table and it finally fits in - 700 MB in memory!

Why can't a database of 214 MB even hold more than 4 times the memory?

Is there anything else inside the process that eats memory other than data index +?

Machine: Intel P4 - 1.9 GHz, 1.5 GB RAM, Win7 Ultimate.

+5
source share
1 answer

I found this question dba.se , in which the accepted answer had a link on this dev.mysql page that says:

MEMORY . , VARCHAR, .

, 5- varchar [256].

5 000 000 x 256 = 1,19G ( 1 char), , !

95% , - . , InnoDB . , 10 15 , .

+3

All Articles