MySQL MyISAM - 在LIVE环境中插入比本地更长

时间:2014-03-31 10:13:44

标签: mysql performance insert myisam

我有一个约有500万行的MyISAM表(称之为A),以及一个包含大约2亿行的相关MyISAM表B(它连接到主键上的A)。表A包含大约12个字段,主要是varchar,而表B包含2个整数字段。

我最初是通过运行以行块形式插入行的脚本在我的Windows 8计算机(4GB RAM - SSD硬盘)上本地创建这些表。然后,我将mysqldump数据库转换为.sql文件。

然后我将此.sql文件传输到我的LIVE环境(Windows Server 2008,4GB RAM和非SSD硬盘)。我将数据库从转储文件恢复到新数据库。

如果我现在在本地机器中执行更新,例如2000行(在A中;在B中插入A中的每行约80),则需要几分钟(最多3个),而如果我在LIVE环境中更新相同的行,则需要大约1.5小时。

为什么会出现这种显着差异?本地和LIVE机器都有相同的内存,规格非常相似......可能是因为我的本地机器有一个SSD硬盘?或者我是否需要在从转储文件恢复它后在LIVE数据库上执行OPTIMIZE / ANALYZE表(或其他任何?)?

提前致谢, 添

1 个答案:

答案 0 :(得分:0)

实际上,使用SSD驱动器可以显着改善服务器的IO操作,有时会在20到100倍之间。

优化表(和/或执行其他软件级调优)可以在许多情况下帮助,在您的特定情况下很难说(表格是否非常分散,是正确使用索引等...),但瓶颈几乎总是硬件。但是你可以尝试一下,但我确信如果你用SSD替换硬盘,最大的区别就会出现。我个人在我的开发者机器上使用英特尔固态硬盘,数据库IO的差异很大。

阅读this文章了解详情。