【问题标题】:MySql not saving to diskMySql 不保存到磁盘
【发布时间】:2012-10-01 13:51:24
【问题描述】:

我通过 PHP 脚本将数据存储到 MySql 数据库。数据库没有存储到磁盘,但查询存储在内存中的数据库中。当我运行 mysqldump 时,文件大小约为 130M,但当我检查位于“/var/lib/mysql/db_name”中的文件大小时,它约为 80K。我使用的引擎是 InnoDB。

【问题讨论】:

    标签: mysql memory innodb disk


    【解决方案1】:

    你怎么知道它没有被存储到磁盘上?

    如果您根据这些尺寸进行评估,您可能不会比较相同的东西。

    数据库本身只是纯数据。

    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
    

    【讨论】:

    • 我是根据 db 目录的大小做出这个假设的。它只有 80K,而 mysqldump 文件是 130M。两者之间存在巨大差异。我所说的目录位于“/var/lib/mysql”中。我有另一个数据库与另一个数据库存储相同的内容,并且目录的大小要大得多。即使它包含较少的数据。
    • 更新:添加了 10,000 条记录,数据库文件大小仍为 80k。
    【解决方案2】:

    有一种方法可以检查它是存储到磁盘还是内存中。重新启动机器,如果数据仍然存在,则将其存储在磁盘上(就是这种情况)。

    所以要进一步测试,请使用此查询来查看数据的存储位置:

    SHOW VARIABLES WHERE variable_name LIKE '%datadir%'
    

    然后在该目录中可能会有一个带有数据库名称的文件夹。在该文件夹中检查具有您的表名的文件。有一个用于定义(table.frm)。这可能是您看到的可能是 80K 的那个,还有另一个 (tablename.ibd) 保存数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多