【发布时间】:2012-10-01 13:51:24
【问题描述】:
我通过 PHP 脚本将数据存储到 MySql 数据库。数据库没有存储到磁盘,但查询存储在内存中的数据库中。当我运行 mysqldump 时,文件大小约为 130M,但当我检查位于“/var/lib/mysql/db_name”中的文件大小时,它约为 80K。我使用的引擎是 InnoDB。
【问题讨论】:
我通过 PHP 脚本将数据存储到 MySql 数据库。数据库没有存储到磁盘,但查询存储在内存中的数据库中。当我运行 mysqldump 时,文件大小约为 130M,但当我检查位于“/var/lib/mysql/db_name”中的文件大小时,它约为 80K。我使用的引擎是 InnoDB。
【问题讨论】:
你怎么知道它没有被存储到磁盘上?
如果您根据这些尺寸进行评估,您可能不会比较相同的东西。
数据库本身只是纯数据。
mysqldump 包含所有冗长的实际创建语句,可能会更长。
例如
Data: 1,5000,23,300 4 bytes.
Create statements from backup:
insert into summary_categories(category_sum_product) values (1);
insert into summary_categories(category_sum_product) values (5000);
insert into summary_categories(category_sum_product) values (12);
insert into summary_categories(category_sum_product) values (300);
= 262 characters/bytes
【讨论】:
有一种方法可以检查它是存储到磁盘还是内存中。重新启动机器,如果数据仍然存在,则将其存储在磁盘上(就是这种情况)。
所以要进一步测试,请使用此查询来查看数据的存储位置:
SHOW VARIABLES WHERE variable_name LIKE '%datadir%'
然后在该目录中可能会有一个带有数据库名称的文件夹。在该文件夹中检查具有您的表名的文件。有一个用于定义(table.frm)。这可能是您看到的可能是 80K 的那个,还有另一个 (tablename.ibd) 保存数据。
【讨论】: