你目前正处于脱机状态,正在等待 Internet 重新连接

使用的每个数据库管理员应该知道的 SQL Server 的磁盘驱动器缓存信息

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 234656
概要
数据库系统首当其冲地是负责着准确存储和检索数据,甚至出现了意外的系统故障。

系统必须保证原子性和持久性的事务,同时还要考虑当前的执行、 多个事务和各种的故障点。这通常称为 ACID (原子性、 一致性、 隔离,性和持久性) 属性。

本文介绍了磁盘驱动器的含义,将缓存。建议您阅读以下文章 Microsoft 知识库中的文章进行缓存的进一步澄清和备用故障模式的论述:
86903 SQL Server 和缓存磁盘控制器
230785 SQL Server 7.0 和 SQL Server 2000年的记录和数据存储算法扩展数据的可靠性
此外建议使用以下文档: 注意:这些两个文档适用于所有当前支持的 SQL Server 版本。
更多信息
Microsoft SQL 服务器和市场上的许多主流数据库产品目前使用预写日志记录 (WAL) 协议。
预写日志记录 (WAL) 协议
术语协议是极好的方法来描述 WAL。它是特定和组定义的实现步骤需要确保数据存储和交换正确和到一个已知状态出现故障时可以恢复。就像网络包含定义的协议,以便以一致的和受保护的方式,交换数据太 WAL 描述了协议,以保护数据。
所有版本的 SQL Server 都打开使用 Win32 CreateFile函数的日志和数据文件。DwFlagsAndAttributes成员包括打开 SQL Server 时的FILE_FLAG_WRITE_THROUGH选项。
FILE_FLAG_WRITE_THROUGH
此选项指示系统通过任何中间缓存写入并直接转到磁盘。系统仍然可以缓存写入操作,但无法惰性刷新它们。

FILE_FLAG_WRITE_THROUGH 选项确保写操作返回成功完成正确稳定存储器中存储数据。这将与编写提前记录 (WAL) 协议规范,以确保数据对齐。
许多磁盘驱动器 (SATA ATA、 SCSI 和 IDE 基于) 包含板载缓存,512 KB,1 mb 或更多。驱动器缓存通常依赖于电容器,而不是电池供电的解决方案。这些缓存机制无法保证写入在电源重启或类似故障点。它们只能保证扇区的写入操作的完成。随着驱动器大小的增长,缓存会变得更大,并且它们可以在故障期间公开更多的数据。

增强的缓存控制器系统禁用磁盘缓存,并备有电池的缓存解决方案提供的功能。这些缓存可以几天内维护缓存中的数据,并甚至允许放在另一台计算机将缓存卡。当电源恢复正常时,未写入的数据被完全刷新才允许访问任何其他数据。其中许多是与写缓存以获得最佳性能建立允许读取的百分比。某些包含较大的内存存储区。事实上,非常具体的市场段,某些硬件供应商提供电池供电的高端磁盘缓存系统具有多个千兆字节的高速缓存。这些可以显著提高数据库的性能。

不使用缓存的情况下执行的 I/O 传输可能会非常长硬盘旋转速率,由于移动驱动器磁头和其他限制因素所需的机械时间。针对 SQL Server 安装提供缓存控制器的系统。这些控制器禁用磁盘上缓存,并提供了稳定的媒体缓存满足 SQL Server I/O 要求。它们避免磁盘搜索和使用各种优化缓存控制器写入时间与相关的性能问题。

有许多类型的子系统实现。RAID 和 SAN 是这些类型的子系统实现的两个示例。这些系统通常在构建时都基于 SCSI 驱动器。有几个原因。下面一节概述了高级驱动器注意事项。

SCSI 驱动器:
  • 通常用于重型制造。
  • 通常面向多用户、 服务器-basedimplementations。
  • 通常有更好平均无故障时间比 otherimplementations。
  • 包含复杂的启发式技术以帮助预测 imminentfailures。
其他驱动器实现,如 IDE、 ATA 和 SATA):
  • 通常为轻微和中等程度的 dutyuse 制造。
  • 通常在单个用户的 basedapplications 为目标。
  • 一些较新的实现包含复杂的 heuristicsto 帮助预测紧急故障。
非 SCSI、 基于桌面的控制器所需的多个主处理器 (CPU) 带宽,并常常受单个活动的命令。例如,当一个非 SCSI 驱动器正在调整坏块,驱动器需要主机命令等待。ATA 总线提供了另一个例子。ATA 总线支持 2 台设备,但只能有一个命令可以处于活动状态。这使一个驱动器空闲,而另一个驱动器服务挂起命令。台式机技术构建的 raid 系统,可能会遇到这些症状,并极大地受到慢的响应方。除非这些系统使用高级的设计,其性能不会尽可能高效的基于 SCSI 的系统性能。

在这情况下的基于桌面的驱动器或阵列是一个适当的低成本解决方案。例如,如果您设置了只读的数据库进行报告,则不应将许多 OLTP 数据库的性能因素出现,当磁盘缓存将被禁用。

