在perl中重新加载mysql数据库的最快方法

时间:2011-10-14 09:27:47

标签: mysql perl

我有一个脚本需要将数据添加到mysql数据文件夹中创建的文件夹中,然后以某种方式强制mysql服务器重新加载数据,以便数据库可靠地显示出来。我目前正在使用system调用/etc/init.d/mysql脚本来重启服务器,但这很慢,我找不到任何在mysql中通过某种查询重新加载数据库的任何东西。我只是想知道是否有办法做得更快一点?

2 个答案:

答案 0 :(得分:1)

这取决于您正在使用的存储引擎。

一旦MySQL下次触摸表格,就会自动重新加载MyISAM表格(显然,您需要确保.MYI,.MYD和.frm文件一致)。

InnoDB有点复杂,取决于它是否是同一表空间中所有表的传统配置,或者是否使用innodb_file_per_table。对于前者,您几乎必须重新启动服务器。使用file-per-table,您可以复制单个.ibd文件,但是您必须使用ALTER TABLE语句来导入该表空间。

有关在不重新启动服务器的情况下使用各个.ibd文件的信息,请参阅here

This page对于了解如何将InnoDB数据从一个地方移动到另一个地方也非常有用。

答案 1 :(得分:0)

你说“很慢”是什么意思?

您可以在名为orginal_db_name_temp的数据库中转储/加载 new 数据库,重命名original数据库,然后将orginal_db_name_temp重命名为{ {1}} - 然后您将拥有新的数据库。

但是,我不知道哪种方法更快 - 因为转储和加载往返可能比文件副本慢。但重命名数据库可能比重新启动服务器更快