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

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

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

点击这里察看该文章的英文版: 917047
概要
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 联机丛书的完整的详细信息,请参阅。

事务性的扇区重写操作是与所有 SQL Server 数据库包括了tempdb数据库相关。不断扩展的存储技术各种使用设备和实用程序,可以重写 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 磁盘上。这要从缓冲池的总可能大小直接花,通常会降低 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数据库存储在一个高速度子系统来比较优势而运行基线。测试的一部分应包括根据用户数据库的查询不涉及排序、 哈希或临时表,并确认这些查询不产生负面影响。在评估系统时,以下性能指标可以有所帮助。
指示符说明中的使用
页读取和写入改进性能的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数据库,因为如果不能创建tempdb数据库,SQL Server 将不会启动。如果无法创建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 徽标 does 不保证兼容性或针对特定用途在 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年的需求,以支持用户数据库的远程镜像
917043 评估第三方文件缓存系统与 SQL Server 时要考虑的关键因素
使用 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 要求系统,以支持保证的传递到稳定的媒体为分级显示 underthe SQL Server I/O 可靠性程序要求.有关 SQL Server 数据库引擎的输入和输出要求的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
967576 Microsoft SQL Server 数据库引擎输入/输出的要求


警告:本文已自动翻译

属性

文章 ID:917047 - 上次审阅时间:05/15/2015 13:39:00 - 修订版本: 2.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 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web

  • kbsql2005setup kbsql2005engine kbexpertiseadvanced kbinfo kbmt KB917047 KbMtzh
反馈
dy>nt('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">