将 tempdb 数据库的 Microsoft SQL Server I/O 子系统要求

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

本文内容

概要

Microsoft SQL Server 要求 I/O 子系统用于存储系统和用户数据库完全遵守预写日志记录 (WAL) 要求通过特定的 I/O 主体。 这些要求所需为了满足事务的 ACID 属性: 原子,一致、 独立和耐用。 以下参考资料中提供了有关 I/O 子系统法规遵从性要求的详细信息:下面的列表是要求的快速摘要:
  • 必须维护的写入顺序。
  • 必须维护相关的写入操作的一致性。
  • / 上稳定的媒体中,必须始终可以安全写操作。
  • 数据被破坏的 I/O 预防必须发生。
持久性维护保留所有其他数据库的关键,但可能是宽松的 tempdb 数据库。下表总结了几个关键的 I/O 需求,对于 SQL Server 数据库。
收起该表格展开该表格
I/O 要求简要说明系统或用户tempdb
写排序

相关写入一致性
维护写操作的正确顺序子系统的能力。这可以是镜像的解决方案、 组的一致性要求和 SQL Server WAL 协议使用尤其重要。所需建议
读写之后任何写入成功完成之后发出读取时,服务子系统的能力读取与最新的数据映像的请求。所需所需
生存跨中断数据完全保持不变 (耐用) 跨一个的停机诸如系统重新启动。所需不适用
数据被破坏的 I/O 预防措施以避免拆分单个 I/O 请求系统的能力。所需建议
重写的扇区该扇区只能写入完整地并不能重写由于的写入请求上相邻扇区。* 不鼓励,仅允许如果事务* 不鼓励,仅允许如果事务
加强数据假定条件下当写入请求或 $ FlushFileBuffers 操作成功完成后,数据已保存到稳定的媒体。所需不适用
物理扇区对齐方式和大小SQL Server 询问数据和日志文件存储位置。 所有设备都都必须支持扇区属性允许 SQL Server 执行写入操作在物理 sector-aligned 边界上,并以扇区大小的倍数增长。所需所需
* 事务的扇区重新编写允许完全移动、 更换,或回滚到原始图像的扇区子系统涉及完全记录的操作。 这些重写通常是由于的额外的开销执行此类操作所需不鼓励的。 此示例将一个碎片整理实用程序,它移动文件数据。 原始的扇区在文件中不能将替换为新的扇区位置,直到新的分区引导扇区和数据绝对安全。 该扇区的重新映射必须进行事务性的方式中,以便任何故障包括在电源故障导致原始数据的 re-establishment。 请确保您具有在这种类型的过程,以防止无效的数据访问的过程中使用的锁定机制从而坚守 SQL Server I/O 的其他承租人。

生存跨中断

tempdb 数据库是 SQL Server 的临时区域,并在每个 SQL Server 启动时重建。 初始化取代任何需要的数据可以经受住考验重新启动。

事务的扇区重写操作

若要保证成功的恢复过程的如回滚和 $ 故障恢复日志记录必须正确地存储稳定的媒体上数据页存储并不能重写而不授予事务性属性之前。 这要求子系统和 SQL Server 维护 such as 写入顺序扇区对齐和调整大小写操作的特定属性和其他此类 I/O 安全属性 previously-mentioned 文档中所述。 将 tempdb 数据库的故障恢复就没必要设置该属性,因为始终 SQL Server 启动过程中初始化该数据库。但是,tempdb 数据库仍需要回滚功能。 因此,WAL 协议的某些属性可以被宽松。

严格遵照已建立的磁盘驱动器协议行为必须将 tempdb 数据库的存储位置。 所有方式存储在 tempdb 数据库的设备必须出现,并充当提供读写功能后一个物理磁盘。 事务扇区重写操作可能是一项额外要求的特定实现。 例如对于 SQL Server 不支持通过使用 NTFS 文件系统压缩,因为 NTFS 压缩可以重写的已编写并被视为的日志扇区的修改强化的数据库。 在这种类型的重写的故障可以导致数据库无法使用,损坏数据已被视为安全的 SQL Server。

注意SQL Server 2005 扩展支持或 $ 压缩为只有数据库和文件组。 请参阅有关完整的详细信息在 SQL Server 2005 丛书联机。

