【发布时间】:2014-05-10 15:17:02
【问题描述】:
我有一个包含大约 500 万行的 MyISAM 表(称为 A),以及一个包含大约 2 亿行的相关 MyISAM 表 B(在主键上连接到 A)。表 A 有大约 12 个字段,主要是 varchar,而表 B 包含 2 个整数字段。
我最初在我的 Windows 8 机器(4GB RAM - SSD 硬盘)上通过运行将行插入块中的脚本在本地创建了这些表。然后我 mysqldump'ed 数据库到一个 .sql 文件。
然后我将此 .sql 文件传输到我的 LIVE 环境(Windows Server 2008、4GB RAM 和非 SSD 硬盘)。我将数据库从转储文件恢复到新数据库。
如果我现在在本地机器上执行更新,比如说,2000 行(在 A 中;对于插入 A 中的每一行,在 B 中大约 80 行),这需要几分钟(最多 3 分钟),而如果我在 LIVE 环境中更新相同的行,大约需要 1.5 小时。
为什么会有这种显着差异?本地机器和 LIVE 机器都具有相同的内存,并且规格非常相似......这可能是因为我的本地机器有一个 SSD 硬盘驱动器吗?还是在从转储文件恢复 LIVE 数据库后,我是否需要在 LIVE 数据库上执行 OPTIMIZE/ANALYZE 表(或其他任何事情?)?
提前致谢, 蒂姆
【问题讨论】:
-
确实,使用SSD驱动器可以显着提升服务器的IO操作,相比标准机械硬盘驱动器,有时提升20到100倍。
-
谢谢 bodi0...所以你认为这是唯一的原因吗?即从mysqldump恢复后不需要优化/分析表?
标签: mysql performance insert myisam