【问题标题】:MySQL MyISAM - Insert takes much longer on LIVE environment than locallyMySQL MyISAM - 在 LIVE 环境中插入比在本地需要更长的时间
【发布时间】: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


【解决方案1】:

确实,使用 SSD 驱动器可以显着提高服务器的 IO 操作,有时在 20 到 100 倍之间。

优化表(和/或执行其他软件级别的调整)可以在许多情况下有所帮助,在您的特定情况下很难说(表是否非常分散,是正确使用索引等...),但瓶颈几乎始终是硬件。但是您可以进行试验,但我相信如果您将 HDD 替换为 SSD,将会产生最大的不同。我个人在我的开发机器上使用 Intel SSD,数据库 IO 的差异很大。

阅读this文章了解更多详情。

【讨论】:

  • 非常感谢!我会考虑更换磁盘。
  • 但是,我已经读到,将 SSD 用于数据库服务器并不是一个好主意...因为它会很快磨损...
  • 这取决于很多因素,阅读上面的文章,他们测试了许多不同的设备,确实选择合适的设备很重要。
猜你喜欢
  • 2020-06-30
  • 2014-02-22
  • 1970-01-01
  • 2012-01-13
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多