.mdf 与 .ldf 性能注意事项

Han*_*ank 5 performance sql-server

我刚刚从这个问题的答案中了解到,SQL Server 使用的.mdf.ldf文件是数据库的重要对。我以前认为 .ldf 只是用于备份或审计的非关键日志。

无论如何,我们的服务器现在.mdf在一个 SSD 上和在.ldfWindows 的主 HDD 上。我这样设置是因为我认为这.mdf是对性能最关键的文件位置。

但是现在看来 the.ldf实际上是在发生 an 时首先写入数据UPDATE,然后再.mdf写入the 。

我应该将两个文件都放在 SSD 上吗?或者如果它们在不同的驱动器上会更好,即使其中一个是硬盘驱动器?(如果是这样,哪个文件应该放在哪里?)

如果它有所作为,SELECT性能对我来说比UPDATE.

db2*_*db2 5

这些是数据 (mdf) 和日志 (ldf) 文件的一般规则:

  1. 调整您的 mdf 文件以实现 64 KB 块中的随机读/写访问。
  2. 调整 ldf 文件以实现 64 KB 块中的顺序写入访问。

由于 mdf 文件是随机访问的,而日志文件是按顺序访问的,如果日志与其他经常访问的数据共享磁盘,您会看到写入性能大幅下降。这主要是因为等待磁头在磁盘周围寻找所花费的时间。显然,对于 SSD,您没有这种寻道惩罚,但磁盘仍然需要考虑最大写入吞吐量。

在数据仓库/OLAP 类型的服务器中,这可能不是问题,因为大多数日常使用可能是只读的,并且 ETL 批处理可能会在非高峰时间运行。数据文件和日志文件可能不会相互竞争。

因此,这个故事的寓意是,如果您对数据库的写入性能不满意,我建议将日志移动到具有更高顺序写入吞吐量的专用卷。通常,这意味着使用带有传统旋转磁盘(而非 SSD)的 RAID10 卷。您使用的磁盘越多,速度就越快。不要将 RAID5 用于日志,因为写入性能通常很差,除非您的阵列控制器有足够大的缓存来掩盖影响。

  • @RoKa 真的很难说,没有测试那台特定的机器。如果 SSD 已经接近峰值,那么该卷上的日志实际上可能具有更高的延迟。但是如果服务器有足够的 RAM 来将数据文件 I/O 保持在最低限度,那么它可能是一个不错的选择。 (2认同)