事务日志通常被隔离在一个单独的卷上。据我了解,这种做法的基本原理是事务日志的数据是按顺序写入的——与随机相比,硬盘驱动器可以以更快的速度顺序执行写入操作。这是由于驱动器内的小针在写入顺序数据块时必须移动更短的距离,而不是随机写入。
(对不起,天真的解释。只是试图理解我所读的内容。)
考虑到这一点……我突然想到固态驱动器内部没有小针和盘片以及在其中移动的东西。如果我的数据库和事务日志都位于八个固态驱动器的单个 RAID 5 上,那么将事务日志移动到自己的单独卷上真的有什么好处吗?如果假设的效率提升是基于顺序写入减少针移动和盘片旋转的距离的前提,并且固态驱动器没有这些移动部件,那么通过隔离日志可以获得什么?
简短的回答,使用单个阵列,将日志与 8 个 SSD 驱动器上的数据分离不太可能带来任何性能提升。有关 SSD的更详细(和有趣)的评论,请参阅SSD 上的 SQL:Hot and Crazy Love 。请特别注意有关 SSD 相关故障的说明。
将日志与 SSD 上的数据分离更多是 RPO(恢复点目标)而不是性能问题。这个概念是您可以通过将日志与数据分开来减少 RPO,这样在数据阵列发生故障时,您的日志阵列应该/可以保持可访问性。如果 RPO 很关键,谨慎的人会考虑在两个阵列中的每个阵列中使用不同的驱动器品牌/型号,以减轻相关的故障问题。
关于总线带宽的评论无关紧要。如果您需要转移这么多的 IO,那么您需要担心更大的问题。
有一个团体同意在 HDD 上分离是有益的,他们仍然声称对于 SSD 驱动器不再需要这样做。
所以对他们来说,我想问“如果没有争用问题,那么为什么要使用 RAID 10?不再需要剥离!所以单独镜像就足够了,当然不需要 8 个驱动器,2x 数据库大小应该足够了!”。
然而现实情况是,如果某些东西需要 RAID 10,那就是日志文件!
这不仅仅是因为顺序与随机的问题(请参阅下面的资源),而且一旦您了解 SSD 驱动器的工作原理,它实际上非常重要。
长话短说(有关更长的描述,请参见 http://arstechnica.com/information-technology/2012/06/inside-the-ssd-revolution-how-solid-state-disks-really-work/), SSD 驱动器在读取和写入零方面非常有效,但是在写入零时效率不高,因为它必须擦除整个部分才能写入一个!
虽然这对于一般写入来说不是问题,因为它们无论如何都在内存中缓冲,并在页面边界中写入,但对于日志文件来说这是一个主要问题,因为日志文件绕过任何缓存,而是 SQL 服务器阻塞,直到日志被写入磁盘!,这意味着对于每次写入可能会有一个完整的部分擦除。
所以为了优化它,我建议将每张额外的磁盘(除了数据库大小的 2 倍,不需要剥离!)用于日志文件,这样它就可以在更短的时间内处理尽可能多的文件。
较早的答案
答案是肯定的,有三个原因。
可靠性 - 所有 SSD 驱动器很有可能同时发生故障,在这种情况下 RAID 没有保护作用,但是由于仅用于顺序的 SSD 驱动器具有不同的使用寿命,这可能是您的救命稻草
写争用 - 将日志放在自己的主轴上的原因不仅是因为随机与顺序,还因为写争用,正如人们可以看到的那样,还建议将 tempdb 放在单独的卷上,这表明这里的问题也是关于写争用的。
这应该更适用于日志文件,因为写入日志会阻止事务被视为已提交,直到将其写入磁盘表面。
事实上,对于日志,您可能会在http://www.dell.com/downloads/global/products/pvaul/en/ssd_vs_hdd_price_and_performance_study.pdf上使用常规 HDD 驱动器作为戴尔的白皮书
编辑
Microsoft 建议将 tempdb 放在自己的阵列上以用于旋转磁盘,请参阅
和许多其他的,这是 Sql Server 中普遍接受的概念,而没有人表示拆分数组有问题。
此外,SQL Server 团队还创建了 Filegroup 和 Partioining 分区的概念,其唯一目的是能够将它们移动到单独的阵列上。
事实上, http: //msdn.microsoft.com/en-us/library/ms187087(v=sql.105)上的 MSDN建议在其自己的数组上分离非聚集索引可能会带来性能优势,(尽管这不应被视为每种情况的一般建议,仅适用于特定工作负载,请参阅http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA上的更多信息-猴子.aspx)。
因此,它只是一个逻辑扩展,说旋转磁盘上的分离原因不仅与顺序读取与随机读取的问题有关,而且与一般写入争用有关,这也适用于 SSD。
虽然可能有些人不同意这个建议,并认为放置 tempdb 和它自己的卷(如 Jack Douglas)没有任何好处,您甚至可能声称分离日志文件没有任何好处(如 Mark Storey -Smith),并声称拆分数组更糟糕,但不要忘记这是一种新方法,违背了微软和社区建议的普遍接受的方法,到目前为止,没有人提供任何链接基准测试来支持它。
所以我对所有反对者说的是,我发现仅仅因为一个帖子的观点与你的不同而反对它是非常不道德的,尤其是当 1)你的观点违背普遍接受的理论 2)并且它反对供应商(微软) 自己的文档 3) 并且您没有提供任何证据,只是一个意见。
但在这种情况下,它就更荒谬了,因为我的帖子只不过是对这一理论的逻辑延伸,所以一个认为这篇文章是床建议的人当然需要回到所有建议这个理论的帖子并否决他们.
假设有人认为 RAID 是老派理论并否决了所有推荐它的帖子,这有什么意义?