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

适用于: Microsoft SQL Server 2005 Express EditionMicrosoft SQL Server 2005 Standard EditionMicrosoft SQL 2005 Server Workgroup

概要


Microsoft SQL Server 要求 I/O 子系统,用来存储系统和用户数据库完全服从特定 I/O 主体通过预写日志记录 (WAL) 要求。 这些要求都必需服从事务的 ACID 属性︰ 原子,一致、 独立和耐用。 以下参考资料中提供了有关 I/O 子系统的法规遵从性要求的详细信息︰下面是摘要的要求︰
  • 必须维护写入顺序。
  • 必须保持相关写操作一致性。
  • 写入操作始终必须稳定介质上/中加以保护。
  • 残缺的 I/O 预防必须发生。
耐久性维护保持所有其它数据库的关键,但可能对tempdb数据库宽松。下表总结了多个 SQL Server 数据库的关键 I/O 要求。
I/O 要求简要说明系统或用户tempdb
写入顺序

相关写操作一致性
保持正确的顺序写操作子系统的功能。这可以是镜像解决方案、 组一致性要求,以及 SQL Server WAL 协议使用尤为重要。必需的建议
在写入之后读取到服务子系统的功能读取任何写成功完成之后,会发出读具有最新的数据映像的请求。必需的必需的
在停电的生存使数据完全保持不变 (耐用) 跨停电,例如系统重新启动。必需的不适用
残缺的 I/O 防护以避免拆分单个 I/O 请求的系统能力。必需的建议
扇区重写扇区只能写入地学,不能因为上相邻扇区的写入请求重写。* 建议不要这样做,只允许事务* 建议不要这样做,只允许事务
加强的数据期望,当写入请求或 FlushFileBuffers 操作成功完成后,数据已保存到稳定的媒体。必需的不适用
物理扇区对齐方式和大小SQL Server 询问数据和日志文件的存储位置。 所有设备都都必须支持允许 SQL Server 执行写操作在物理扇区对齐边界和扇区大小的倍数的扇区特性。必需的必需的
* 事务部门重写通过允许一个扇区,若要完全移动、 替换或回滚到原始图像的子系统涉及完整记录的操作。 由于附加的开销所需执行此类操作时,通常建议不要这些重写。 此示例将移动文件数据碎片整理实用程序。 文件中的原始的扇区不能替换新的扇区位置,直到新的扇区和数据完全安全的。 扇区映射必须进行事务处理的方式,以便任何故障,包括电源故障,导致原始数据重新建立连接。 请确保您具有这种类型的进程,以防止无效数据的访问,期间可用的锁定机制从而坚持其他承租人的 SQL Server I/O。

在停电的生存

tempdb 数据库是 SQL Server 的草稿区,并在每次 SQL Server 启动时重新构建。 初始化将取代任何需要数据在重新启动计算机后仍然存在。

事务性部门重写操作

保证成功的恢复过程,例如回滚和崩溃恢复日志记录必须正确地存储在稳定的媒体之前数据页存储中,而无需考虑事务属性不能重写。 这需要子系统和 SQL Server 维护特定的属性,如写入顺序,扇区对齐和调整大小写操作,以及前面提到的文档中所述其他此类 I/O 安全特性。 Tempdb数据库崩溃恢复是不必要的这是因为 SQL Server 启动时总是初始化该数据库。但是, tempdb数据库仍需要回滚功能。 因此,可以放松 WAL 协议的某些属性。

Tempdb数据库的存储位置的行为必须严格遵照既定的磁盘驱动器的协议。 在所有的方面, tempdb数据库存储的设备必须出现,并作为物理磁盘提供了读写能力后。 事务部门重写操作可能是另外一条要求的特定实现。 例如,SQL Server 不支持的数据库修改使用 NTFS 文件系统压缩,因为 NTFS 压缩可以重写已编写和认为的日志扇区强化。 这种类型的重写过程中的失败会导致数据库无法使用,损坏数据已被视为安全的 SQL Server。

注意:SQL Server 2005 的扩展支持或压缩读取仅数据库和文件组。 SQL Server 2005 联机丛书的完整的详细信息,请参阅。

事务性部门重写操作都将tempdb数据库包括的所有 SQL Server 数据库相关。 不断扩展的存储技术各种使用设备和实用程序,可以重写 SQL Server 认为安全的数据。 例如,一些新兴的技术执行内存中缓存或数据压缩。 为了避免严重的数据库损坏,所有扇区重写必须完全事务支持的方式,如果出现故障,数据回滚到以前的扇区图像。这保证了 SQL Server 永远不会公开为意外的中断或数据损坏情况。