事务的扇区重写操作是所有的 SQL Server 数据库包括将 tempdb 数据库的相关。 扩展的存储技术的不断增长各种使用设备和实用程序,可以重写 SQL Server 视为安全的数据。 例如对于新兴技术的一些执行内存中缓存或 $ 数据压缩。 若要避免严重的数据库损坏,任何扇区重写必须具有完整事务处理支持以这样一种方式发生故障会数据回滚到以前的扇区图像。这可以保证 SQL Server 永远不会公开一个意外的中断或数据损坏情况。

您可能能够将 tempdb 数据库放在专业子系统如 RAM 磁盘、 稳定的状态或其他高速实现,不能用于其他数据库的。 然而,在评估这些选项时,必须考虑显示在更多信息一节中的关键因素。

更多信息

在评估在 tempdb 数据库的存储位置时,有几个因素应是仔细研究。例如对于 tempdb 数据库的使用涉及,但不限于内存占用量,查询计划和 I/O 的决定。 适当 tuning 和 tempdb 数据库的实现可以提高可伸缩性和响应能力的系统。 此部分讨论在确定存储需要 tempdb 数据库的关键因素。

高速度子系统

有各种高速子系统实现市场的提供 SQL Server I/O 子系统协议要求但的并不提供持久性的媒体上。

重要始终与该产品的供应商联系,以保证完全符合 SQL Server I/O 需要确认。

一个 RAM 磁盘是一个常见的示例中,此类实现。 RAM 磁盘安装所需的驱动程序,并启用主要的 RAM 磁盘,可以显示为和功能上相当于连接到系统中的任何磁盘驱动器的一部分。 所有 I/O 子系统应都提供完全符合 SQL Server I/O 要求。但是,它是明显 RAM 磁盘不是持久的媒体。 因此,如 RAM 磁盘的实现可能仅将它用作 tempdb 数据库的位置,并且不能用于任何其他数据库。

实施和部署之前,需要考虑的键

没有这样的子系统将 tempdb 数据库的部署之前,需要考虑的不同点。 本节中使用一个 RAM 磁盘作为基础,为讨论,但高速度的其他实现中出现的类似的结果。

I/O 安全

法规遵从性写和事务性扇区写入操作后是读的必不可少的。 永远不会在不完全支持 SQL Server I/O 的要求的任何系统上部署 SQL Server 或您风险损坏和数据的丢失。

网页已缓存 (双 RAM 缓存)

临时表就像一个数据库中的所有其他表。 它们是由在缓冲池中缓存,由惰性写入操作。 存储在 RAM 磁盘上的临时表页将导致双缓冲池中的一项和一个 RAM 磁盘上缓存的内存。这直接偏离缓冲池的总可能大小,通常会降低 SQL Server 的性能。

放弃 RAM

RAM 磁盘将指定的主内存的一部分,正如名称所示。 没有可用的 RAM 磁盘和基于内存的文件缓存的多个实现。某些还使备份操作的物理 I/O。 基于内存的文件缓存的关键元素是它直接将从可供 SQL Server 在物理内存。 总是具有强证据,添加一个基于内存的文件高速缓存可以提高应用程序性能和不会降低其他查询或应用程序的性能。

调整第一次

应用程序应调整若要删除不必要和不需要的排序,并可能导致的 tempdb 数据库使用的哈希值。 很多时候添加索引的可以在需要排序或哈希计划中完全删除,通向获得最佳性能,而无需将 tempdb 数据库的使用。

可能的好处点

通过严格的测试和度量值的应用程序工作负载,仅可以确定将 tempdb 数据库放置在高速度的系统上的好处。 工作负荷必须进行仔细研究 tempdb 数据库可能会受益于,并在部署之前,必须确认 I/O 安全特征。

排序和哈希操作结合起来,可使用 SQL Server 内存管理器确定内存中的空闲区对于每个排序或哈希操作的大小。 只要该排序或哈希的数据超过了已分配的内存中的空闲区,可能会将数据写入到 tempdb 数据库。 已在较早版本的 SQL Server 通过减少 tempdb 数据库使用要求的 SQL Server 2005 年扩展此算法。 例如对于通过纯强制的排序的表没有索引按降序顺序和相同的硬件配置 SQL Server 2005 SQL Server 2000 通过显示明显改进。

