Select the product you need help with
每个数据库管理员都应了解的在 SQL Server 中使用磁盘驱动器缓存的说明文章编号: 234656 - 查看本文应用于的产品 概要 数据库系统首当其冲地担负着准确存储和检索数据的重任,即便出现了意外的系统故障也是如此。 系统必须保证事务的原子性和持久性,同时还要考虑当前的执行操作、多个事务以及各个故障点。这通常称为 ACID(原子性、一致性、隔离性和持久性)属性。 本文讲述磁盘驱动器缓存的含义。建议您阅读 Microsoft 知识库中的以下文章,以获得有关缓存的进一步说明以及替代故障模式的论述: 86903
(http://support.microsoft.com/kb/86903/
)
在 SQL Server 中缓存磁盘控制器的说明
46091
(http://support.microsoft.com/kb/46091/
)
将硬盘控制器缓存与 SQL Server 一起使用
230785 还建议阅读以下文档:
(http://support.microsoft.com/kb/230785/
)
SQL Server 7.0、SQL Server 2000 和 SQL Server 2005 的日志记录和数据存储算法扩展了数据的可靠性
更多信息 Microsoft SQL Server 2005、SQL Server 2000、SQL Server
7.0、早期版本的 SQL Server 以及当今市面上许多主流数据库产品均使用预写式日志 (WAL) 协议。 预写式日志 (WAL) 协议 所有版本的 SQL Server 均使用 Win32 CreateFile 函数打开日志和数据文件。在通过 SQL Server 打开 dwFlagsAndAttributes 成员时,该成员包括 FILE_FLAG_WRITE_THROUGH 选项。 术语协议是描述 WAL 的一种极佳的方式。它是定义的一组特定实现步骤,为确保正确存储和交换数据并可在出现故障时将数据恢复为已知状态,必须执行这些步骤。正如网络包含定义的协议以通过受保护的统一方式交换数据一样,WAL 描述了此协议以保护数据。 FILE_FLAG_WRITE_THROUGH 许多磁盘驱动器(基于 SATA、ATA、SCSI 和 IDE)包含 512
KB、1 MB 或更大的板载缓存。但是,驱动器缓存通常依赖于电容器,而不依赖于通过电池提供支持的解决方案。这些缓存机制无法保证能够在电源周期或类似故障点完成写入操作。它们只保证能够完成扇区写入操作。随着驱动器大小的不断增加,缓存也变得越来越大,并且在故障期间可能会影响更大量的数据。
此选项指示系统写入任何中间缓存并直接转到磁盘。系统仍然可以缓存写入操作,但是无法对它们进行缓慢转储清除。 FILE_FLAG_WRITE_THROUGH 选项确保在写入操作返回成功完成信号时,正确地将数据存储在稳定的存储中。此选项与预写式日志 (WAL) 协议规范一起,共同为数据提供了保障。 增强型缓存控制器系统可禁用磁盘缓存并提供通过电池提供支持的有效的缓存解决方案。这些缓存解决方案可以将数据在缓存中保留数天,甚至还允许将缓存卡放置在另一台计算机上。当电力完全恢复时,将会先对未写入的数据进行完全的转储清除,然后才允许访问任何其他数据。其中的许多缓存解决方案允许建立读写百分比缓存以获得最佳性能。有些包含很大的内存存储区域。事实上,某些硬件供应商为市场中非常特定的部分群体提供带有好几 GB 缓存的通过电池提供支持的高端磁盘缓存系统。这些磁盘缓存系统可以显著提高数据库性能。 由于硬盘旋转速率、移动驱动器头所需的机械时间以及其他限制因素,不使用缓存执行 I/O 传输的时间会明显增加。SQL Server 安装以提供缓存控制器的系统为目标。这些控制器会禁用磁盘缓存并提供稳定的媒体缓存来满足 SQL Server I/O 要求。它们使用缓存控制器的各种优化方法,避免了与磁盘搜索和写入次数相关的性能问题。 有多种类型的子系统实现。RAID 和 SAN 是这些类型子系统实现的两个示例。这些系统通常是使用基于 SCSI 的驱动器构建的。出现此情况有多种原因。下一节概述了高级驱动器注意事项。 SCSI 驱动器:
在某些情况下,基于台式机的驱动器或阵列会是一个适当的低成本解决方案。例如,如果设置一个只读数据库进行报告,则在禁用磁盘缓存时不会遇到 OLTP 数据库的多个性能因素。 驱动器大小在继续增加。低成本、高容量的驱动器可能会非常吸引人。但是,如果为 SQL Server 和业务响应时间需求配置驱动器,则应谨慎考虑以下问题:
收起该表格
SQL Server 安装依赖于控制器禁用磁盘缓存并提供稳定 I/O 缓存的功能。只要控制器提供正确稳定的媒体缓存功能,将数据散乱地写入各个磁盘就不会妨碍 SQL Server。随着高级数据安全技术(如镜像)的采用,控制器设计会越来越复杂。 要全面保护数据,您应该确保正确处理所有数据缓存。在许多情况下,这意味着您必须禁用磁盘驱动器的写入缓存。 注意:应确保任何替代缓存机制均可以正确处理多种类型的故障。 Microsoft 已使用 SQLIOStress 实用工具对一些 SCSI 和 IDE 驱动器进行了测试。该实用工具针对模拟数据设备和日志设备模拟大规模异步读/写活动。测试性能统计数据显示,对于禁用了写入缓存且 RPM 范围在 5,200 和 7,200 之间的驱动器,每秒钟的平均写入操作次数在 50 到 70 次之间。 有关 SQLIOStress 的附加信息和详细内容,请参见 Microsoft 知识库中的以下文章: 231619 许多 PC 制造商(例如,Compaq、Dell、Gateway 或
HP)均订购禁用了写入缓存的驱动器。但是,测试表明,情况可能并不总是这样的,因此您应该始终对它进行全面测试。
(http://support.microsoft.com/kb/231619/
)
如何使用 SQLIOSim 实用工具在磁盘子系统上模拟 SQL Server 活动
注意:如果有关于磁盘驱动器缓存状态的任何问题,请联系制造商并获得正确的实用工具或跳线设置以禁用写入缓存操作。 参考有关 SQL Server I/O 要求的完整详细信息,请访问下面的 Microsoft 网站:http://www.microsoft.com/sql/AlwaysOn
(http://www.microsoft.com/sql/AlwaysOn)
属性文章编号: 234656 - 最后修改: 2007年9月4日 - 修订: 3.3 这篇文章中的信息适用于:
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。 | 文章翻译
|


回到顶端