您可以将tempdb数据库放在专业子系统,如 RAM 磁盘、 固态或其他不能用于其他的数据库的高速实现。 但是,在评估这些选项时,必须考虑"更多信息"一节中介绍的关键因素。

详细信息


在评估tempdb数据库的存储位置时,应仔细研究以下几个因素。例如, tempdb数据库的使用涉及到,但并不限于内存基底面、 查询计划和 I/O 决策。 适当的调节和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 缓存,一个缓冲池中,一个 RAM 磁盘上。这直接偏离缓冲区池的总可能大小,通常会降低 SQL Server 的性能。

放弃 RAM

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

第一次调整

应用程序应调整,移去不需要和不需要排序和哈希值可能会导致使用tempdb数据库的。 多次添加索引可以需要排序或哈希计划中完全删除,而无需使用tempdb数据库的最佳性能领先。

可能的好处点

只能通过严格的测试和应用程序工作负载的测量值确定将tempdb数据库放置在高速系统的好处。 工作负荷必须认真学习tempdb数据库可能会从中受益,并在部署前必须确认的 I/O 安全的特征。

排序和哈希操作一起使用 SQL Server 的内存管理器来确定每个排序或哈希操作的内存中临时区域的大小。 一旦分类或哈希数据超过分配的内存中临时区域,可能会给tempdb数据库写入数据。 此算法已在 SQL Server 2005 中,SQL Server 的早期版本相比减少tempdb数据库使用要求得到扩展。 例如,通过使用纯强制的排序的表,索引,降序顺序和相同的硬件配置,SQL Server 2005 通过 SQL Server 2000年显示显著的改进。

警告︰SQL Server 的设计进行涉及使用tempdb数据库操作的查询计划决策时考虑的内存级别和当前查询活动。 因此,改进了性能差异明显取决于工作负载和应用程序设计。 我们强烈建议您完成测试与首选的解决方案,来确定可能的收益和评估 I/O 之前这样的部署中的安全要求。

SQL Server 使用tempdb数据库来处理各种活动涉及排序、 哈希值、 行版本存储,并临时表︰
  • 临时表数据页常见的缓冲区池例程维护和通常不表现出从专业子系统实现的性能优势。
  • Tempdb数据库用于草稿区作为哈希值和排序。减少了 I/O 延迟对于这类操作可能非常有用。 但是,知道添加一个索引来避免哈希或排序可能会提供类似的好处。
有和没有tempdb数据库存储在比较优势的高速子系统运行基线。 测试的一部分应包括根据用户数据库的查询不涉及排序、 哈希或临时表,并确认这些查询不产生负面影响。 在评估系统时,以下性能指标可以有所帮助。
指示符Description/usage
页读取和写入改进性能的tempdb数据库的 I/o 可能会由于与tempdb数据库 I/O 延迟降低更改页面读取和写入用户数据库的速率。对于用户的数据库页,总数应不在相同的工作负载之间有所不同。
物理读取和写入 tempdb 数据库的字节数如果tempdb数据库移到设备上,如 RAM 磁盘,增加tempdb数据库的实际 I/O,则表明取走缓冲池的内存会导致增加的tempdb数据库活动发生。这种模式是数据库的一个指示符,该指示页预期寿命还页可能会影响以负面的方式。
页生命期页预期寿命的下降可以指示用户数据库的物理 I/O 需求的增加。 速率减小可能可能表明取走缓冲池的内存强制数据库页,过早退出的缓冲池。与其它指标组合在一起并进行测试,以完全了解参数界限。
总吞吐量
CPU 使用率
可扩展性
响应时间
Tempdb数据库配置更改的主要目的是要提高总吞吐量。 测试应包括多种可重复执行的工作负载,可以放大来确定如何影响吞吐量。

基于压缩的 RAM 磁盘实施类似可能适用于 10 个用户。但是,用增加的工作负荷,这可能推超出所需水平的 CPU 级别并产生负面影响的高工作负荷时的响应时间。 真正的压力测试和未来负载预测测试是强烈建议。
工作文件和工作表创建操作如果tempdb数据库移到设备上,如 RAM 磁盘,更改查询计划通过增加数或工作文件或工作表的大小,它指示取走缓冲池的内存会导致增加的tempdb数据库活动发生。这种模式并不表示数据库页的页预期寿命也可能影响以负面的方式。