驱动器大小在继续增加。低成本、 高容量的驱动器可以非常吸引人。但是,在 SQL Server 和业务响应时间需求配置驱动器时,您应仔细考虑以下问题:
  • 访问路径设计
  • 要禁用磁盘缓存的要求
下表提供了高级别注释。注释信息基于常见的制造配置。

驱动器类型系统基础注释
IDE 和 ATA
  • 转速 7200 RPM。
  • 以台式机和一个 userapplications 的目标。
  • 默认情况下,启用磁盘高速缓存。使用 DiskProperties,硬件选项卡来访问属性,为控制磁盘缓存设置策略选项卡。

    注意:某些驱动器不遵守此设置。这些驱动器需要具体制造商实用程序禁用缓存。
  • 为 SQL Server 中使用 thedrive,应禁用磁盘缓存。
  • IDE 和基于 ATA 的系统可以推迟执行活动,例如坏块调整主机 commandswhen。这可能会导致 I/O 活动停止的 toperiods。
IDE/笔记本电脑
  • 转速 5200 RPM。
  • 以便携式计算机为目标。
  • 请参见 IDE 和 ATA 的部分中的其他注释。
  • ReadyDrive 和 NAND 闪存存储可能提供 stableI/O 功能。
SATA
  • 转速 7200 RPM。
  • 以台式机和中等的 rangeservers 的目标。
  • 默认情况下,启用磁盘高速缓存。使用 DiskProperties,硬件选项卡来访问属性,为控制磁盘缓存设置策略选项卡。

    注意:某些驱动器不遵守此设置。这些驱动器需要具体制造商实用程序禁用缓存。
  • 更大的存储容量和较大缓存比 IDEand ATA 计数器部件。
  • 为 SQL Server 中使用 thedrive,应禁用磁盘缓存。
  • 小型连接和互连。
  • 简单互连使用串行连接 SCSI (SAS) 驱动器和安装。
  • 一些包括故障 predictionconstructs。
SCSI
  • 旋转在 10000 和 15000 RPM。
  • 为服务器和 multiuserapplications 设计。
  • 设计用于重度负载循环和 decreasedfailure 率。
  • 默认情况下,启用磁盘高速缓存。使用 DiskProperties,硬件选项卡来访问属性,为控制磁盘缓存设置策略选项卡。

    注意:某些驱动器不遵守此设置。这些驱动器需要具体制造商实用程序禁用缓存。
  • 为 SQL Server 中使用 thedrive,应禁用磁盘缓存。
  • 阵列和 SAN 系统通常使用较小的 cablingand 互连。
  • 包括故障预测结构。
串行连接 SCSI (SAS) 包含多达 256 层高级排队。SAS 还包括功能,如队列顺序队列的头部。SAS 底板的设计中可以使用 SAS 和 SATA 驱动器在同一系统内的一种方式。SAS 设计的好处是显而易见的。

在禁用磁盘缓存并提供稳定的 I/O 高速缓存控制器的能力取决于您的 SQL Server 安装。向各种磁盘写入顺序的数据就不会妨碍到 SQL Server,只要控制器提供正确稳定的媒体缓存功能。控制器设计的复杂性会增加与高级的数据安全技术 (如镜像。

要全面保护数据,您应该确保正确处理所有数据缓存。在许多情况下,这意味着您必须禁用写缓存的磁盘驱动器。

请注意确保任何替代的缓存机制可以正确地处理多种类型的故障。

Microsoft 已执行了在使用 SQLIOSim 实用程序的多个 SCSI 和 IDE 驱动器上进行测试。此实用程序模拟了繁重的异步读/写活动到模拟的数据设备和日志设备。测试性能统计显示每秒 50 和 70 之间具有禁用的写入缓存的驱动器和 5200 和 7200 RPM 之间的平均写入操作。

有关其他信息以及有关 SQLIOSim 的详细信息,请参阅以下文章 Microsoft 知识库中相应的文章:
231619如何使用 SQLIOSim 实用程序来模拟在磁盘子系统上的 SQL Server 活动
许多 PC 制造商 (例如,康柏、 戴尔、 网关或 HP) 排序禁用写入缓存的驱动器。但是,测试表明这不会总是这种情况应始终使其测试完全。

注意:如果您有任何疑问的缓存状态的磁盘驱动器,请与制造商联系,获取合适的实用工具或跳线设置以禁用写入缓存操作。
参考
有关 SQL Server I/O 要求的完整详细信息,请访问下面的 Microsoft Web 站点: http://www.microsoft.com/sql/alwayson/overview.mspx
SQL Server 要求系统,以支持 Microsoft SQL Server Always-On 存储解决方案审查计划下所述的有保证的交付,以稳定的媒体。 有关 SQL Server 数据库引擎的输入和输出要求的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
967576 Microsoft SQL Server 数据库引擎输入/输出的要求
cacheing cach 缓存

警告:本文已自动翻译

属性

文章 ID:234656 - 上次审阅时间:05/01/2015 21:31:00 - 修订版本: 1.0

Microsoft SQL Server 7.0 标准版, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 标准版, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard

  • kbinfo kbmt KB234656 KbMtzh
反馈