我们在生产数据库中使用的是FusionIO卡。我们在同一驱动器上有事务日志和数据库文件。我知道建议将tlog文件放在单独的物理驱动器上,但是考虑到FusionIO卡上的I/O要好得多,那么将tlog移动到磁盘驱动器会造成瓶颈吗?
据我所知,tlogs是按顺序写入的(建议移动它们的原因)。但是,如果两个驱动器之间的IO差异很大,就像传统驱动器和FusionIO卡之间的差异一样,我还会看到将日志转移到不同驱动器的好处吗?还是表现会更差?
我之所以问这个问题,是因为我们没有足够的空间在同一个驱动器上,如果我们可以为tlogs使用一个更便宜的驱动器阵列,而不是为tlogs购买一个单独的FusionIO卡,那就太好了。
背景:
数据库是一个典型的基于web的工作负载,其读取量比写入量大得多--但当写入发生时,会有大量的写入操作。例如,用户可以上传包含10,000或更多记录的多个文件。
发布于 2012-12-11 17:31:28
让我们来看看其中的一些要点。你提到:
据我所知,tlogs是按顺序写入的(建议移动它们的原因)。
这也是为了恢复
将事务文件移动到不同的数组不仅是为了性能,也是为了恢复能力。假设您在下午3:45进行事务日志文件备份,而Fudion IO磁盘在下一次事务日志备份之前的下午3:55分出现故障。如果您的数据和日志文件位于崩溃后无法进入的同一驱动器上,则进行最终事务日志备份,从而确保几乎不会丢失数据(当然,在飞行事务中仍然会丢失数据)。
据我所知,tlogs是按顺序写入的(建议移动它们的原因)。但是,如果两个驱动器之间的IO差异很大,就像传统驱动器和FusionIO卡之间的差异一样,我还会看到将日志转移到不同驱动器的好处吗?还是表现会更差?
如果没有适当的基准测试,您很可能会因为将日志文件与闪电般的快速PCI-E FusionIO卡隔离,并将它们移动到带有磁盘的SAS6 RAID阵列中而丧失性能。通常,将日志文件移动到不同的数组也会提高性能,但在您的情况下,它可能会降低性能。
在将日志文件移到上面之后,您应该测量以下perfmon计数器:
磁盘SEC/写
磁盘SEC/READ
如果日志文件上的磁盘SEC/WRITE超过5MS,那么它就超出了MS建议的范围。然而,如果你的应用程序没有写的性能问题,就盯着那个计数器,这样你就不会措手不及了。
此外,事务日志在本质上是连续的,但是当您对它们进行RAID或在驱动器上放置超过1个已访问的文件时,物理IO就不再是连续的,因此在传统磁盘上失去了性能。我所测试的所有FusionIO驱动器在顺序读写方面都表现得更好,但随机IO就足够了。
接下来你要提到:
该数据库是一种典型的基于web的工作负载,其读取量比写入量大得多。
通常,大多数应用程序的读强度要比写强得多,这就是为什么常用的SQL Server基准测试工具使用8KIOS@--大约70%的读/ 30%的写--所以设置的一部分是相当常见的。
例如,用户可以上传包含10,000或更多记录的多个文件。如果您的写入没有通过移动到新磁盘而减慢,那么很好,但是如果您有缩放问题,则应该查看批量加载。这将使日志活动最小化。
在测试系统中进行真实的基准测试是我个人进行测试的唯一途径。我会用生产工作负载重新加载测试系统,并通过在Server和perfmon中记录指标来查看驱动器是如何处理的,然后做出决定。祝好运。
发布于 2012-12-11 17:23:31
我对这个问题有几点想法:
1.)通常,出于以下几个原因,您应该将t日志和数据文件分开。其中之一是性能-They具有不同的特性和写入模式/读取模式。另一个原因是可恢复性--如果您的数据文件发生了某些事情,但是您的日志文件保持完整,那么您可以选择恢复,同时尽量减少数据丢失,而如果您也丢失了日志文件,则不会发生这种情况。如果您丢失了日志,但有MDF文件(没有那么整洁),您也可以选择。如果您的恢复需要定期的日志备份,希望您能够定期进行日志备份。
关于性能的注意--正如在他的评论中指出的那样,性能方面的关注通常在FusionIO上不那么重要。在某些情况下可能仍然如此,但通常不会。对于可收回性的担忧仍然是肯定的。这种性能问题之所以需要考虑,是因为在规划文件去向和决定关于日志和数据文件的“要拆分还是不拆分”问题时,这是您应该考虑的过程之一。它比最近要复杂得多--例如,许多SAN解决方案给了你一大块磁盘,而且你和其他人都在同一个物理驱动器上。说到底,性能问题归结为“我们所拥有的存储是否能够处理我们给它的工作负载?”如果可以的话,从性能的角度来看是可以的。如果它不能,那么它是不够的。
2.)是什么导致了太空问题?你的数据文件在增长吗?你的日志文件?我相信,正如本问题所讨论的那样,您正在正确地管理事务日志大小,而且随着您的增长,这只是预期的数据增长。
3.)不要在你的原木驱动器上便宜。您可能不需要使用FusionIO,而且您的系统可能有很多读取,但是您是否使用用户连接和活动来记录任何内容呢?任何写操作都必须先通过事务日志,这与提交是同步的。换句话说,在确认事务在日志文件中之前,事务是不会完成的。这意味着您希望事务日志写入速度快,否则事务可能会受到影响。我会看大图,尝试数组,但是如果您需要良好的日志性能,就不要在它上便宜--而且我还没有遇到一个不喜欢良好日志性能的环境。
https://dba.stackexchange.com/questions/30192
复制相似问题