事务性部门重写示例

下面的示例为基础所需的 SQL Server 数据库的数据安全进行阐述。

假设一个 RAM 磁盘供应商使用内存中压缩的实现。 实现必须通过提供文件流的物理外观,就像扇区已对齐和调整大小以便 SQL Server 是不知道,从底层实现正确安全正确地封装。 看一下压缩示例更近。
操作
1 扇区写入该设备,被压缩以节省空间。
扇区 2 写入设备和压缩的扇区 1 以节省空间。
设备可以执行以下操作来帮助保护区域 1 的数据,结合区域 2 的数据时。
操作
阻止所有写入扇区 1 和 2。
解压缩扇区 1 到暂存区域中,离开当前 1 扇区存储作为活动数据检索。
为新存储格式压缩 1 和 2 的扇区。
阻止所有读取和写入的扇区 1 和 2。
交换扇区 1 和 2 使用新存储的旧的存储。
如果 exchange 尝试失败 (回滚)︰
  • 还原原始存储 1 和 2 的扇区。
  • 删除空闲区中扇区 1 和 2 的组合数据。
  • 失败 2 扇区的写入操作。
允许读取和写入的扇区 1 和 2。
提供围绕部门修改锁定机制和扇区 exchange 尝试失败时回滚的更改的能力被视为过渡性兼容。 对于使用扩展支持的物理存储的实现,它将包括适当的事务日志方面,加强并回滚更改已应用到磁盘上结构,以维护 SQL Server 数据库文件的完整性。

使扇区重写任何设备必须支持以事务性的方式重写,以便 SQL Server 不会公开给数据丢失。

注意:在线的 I/O 和回滚失败发生在tempdb数据库中时,则会重新启动 SQL Server 的实例。

当您移动tempdb数据库时要小心

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

若要更改tempdb数据库的物理位置,请执行以下步骤︰
  1. 使用 ALTER DATABASE 语句和修改文件子句来更改tempdb数据库,使其引用新的物理位置,例如新的磁盘中每个文件的物理文件名称。
    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。

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

第三方产品或特定的供应商可以收到 Microsoft 徽标认证。 但是,合作伙伴认证或特定 Microsoft 徽标不保证兼容性或在 SQL Server 中特定用途的适用性。

支持

如果使用 SQL Server 支持事务性数据库使用本文所述的 I/O 保证子系统,Microsoft 将提供对 SQL Server 和基于 SQL Server 的应用程序的支持。但是,问题,或所致,该子系统请咨询制造商。

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

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

参考资料


有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

826433 PRB︰ 其他 SQL Server 诊断信息来检测未报告的 I/O 问题

828339错误消息 823 可能表明硬件问题或在 SQL Server 中的系统问题

234656使用与 SQL Server 高速缓存的磁盘驱动器

304261支持 SQL Server 的网络数据库文件说明

913945 Microsoft 不证明,Microsoft SQL Server 将处理第三方产品

910716要求 SQL Server 2005 和 SQL Server 2000年支持用户数据库的远程镜像

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

在 Azure Vm 使用 SSDs 存储 SQL Server TempDB 和缓冲区池扩展

在 Azure 的虚拟机中的 SQL Server 的性能最佳做法

优化查询计划与 SQL Server 2014年基数评估程序

查询性能


本文档中所包含的信息代表微软公司发布的日期讨论的问题上的当前视图。 因为 Microsoft 必须响应不断变化的市场形势,它不应解释为需要 Microsoft,做的承诺,Microsoft 不能保证出版物的日期之后所提供的任何信息的准确性。

这份白皮书是仅用于提供信息。 MICROSOFT 不做任何担保,明示,暗示或法定的对此文档中的信息。

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

Microsoft 可能拥有专利、 专利申请、 商标、 版权或其他知识产权,本文档所涵盖的主题。 除非明确说明 Microsoft 的任何书面的许可协议,否则提供本文档不授予您任何许可对这些专利、 商标、 版权或其他知识产权。

© 2006年微软公司。 保留所有权利。

Microsoft、 Windows、 Windows 服务器和 SQL Server 是微软公司在美国和/或其他国家/地区的商标或注册的商标。
SQL Server 要求系统能够支持SQL Server I/O 可靠性程序要求下所述的保证的传递到稳定的媒体。有关 SQL Server 数据库引擎的输入和输出要求的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

967576 Microsoft SQL Server 数据库引擎的输入/输出要求