评估 SQL Server 与第三方文件缓存系统时,需要考虑的关键因素

文章翻译 文章翻译
文章编号: 917043 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文概要介绍的一些主要因素客户时应注意的评估第三方文件缓存系统。

第三方文件缓存实现可能会增加 Microsoft SQL Server 数据库正确实现时的性能。特定实现,但是和这些产品的配置可能会留下 SQL Server 数据库的数据丢失的高风险。 客户应完全测试配置以确保正确的数据完整性。

本文档包括 URL 和其他的 Internet Web 站点引用中的信息有可能更改,恕不另行通知。 除非另行说明公司、 机构、 产品、 域名、 电子邮件地址、 徽标,人物、 地点,和本文档示例中所描述的事件均属虚构。 与任何真实的公司、 组织、 产品、 域名、 电子邮件地址、 徽标、 人员、 位置或事件没有意指,也应进行这方面的推断。 遵守所有适用的版权法是用户的责任。 不限制版权权利,此文档的任何部分可能复制、 存储中或引入到一个检索系统或以任何形式或借助任何手段 (电子、 机械、 影印、 录制,或其他) 或出于任何目的,未经 Microsoft corporation 明确的书面许可。

Microsoft 可能拥有专利、 专利申请、 商标、 版权或其他知识产权,本文档中涉及的主题。 除非明确规定,否则 Microsoft 的任何书面的许可协议中,否则拥有本文档不授予您任何许可证到这些专利、 商标、 版权或其他知识产权。

(c) 2006 Microsoft 公司。保留的所有权利。

Microsoft、 Windows、 Windows Server 和 SQL Server 是注册的商标或商标 Microsoft 公司在美国和/或其他国家或地区。

本文专为 SQL Server,但通常适用于所使用的 Active Directory 和 Exchange 服务器产品还在 Jet 数据库。

更多信息

本节概述了要求,并在部署任何解决方案之前应完全讨论的详细的示例提供第三方供应商。客户应该也要进行测试以确保正确维护数据完整性的各种恢复方案的特别小心。

输入/输出 (I/O) 需求的 SQL Server

任何 SQL Server 数据库备份文件需要支持预写日志记录 (WAL) 协议的存储基础知识。下面的文章中概述了这些基础知识:
SQL Server 2000 I/O 基础知识
http://technet.microsoft.com/en-us/library/cc966500.aspx
注意文章也适用于 SQL Server 2005 中。
230785SQL Server 7.0、 SQL Server 2000 和 SQL Server 2005 日志记录和数据存储算法扩展数据可靠性
以下是一些重要的要求的列表:
  • 必须维护的写入顺序。
  • 必须维护相关的写入操作的一致性。
  • 在稳定的媒体或,必须始终可以安全写操作。
  • 数据被破坏的 I/O 预防必须发生。

合作伙伴产品认证不兼容性或 $ 安全保证

第三方产品或特定供应商可以接收 Microsoft 徽标认证。但是,合作伙伴证书或 $ 一个特定的 Microsoft 徽标不会不验证兼容性或针对特定用途的适用性 SQL Server、 Exchange 服务器或 ds。

FILE_FLAG_WRITETHROUGH 和 FILE_FLAG_NO_BUFFERING

Microsoft 数据库产品专门写通过和没有缓冲的标志当打开时,使用数据库文件以防止数据丢失。 这些文件的任何写请求必须可以安全地稳定的媒体。否则,可能发生数据丢失。 下面列出了文件系统缓存可能会公开的特定示例:
  • 写入合并和 $ 写重新排序
    若要减少物理 I/O 请求,非电池基于的缓存,通常组合,并重新排列立即断开 WAL 协议要求的写操作。
  • i/o 的块大小
    类似于写组合和重新排序是块大小 i/o。在高速缓存将尝试完成 i/o 基于 I/O 路径块大小。再次,这可以提供的性能提升,但打开数据库,以破坏并立即断开 WAL 协议要求。

谈话要点和示例

以下部分提供了密钥的示例和相关数据的完整性和安全性的谈话点。它作为一个常见故障和清晰度,使用电源故障,但这通常可以替换与各种其他类似数据库完整性问题导致的问题。

示例 1: 数据丢失和物理或逻辑损坏

请考虑以下情形:
  1. 日志记录是在数据库中的页 100 为而编写的。
  2. 日志记录都存储在基于非电池的高速缓存,但数据库引擎被告知日志写入已完成"安全到稳定的媒体"。
  3. 数据库引擎认为 LSN 强化和问题 100 页的写入。
  4. 页面 100 也保存在非电池基于高速缓存中。
  5. 提交事务完成,而不会出现错误。
