MyISAM .MYD文件的速度非常慢

时间:2016-03-24 18:59:48

标签: windows performance copy ssd

我们注意到我们的一些MyISAM .MYD文件(MySQL数据库库表)复制速度极慢。 C:驱动器和D:驱动器都是SSD;理论上的限制是500MB /秒的数据速率。对于时间,我们关闭MySQL服务。以下是带有6GB的文件test.myd的一些示例时间:

NET STOP MYSQL56
Step1: COPY D:\MySQL_Data\test.myd C:\Temp      --> 61MB / sec copy speed
Step2: COPY C:\Temp\test.myd D:\temp            --> 463 MB / sec
Step3: COPY D:\Temp\test.myd c:\temp\test1.myd  --> 92 MB / sec

奇怪的结果;为什么一个方向的速度与另一个方向如此不同? 我们试试这个:

NET START MYSQL56
in MySQL: REPAIR TABLE test; (took about 6 minutes)
NET STOP MYSQL56
Step4: COPY D:\MySQL_Data\test.myd C:\Temp      --> 463 MB / sec
Step5: COPY C:\Temp\test.myd D:\temp            --> 463 MB / sec
Step6: COPY D:\Temp\test.myd c:\temp\test1.myd  --> 451 MB / sec
  • 有人可以解释复印速度的差异吗?
  • 首先可能导致复制速度慢的原因是什么?
  • REPAIR会有什么影响,但我们尝试过的OPTIMIZE 首先,没有什么区别。
  • 在SQL级别上是否会出现任何类型的性能损失 初始版本(即在REPAIR之前)?对不起,我没有测试过 在运行这些测试之前。

1 个答案:

答案 0 :(得分:0)

  • REPAIR会扫描表格并修复找到的问题。这意味着该表已完全读取。

  • OPTIMIZE复制整个表格,然后RENAMEs将其复制回原来的名称。结果就好像读了整个表一样。

  • COPY读取一个文件并写入另一个文件。如果目标文件不存在,则必须创建它;这是Windows上的一个缓慢过程。

  • 读取文件时,数据从磁盘(在您的情况下为SSD)中提取并缓存在RAM中。第二次阅读将使用缓存的副本,从而更快。

最后一个项目可以解释您找到的差异。

另一种可能性是"磨损均衡"和/或"擦写前写" - SSD的两个属性。

磨损均衡是指SSD移动物体以避免过多的磨损"。请注意,SSD块"磨损"在N写入之后。通过移动块,可以避免这种物理缺陷。 (这是企业级固态硬盘的一项功能,但在廉价硬盘上可能会丢失。)

在SSD上发生写入之前,必须首先擦除该地点"。这一额外步骤只是SSD工作方式的物理要求。我怀疑它是否会影响你的问题,但它可能会。

我正在删除[mysql]和[myisam]标签,因为这个问题实际上只适用于带有Windows和SSD的文件COPY。