在 SSD 上导入大量 MySQL 数据会损坏它吗?

chr*_*etd 28 performance ssd hard-drive mysql

我必须将大量数据(约 1 亿行,约 100 次)导入 MySQL 数据库。目前,它存储在我的硬盘驱动器上,我导入的瓶颈似乎是硬盘驱动器的写入速度。

我听说 SSD 不喜欢大量连续写入,而且它往往会损坏它们。你怎么认为?这真的是现代 SSD 的问题吗?

Aus*_*nch 28

这真的不是一个直接的答案。

SSD 不像任何特定扇区被覆盖的次数那样关心连续写入。当 SSD 首次出现时,SQL 之类的东西是一个坏词,因为操作系统通常将驱动器视为传统 HDD,并且故障非常频繁。

从那时起,驱动器变得更大、更便宜、更可靠,意味着更多的读/写,操作系统也变得更智能。

SQL 中的 SSD 不仅很常见,而且经常受到鼓励。请随意阅读DBA 姊妹网站

我的想法是这样做,假设 SQL 服务器是用冗余磁盘正确构建的。如果没有,那么无论如何最终都会失败。

  • “如果没有,那么无论如何最终都会失败。” 如果服务器*确实*使用冗余磁盘,仍然肯定会在某个时候出现故障,并为此做好计划。只是有了冗余,单个存储设备故障导致系统停机的可能性要低得多。 (5认同)

Ctr*_*dlt 19

读取很好,SSD 可以读取其位而不会产生任何不利影响。

写是另一回事。清除位会影响该位的完整性,并且在大量顺序写入之后,该位将完全停止接受新的写入。但是它仍然可以读取。

我只想说,新企业驱动器的写入限制是巨大的。以三星的新款 845DC Pro 为例。每天 10 次驱动器写入,保修 5 年。我想它会做两倍的数字。将其转化为数字,即 800 GB 型号在 5 年内写入了 14,600 TB。
或者每年 2920 TB,
或者每天 8 TB,持续五年

给我看一个保修期涵盖这么多用途的硬盘驱动器。我什至不确定你可以在一天内将 8 TB 写入 HDD:-(50 MB/s 平均吞吐量 * 60(秒)* 60(分钟)* 24(小时)= 4,320,000 MB/天 = 4.32 TB/天)事实证明你不能(在平均驱动器上)。

只要您使用这样的驱动器,基于 V-NAND(或同样耐用的 SLC),而不是基于 TLC 或坏 MLC 闪存的驱动器,您应该没问题。无论如何,RAID 10和备份是您的朋友,这是有原因的。至少如果 SSD 写入限制确实成为问题,您仍然可以读取存储在故障位中的数据。

SSD 运行起来也更便宜、更凉爽、更安静,而且企业型号特别能抵抗电源问题。不再担心崩溃,当然,您的数据库访问需求也将获得巨大的性能提升。

  • 我可以问为什么downvote? (12认同)

Jam*_*rtz 12

写入 SSD 不一定是坏事。糟糕的是单个块的写入和重写。意思是如果你写一个文件,删除它然后再写一次,或者一遍又一遍地对文件进行少量更改。这会导致 SSD 磨损。数据库肯定属于这一类。

然而,根据这篇文章,数 PB 的数据已经写入 SSD 并且仍然可以运行。这可能是由于磨损均衡的进步:

磨损均衡尝试通过排列数据来解决这些限制,以便擦除和重写在介质上均匀分布。通过这种方式,不会因为写入周期的高度集中而导致单个擦除块过早失效。

在您的特定情况下,我会将数据库驻留在 SSD 上以提高速度,但每天进行备份。您也可以考虑在RAID 1阵列中安装两个 SSD 。两个 SSD 同时发生故障的可能性很低。

注意:RAID 阵列不是备份!!!!无论您是否使用 RAID 阵列,都有一个备份。无论您是否使用 SSD,都要进行备份。