2010-01-17 48 views
1

我们有一个从MySql的Linux 64位版本备份的数据库,我们已经恢复到Windows 32位版本的MySql上。MySql从Linux 64bit到Windows 32Bit - 缓慢的查询?

我们有一个包含大约4.5个字节数据的表格 - 包含文件数据的BLOB字段占用的主要空间。表格本身只有约6400条记录。

以下查询立即在Linux框上执行;但在Windows中,大约需要5分钟运行,并在这个过程中,服务器不响应任何东西:

select id from fileTable where cid=1234 

是否有某种形式的优化,我们需要做什么?从Linux到Windows或从64位到32位需要满足哪些特殊考虑?

回答

0

如果您在二进制数据库文件复制*。FRM * .MYD * .MYI

那么你应该检查了这一点: http://dev.mysql.com/doc/refman/5.1/en/mysql-upgrade.html

如果你导出的数据块内容则:

检查版本号和更新日志。

还要考虑两个系统之间是否存在性能差异! (也许这是正常的)

0

我想说通过一个64位数字空间(在可直接寻址的存储器中具有17.2千兆字节的上限),4.5Gig的数据将更容易被访问。 32位可寻址内存是4Gb,所以如果你的数据库比这个大,那么MySQL可能无法尽快处理索引。

有没有办法重新索引或优化您的数据库,以便以更友好的方式分页?将最大的表更改为不同的存储引擎可能会这样做(使用ALTER或phpMyAdmin)。

移动后,您可能在ID字段中丢失了一些索引。尝试再次运行您的选择,在前面解释;

从文件表EXPLAIN SELECT id其中CID = 1234

如果查询后产生的表包含空值mosty,那么你需要重新配置你的表中的键。

或者,检查你的32位盒上有多少内存,是否与64位盒相当?

显然,回到了这一切,做一个非现场服务器上测试第一;)

我希望这可以帮助你在正确的轨道上。

0

只需在您的所有表上进行优化,并检查您是否(仍)在cid上有索引。