警告:SQL Server 旨在使涉及到的 tempdb 数据库操作使用的查询计划决定时考虑内存级别和当前查询活动。 因此,性能增益因显著工作负载和应用程序设计。 我们强烈建议您完成使用首选的解决方案来确定可能的提高和评估 I/O 人身安全要求,此类的部署之前进行测试。

SQL Server 使用 tempdb 数据库以处理涉及排序、 哈希值、 行版本存储中的各种活动,并 temp 表:
  • 临时表由数据页的常见的缓冲区池例程维护,并通常不执行出现从专业子系统实现的性能收益。
  • tempdb 数据库用作临时区域的哈希值和排序。减少此类操作的 I/O 延迟可能是有益的。 但是,知道添加避免哈希值或排序的索引可能会提供一个类似的优点。
使用和不使用 tempdb 数据库存储在高速子系统进行比较的好处,请运行比较基准。 测试中应包括根据用户数据库执行不包括排序、 哈希值或临时的表,然后确认不会产生负面影响这些查询的查询。 在评估系统时,以下性能指示器会很有帮助。
收起该表格展开该表格
指示符说明/用法
页读取和写入提高 tempdb 的性能数据库 i/o 可能由于减少了与 tempdb 数据库 I/O 相关联的滞后时间的变化页读取和写入的用户数据库的速率。用户的数据库页面的总数量应不相同的工作负荷跨不同。
物理读取和写入 tempdb 数据库以字节为单位)如果将 tempdb 数据库移动到如一个 RAM 磁盘的设备会增加 tempdb 数据库的实际的 I/O,则它指示执行从缓冲池内存导致发生增加的 tempdb 数据库活动。此模式是数据库的一个指示符,该页面预期寿命页可能也会受到影响负的方式。
页面预期寿命在页面预期寿命的拒绝可以指示用户数据库的物理 I/O 要求中增加。 速率降低可能有可能表示执行从缓冲池内存强制的数据库页要提前退出缓冲池。将与其他指示符组合在一起并进行测试,以完全了解参数边界。
总体吞吐量
CPU 使用率
可伸缩性
响应时间
tempdb 数据库配置更改的主要目的是提高整体的吞吐量。 您的测试应包括的可重复的工作负荷可以出缩放,以确定如何影响吞吐量的混合。

类似于一个基于压缩的 RAM 磁盘实现可能会很好地使用 10 个用户。但是,与增加的工作负荷,这可能会超出了所需的级别按 CPU 级别并会有负面影响时工作负荷很高的响应时间。 强烈建议的则返回 true 压力测试和将来的负载预测测试。
工作文件和工作表创建操作如果将 tempdb 数据库移动到如一个 RAM 磁盘的设备更改通过增加数量或大小的工作文件或工作表的查询计划,则它指示执行从缓冲池内存导致增加的 tempdb 数据库活动发生。此模式是指示在页面预期寿命的数据库页的可能也会影响负的方式。

事务的扇区重写示例

下面的示例 elaborates 数据所需的 SQL Server 数据库的安全性。

假定一个 RAM 磁盘供应商使用内存中压缩实现。 实现必须通过提供文件流的物理外观像该扇区已对齐并因此 SQL Server 是不知道和正确地从基础实现受保护的大小调整为正确封装。 查看压缩示例较近的位置。
收起该表格展开该表格
操作
扇区 1 写入到设备,并压缩以节省空间。
扇区 2 写入到设备和压缩的扇区 1 以节省空间。
设备可以执行下列操作以帮助保护扇区 1 的数据,它是组合在一起的扇区 2 的数据。
收起该表格展开该表格
操作
阻止所有扇区 1 和 2 的写入操作。
解压缩扇区 1 到一个临时区域离开当前的扇区 1 存储为要检索活动的数据。
压缩到一个新的存储格式的扇区 1 和 2。
阻止所有读取和写入的扇区 1 和 2。
交换扇区 1 和 2 的旧的存储与新的存储。
如果交换尝试失败 (回滚):
  • 还原原始存储的扇区 1 和 2。
  • 从空闲区中移除扇区 1 和 2 组合的数据。
  • 失败扇区 2 写操作。