如果它成功提交到稳定的媒体的写操作,数据库引擎将继续处理。电源中断此位置但是,将导致立即数据丢失因为外部非电池已备份缓存永远不会实际存在所做的更改。因为故障恢复不了解丢失的日志记录并不会试图重做工作,故障恢复不表示错误。多个对象修改方案 (如主键、 外键插入) 展开上各种类型的数据库损坏可能发生的。

有各种其他出现问题,有很小的更改来缓存处理 i/o 的方式。简要派生假定该事务已回滚,但页面 100 进行到物理介质。故障恢复再次不知道关于日志记录 (永远不会变得稳定的媒体),这样页面 100 将不接收在故障恢复,离开逻辑和物理上可能已损坏的数据库的过程中的撤消操作。

示例 2: 可疑数据库

某些供应商允许"可选出的文件",通常建议保留数据库日志文件 (对于 SQL Server.ldf) 出高速缓存的选择。 "退出"策略是,这样管理员专门已标记以便将其忽略缓存的软件的文件。否则,会自动包括该文件。

这是较差的假设,如下面的示例突出显示。Microsoft 建议所有的数据库和备份文件选择超出此类的缓存。
  1. 在日志文件被选择出,以便写入正变到稳定的媒体。
  2. 在修改页面 100。
  3. 数据库引擎运行检查点操作。
  4. 所有数据库页和日志记录都是安全的被告知该引擎 (最多为被视为的检查点的时间点强化)。但是,数据页都不存储或稳定的媒体中。
  5. SQL Server 数据库处于恢复模式"SIMPLE,使检查点现在将截断日志记录。
  6. 只需检查所指向的网页 100 再次修改。
这种情况下具有公开该数据库数据丢失,并且通常导致置疑数据库。再次,如果发生断电时,崩溃恢复有无日志记录,因为它们不再存在以截断由于。 数据库引擎的强大,该值指示应在检查点的过程中保护的数据丢失的数据库页的任何信息。故障恢复尝试分析在 100 页上的第二个修改,但会失败,因为 100 页不适当的保护以稳定的媒体在检查点的时间。

故障恢复使用来确定恢复需求的 LSN 值存储在页面页眉中。
  • 如果在页上的 LSN 是等于或晚于的日志记录的恢复将会在页上没有进一步的工作,因为页已经与基于 LSN 比较的日志记录保持一致。
  • 是否早于的日志记录的页上的 LSN 恢复需要执行适当的操作,以使页返回到正确的状态。如果恢复已经发现了丢失的数据条件和不能正确地使页返回到其合法的状态,恢复失败。
从该的示例页标头中不存在以前的 LSN 存储在日志记录中的第二个 100 页的修改和存在重做页没有以前的日志记录。因此,数据库标记为置疑,为恢复不能安全地继续。

示例 3: 备份是无效的无提示备份链分页符

示例 2 是只是这些类型的可能会遇到的问题的一小部分。此例如的而不是以恢复模式"SIMPLE"让我们将数据库置于"完全恢复"模式,但日志和数据库的定期备份。在第一,它将出现这就会好一些因为您有一个不变的日志链,可能只需执行还原顺序,若要纠正此问题。

这可能不是有效的假设,某些缓存实现使用"退出"策略,以便备份文件或其一部分可以被意外地缓存。 当 SQL Server 刷新备份文件时,SQL Server 要求在稳定的媒体使用 Win32 API FlushFileBuffers 函数或正确地存储写入备份媒体的所有数据。 因此,如果高速缓存供应商不能确保所有写入被正确地都刷新,期间在 FlushFileBuffers 函数以稳定的媒体之前操作成功完成,数据库引擎可以截断日志没有安全备份。 再次,电源故障此时会导致一个条件: 正确的日志记录的丢失,可能会导致崩溃恢复失败。 什么是更重要的是故障恢复不能由于缺少的日志记录,在数据库中的对此进行检测,并可能以静默方式损坏备份链。仅当尝试执行的备份还原时,数据库引擎将能够表明备份已被损坏。

示例 4: 无效的数据库状态

