我可以在InnoDB和MyISAM之间来回更改MySQL表吗?

我有一个网站,有一个体面大的数据库,3GB的大小,几十万张表的纪录。

目前它在MyISAM上是100%的,而且我觉得服务器由于过多的locking而比预期的要慢,所以我想尝试去InnoDB,看看是否让事情变得更好。 但是,我需要直接在生产中这样做,因为显然没有负载,这并没有什么区别。

不过,我有点担心,因为InnoDB实际上有可能会变慢,所以问题是:

如果我把所有表转换成InnoDB,结果比以前更糟,我可以返回MyISAM而不会丢失任何东西吗?

你能想到我可能遇到的任何问题吗? (例如,我知道InnoDB将所有数据存储在一个只有更大的大文件中,这是否会成为问题?)

非常感谢你
丹尼尔

我试图在mysql中多次更改数据库引擎,而且我没有遇到任何问题。

不过 ,我更喜欢在testing机器上做。 您只需要导出数据库并将其导入到testing机器上即可。 然后,您可以更改引擎,并检查是否有错误/警告/数据丢失。 为了生成负载,您可以创build自己的脚本来模拟实际负载,也可以使用现有的工具来执行此操作。 对于这一点,你必须使用一个足够强大的机器来以合理的方式来判断性能。