取消阻止读取和写入的扇区 1 和 2。
能够提供扇区修改周围的锁定机制和扇区交换尝试失败时回滚所做的更改将被视为过渡性兼容。 用于扩展备份的物理存储的实现,它包括相应的交易记录日志方面,以帮助安全和回滚已应用于磁盘上结构,以保持 SQL Server 数据库文件的完整性的更改。

使扇区的重写任何设备必须以事务方式支持该重写,因此该 SQL Server 也不会受数据丢失。

注意联机的 I/O 和回滚故障发生在 tempdb 数据库时,重新启动时的 SQL Server 实例。

移动 tempdb 数据库时应小心

当您移动 tempdb 数据库,因为如果 tempdb 数据库不能创建,SQL Server 将无法启动时,一定要小心。 如果 tempdb 数据库不能创建,启动 SQL Server 通过使用在 (-f) 启动参数和 $ 移动 tempdb 数据库到有效位置。

若要将 tempdb 数据库的物理位置,请按照下列步骤操作:
  1. 若要更改的引用新的物理位置如 tempdb 数据库中的每个文件的物理文件名称中使用 ALTER DATABASE 语句和修改 FILE 子句
    Alter database tempdb modify file 
    (name = tempdev, filename = 'C:\MyPath\tempdb.mdf')
    
    Alter database tempdb modify file 
    (name = templog, filename = 'C:\MyPath\templog.ldf')
    新的磁盘。
  2. 停止并重新启动 SQL Server。

合作伙伴产品认证不兼容性或安全性的一个 guaranty

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

支持

如果您使用一个子系统支持 I/O 保证事务的数据库使用本文中所述的 SQL Server,Microsoft 将提供对 SQL Server 和基于 SQL Server 的应用程序的支持。但是,问题,或引起,子系统将引用与制造商联系。

对于 tempdb 数据库相关的问题 Microsoft 支持服务将要求您将 tempdb 数据库重新定位。 请与您的设备供应商联系,以确认您已正确部署并配置事务数据库使用的设备。

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

参考

有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
826433添加到检测未报告的 I/O 问题 PRB: 其他 SQL Server 诊断
828339错误消息 823 可能指示硬件问题或 SQL Server 中的系统问题
234656使用带有 SQL Server 缓存的磁盘驱动器
110352优化 Microsoft SQL Server 性能
304261支持在 SQL Server 网络数据库文件的说明
913945Microsoft 不会验证第三方产品将使用 Microsoft SQL Server
910716支持的用户数据库的远程镜像 SQL Server 2005 和 SQL Server 2000 的要求
917043评估 SQL Server 与第三方文件缓存系统时,需要考虑的关键因素
本文档中所含信息表示 Microsoft 公司的当前视图上的出版物的日期作为讨论该问题。 因为 Microsoft 必须对不断变化的市场情况做出响应,不应将它解释为 Microsoft 的一个承诺,Microsoft 不能保证出版物的日期之后显示任何信息的准确性。

本白皮书是仅用于提供信息之目的。 MICROSOFT 使没有的担保明确,暗示,或法定,与本文档中的该信息。

遵守所有适用的版权法是用户的责任。 不限制版权权利,此文档的任何部分可能复制、 存储中或引入到一个检索系统或以任何形式或借助任何手段 (电子、 机械、 影印、 录制,或其他) 或出于任何目的,未经 Microsoft corporation 明确的书面许可。

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

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

Microsoft、 Windows、 Windows Server 和 SQL Server 是注册的商标或商标 Microsoft 公司在美国和/或其他国家或地区。
SQL Server 需要系统支持有保障的传递到稳定的媒体 Microsoft SQL Server Always-On 存储解决方案审查程序下所述。 Fo有关输入和输出要求 SQL Server 数据库引擎的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
967576Microsoft SQL Server 数据库引擎输入/输出要求

属性

文章编号: 917047 - 最后修改: 2007年11月2日 - 修订: 1.6
这篇文章中的信息适用于:
  • 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
关键字:?
kbmt kbsql2005setup kbsql2005engine kbexpertiseadvanced kbinfo KB917047 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 917047
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