数据库文件包含相互之间需要严格直写和订购法规遵从性,可将应用于它们作为一个组中的所有依赖项。 检查点、 文件大小发生更改、 差异备份、 未记录的操作和 BULK 记录恢复模型是几个关键的数据库活动,以便在数据文件需要通过写使策略 (如选择仅在日志文件出无效的假设。

示例 5: 快照数据库数据丢失 — 可能会是无提示

SQL Server 2005 引入了点时间查询中的快照数据库。这将使用写入时复制数据库技术来帮助保护快照数据数据库中的数据页的副本之前对基本的数据库中的数据页进行了新的修改。此过程需要页面保护快照数据库中后,事务才能继续。如果页不安全的或稳定的媒体中,将一直保持数据完整性问题。快照数据库不能包含一个事务日志,因此是至关重要的页的写入。如果发生断电类似,也许有可能主数据库页已被更改但快照不反映上一个图像,因为缓存的写入已丢失。

如何配置

如何配置产品提供从类似非电池已备份的高速缓存是特定于供应商实现的文件缓存。 但是,可以应用几个的规则:
  • 写入所有数据必须都完成在稳定的媒体或之前完成 I/O 向操作系统指示缓存。
  • 只要从缓存提供服务的读的请求将返回位于或稳定的媒体上相同的图像,可以被缓存的数据。
这些规则本质上意味着非电池已备份的缓存可能对读取操作有效,但不是应该用于写入请求。使用正确的配置,这可能对数据库引擎提供性能增益。这应但是,因为设置留出一些像可用于通过 SQL Server RAM 可能会降低整体性能仔细,测试。SQL Server 可能能够使用比泛型的缓存机制的更精确地使用额外的内存。

只读数据库

这些类型的产品的 excel 中,只读数据库可能是一个很好的示例。 如果先创建并存储在稳定的媒体,以确保数据完整性、 ALTER DATABASE 语句用于标记 READ ONLY 数据库并随后将其分配给缓存机制的数据库或数据库,可能会遇到性能增益。 某些实现允许更多的物理数据从缓存中检索并减少物理 I/O 在缓存中保留数据库页压缩的的图像。

警告: 数据库应永远不会进行读写时不会坚持 WAL 协议的缓存分配。

安全

引入一个的高速缓存的基于内存的文件系统缓存中,如引入了另一个"内存中"位置的数据。产品 (如数据库引擎可能假定关键数据已在或稳定的媒体上存储和正确地保留访问控制列表 (ACL) 保护。基于内存的缓存可以公开一组都是唯一与稳定的媒体的安全问题的数据。例如对于如果应用程序被设计为每次完成,它使用的关键信息,请使用类似 SecureZeroMemory 函数,则该应用程序有数据不再存在于 RAM 的假定条件。 但是,数据的窗体可以缓存时,如果应用程序预期它是在稳定的媒体或,它能更改安全注意事项。

数据完整性检查

Microsoft 始终建议强和清除数据完整性策略。这应包括,但不限于,还原备份和 $ 生产和 $ 还原的数据库上的常规 DBCC CHECKDB 操作。

Microsoft 还建议增加这些安全测试的频率,评估和实施对环境的更改时,或如果任何问题出现有关环境的稳定性。

有关如何使用该 SQLIOStress 信息实用程序,单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
231619如何使用 SQLIOStress 实用程序来强调 such as SQL Server 磁盘子系统

将 TEMPDB 数据库

很可能在某些缓存的系统上找到 TEMPDB 数据库。 几个因素,应该仔细考虑和测试评估在此配置中将 TEMPDB 数据库的存储位置时。 下面的 Microsoft 知识库文章概述了 I/O 要求、 关联的支持边界和可能的性能收益。
917047将 TEMPDB 数据库的 Microsoft SQL Server I/O 子系统要求

支持

Microsoft SQL Server 支持将帮助使用标准的数据恢复方法的客户。如果产品安装在计算机绘制到问题 Microsoft SQL Server、 Active Directory 和 Exchange 支持的数据完整性可能会要求该产品被卸载并且将不参与根本原因分析此类之前可以上述产品不重现该问题。

Microsoft 不会验证或验证第三方产品与 SQL Server 正常工作。此外,Microsoft 不提供任何担保、 保证或语句的与 SQL Server 一起使用的任何第三方产品的适用性。

参考

请仔细考虑所提供的以下参考资料来评估 SQL Server 性能的改进的附加信息:

826433添加到检测未报告的 I/O 问题的其他 SQL Server 诊断程序
828339错误消息 823 可能指示硬件问题或 SQL Server 中的系统问题
234656使用带有 SQL Server 缓存的磁盘驱动器
110352优化 Microsoft SQL Server 性能
304261支持在 SQL Server 网络数据库文件的说明
910716对与 SQL Server 2000 和 2005年用户数据库一起使用的第三方远程镜像解决方案的支持
913945Microsoft 不会验证第三方产品将使用 Microsoft SQL Server
SQL Server 需要系统支持有保障的传递到稳定的媒体 Microsoft SQL Server Always-On 存储解决方案审查程序下所述。 Fo有关输入和输出要求 SQL Server 数据库引擎的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
967576Microsoft SQL Server 数据库引擎输入/输出要求

属性

文章编号: 917043 - 最后修改: 2007年11月2日 - 修订: 1.5
这篇文章中的信息适用于:
  • Microsoft SQL Server 7.0 标准版
  • Microsoft SQL Server 2000 标准版
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
关键字:?
kbmt kbexpertiseadvanced kbinfo KB917043 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 917043
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com