配置后数据库优化

除了遵循预配置数据库优化 2 中的建议外,在安装BizTalk Server并配置BizTalk Server数据库,还应遵循几个步骤来优化 SQL Server 上的BizTalk Server数据库性能。 本主题提供这些优化的列表。

考虑在特定 MessageBox 数据库表上设置“行中的文本”表选项

SQL Server提供了一个名为“行中文本”的表选项,用于声明尺寸小于数据页 (8Kb) 的 textntextimage 数据类型的字段的内容必须存储在数据行中。 通过在 BizTalkMsgBoxDb 表 (部件表、Spool 表和 DynamicStateInfo 表) 上设置此选项,可以在处理具有较小上下文和具有较小持久性大小的业务流程的小型消息时增加消息吞吐量。

  • 部件表:当消息大小小于 8kb 的数据页的尺寸时,在 Parts 表上应用行表中的文本选项可能会导致BizTalk Server性能改进。 Parts 表包含以下字段:

    • ImgPart:包含消息部分或消息部分片段。

    • ImgPropBag:包含消息部分属性包。

      这样,在针对 MessageBox 循环时,在 BizTalk 主机中运行的消息代理可以通过读取少量页面从 Parts 表中检索一批消息。 根据具体的方案和硬件配置,此技术可以减少SQL Server和BizTalk Server的 CPU 使用率,并在延迟和吞吐量方面提供显著改进。

  • 后台打印表:当消息上下文的平均大小小于 8 kb 时,启用后台处理表上的 “行表中文本 ”选项有助于减少从 MessageBox 及其上下文中读取邮件时的访问次数。 若要将此选项应用于 Spool 表,必须消除不必要的上下文属性和可分辨字段,以减小小于 8 Kb 的消息上下文大小。

  • DynamicStateInfo 表 这些表(每个主机一个)包含名为 imgData 的 image 类型的字段,其中包含在执行过程中遇到持久性点时的二进制序列化业务流程状态。 当主机 HostA 中的业务流程的内部状态非常小,以至于序列化后其大小小于 8 kb 时,行 中文本 技术可以成功应用于DynamicStateInfo_HostA表。 因此,建议尽可能减小业务流程的内部状态。 此方法可以显著减少 XLANG 引擎在持久性点的情况下序列化、持久化、反序列化和还原业务流程内部状态所花费的时间。

    我们在实验室测试中使用以下设置:

  • EXEC sp_tableoption N'Spool', 'text in row', '6000'

  • EXEC sp_tableoption N'Parts', 'text in row', '6000'

将BizTalk Server数据库的自动增长设置定义为固定值而不是百分比值

  • SQL Server数据库自动增长是一种阻塞操作,会阻碍BizTalk Server数据库性能。 因此,请务必提前为BizTalk Server数据库分配足够的空间,以最大程度地减少数据库自动增长的发生。

  • 数据库自动增长应设置为固定的兆字节数而不是百分比, (指定文件增长 以兆字节 为单位) 。 应这样做,以便在发生自动增长时,它会以测量的方式执行此操作。 这降低了数据库过度增长的可能性。 BizTalk Server数据库的增长增量通常不低于 100 MB。

使用多个数据文件将BizTalk Server数据库预先调整为适当大小

当SQL Server增加文件大小时,它必须先初始化新空间,然后才能使用它。 这是一个阻塞操作,涉及用空页填充新空间。 在 Windows Server 2003 或更高版本上运行的 SQL Server 2005 或更高版本支持即时文件初始化。 此功能可以大大降低文件增长操作对性能的影响。 有关详细信息,请参阅 数据库即时文件初始化,其中提供了启用即时文件初始化的步骤。

以下列表描述了实验室测试中使用的BizTalk Server数据库配置:

  • BizTalk DTADB (BizTalk 跟踪数据库文件) : 文件大小为 2048 MB 且增长为 100 MB 的数据文件和 100 MB 增长的日志文件为 1024 MB。

  • BizTalkMgmtdb (BizTalk 管理数据库文件) : 数据文件的文件大小为 512 MB,增长 100 MB,日志文件为 512 MB,增长 100 MB。

  • SSODB: 数据文件的文件大小为 512 MB,增长 100 MB,日志文件为 512 MB,增长 100 MB。

  • BizTalkMsgBoxDb (BizTalk MessageBox 数据库) : 8 个数据文件,每个数据文件的文件大小为 2 GB,增长 100 MB,日志文件为 20 GB,增长 100 MB。 由于 BizTalk MessageBox 数据库最活跃,因此建议将数据文件和事务日志文件放在专用驱动器上,以减少出现磁盘 I/O 争用问题的可能性。 在实验室环境中,我们对以下各项使用了一个驱动器:

    • MessageBox 数据文件

    • MessageBox 事务日志文件

    以下 SQL 脚本可用于预调整 BizTalkMsgBoxDb 的大小,该数据库最初在驱动器 J (J:\BizTalkMsgBoxDb.mdf) 上具有数据文件,驱动器 K (K:\BizTalkMsgBoxDb_log 上的日志文件。LDF) :

重要

此脚本“按原样”提供,仅用于演示或教育目的,使用风险自担。 Microsoft 不支持使用此脚本,并且 Microsoft 不保证此脚本的适用性。

EXEC dbo.sp_helpdb BizTalkMsgBoxDb
ALTER DATABASE BizTalkMsgBoxDb MODIFY FILE (NAME = BizTalkMsgBoxDb , FILENAME = 'J:\BizTalkMsgBoxDb.mdf' , SIZE = 2GB , FILEGROWTH = 100MB)
ALTER DATABASE BizTalkMsgBoxDb ADD FILE    (NAME = BizTalkMsgBoxDb_2 , FILENAME = 'J:\BizTalkMsgBoxDb_2.ndf' , SIZE = 2GB , FILEGROWTH = 100MB)
ALTER DATABASE BizTalkMsgBoxDb ADD FILE    (NAME = BizTalkMsgBoxDb_3 , FILENAME = 'J:\BizTalkMsgBoxDb_3.ndf' , SIZE = 2GB , FILEGROWTH = 100MB)
ALTER DATABASE BizTalkMsgBoxDb ADD FILE    (NAME = BizTalkMsgBoxDb_4 , FILENAME = 'J:\BizTalkMsgBoxDb_4.ndf' , SIZE = 2GB , FILEGROWTH = 100MB)
ALTER DATABASE BizTalkMsgBoxDb ADD FILE    (NAME = BizTalkMsgBoxDb_5 , FILENAME = 'J:\BizTalkMsgBoxDb_5.ndf' , SIZE = 2GB , FILEGROWTH = 100MB)
ALTER DATABASE BizTalkMsgBoxDb ADD FILE    (NAME = BizTalkMsgBoxDb_6 , FILENAME = 'J:\BizTalkMsgBoxDb_6.ndf' , SIZE = 2GB , FILEGROWTH = 100MB)
ALTER DATABASE BizTalkMsgBoxDb ADD FILE    (NAME = BizTalkMsgBoxDb_7 , FILENAME = 'J:\BizTalkMsgBoxDb_7.ndf' , SIZE = 2GB , FILEGROWTH = 100MB)
ALTER DATABASE BizTalkMsgBoxDb ADD FILE    (NAME = BizTalkMsgBoxDb_8 , FILENAME = 'J:\BizTalkMsgBoxDb_8.ndf' , SIZE = 2GB , FILEGROWTH = 100MB)
GO
ALTER DATABASE BizTalkMsgBoxDb MODIFY FILE (NAME = BizTalkMsgBoxDb_log , FILENAME = 'K:\BizTalkMsgBoxDb_log.LDF', SIZE =  20GB , FILEGROWTH = 100MB)
GO

将备份BizTalk Server输出目录移动到专用 LUN

  1. 将名为 Backup BizTalk (Full 和 Log backup) 的输出目录移动到专用 LUN。

  2. 编辑名为“备份BizTalk Server”的作业以指向专用 LUN。

第一步通过写入与作业读取位置不同的磁盘来减少作业运行时的磁盘 I/O 争用。 有关详细信息,请参阅配置备份BizTalk Server作业

验证BizTalk Server SQL 代理作业是否正在运行

在 BizTalk Server 中,多个SQL Server 代理作业执行保持服务器正常运行的重要功能。 请确保监视这些作业的运行状况,并确保这些作业在运行时没有错误。 BizTalk Server性能问题的一个常见原因是,当BizTalk Server SQL 代理作业未运行时,MessageBox 和跟踪数据库可能会不受检查地增长。 若要确保 BizTalk Server SQL 代理作业正常运行,请执行以下步骤:

  1. 验证SQL Server 代理服务是否正在运行

  2. 验证BizTalk Server安装的SQL Server 代理作业是否已启用并成功运行。 BizTalk Server SQL Server 代理作业至关重要:如果作业未运行,系统性能会随着时间的推移而下降。

  3. 验证BizTalk Server SQL Server 代理作业是否及时完成。 设置最新版本的 Microsoft System Center Operations Manager 以监视作业。 应注意某些作业特有的计划:

    • 默认情况下,MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb作业持续运行。 监视软件应将此计划考虑在内,而不是生成警告。

    • MessageBox_Message_Cleanup_BizTalkMsgBoxDb作业未启用或计划,但MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb作业每 10 秒启动一次。 因此,不应启用、计划或手动启动此作业。

  4. 验证是否正确配置了SQL Server 代理服务的启动类型。 验证SQL Server 代理服务是否配置为“自动”启动类型,除非SQL Server 代理服务配置为 Windows Server 群集上的群集资源。 如果SQL Server 代理服务配置为群集资源,则应将启动类型配置为“手动”,因为该服务将由群集服务管理。

配置跟踪数据的清除和存档

若要确保正确设置清除和存档跟踪数据,请执行以下步骤:

  1. 确保名为 DTA 清除和存档 的 SQL 代理作业已正确配置、启用并成功完成。

    有关详细信息,请参阅 配置 DTA 清除和存档作业

  2. 确保作业可以像生成传入跟踪数据一样快地清除跟踪数据。

    有关详细信息,请参阅 测量最大可持续跟踪吞吐量

  3. 查看软清除和硬清除参数,以确保将数据保留到最佳时间长度。

    有关详细信息,请参阅 存档和清除 BizTalk 跟踪数据库

  4. 如果只需要清除旧数据,并且不需要先存档,请更改 SQL 代理作业以调用名为 dtasp_PurgeTrackingDatabase 的存储过程。

    有关详细信息,请参阅 从 BizTalk 跟踪数据库中清除数据

监视和减少 DTC 日志文件磁盘 I/O 争用

分布式事务处理协调器 (DTC) 日志文件可能会成为事务密集型环境中的磁盘 I/O 瓶颈。 在使用支持事务的适配器(如 SQL Server、MSMQ 或 MQSeries)或在多 MessageBox 环境中时尤其如此。 事务适配器使用 DTC 事务,多 MessageBox 环境广泛使用 DTC 事务。 若要确保 DTC 日志文件不会成为磁盘 I/O 瓶颈,应监视 DTC 日志文件驻留在SQL Server数据库服务器上的磁盘的磁盘 I/O 使用情况。 如果 DTC 日志文件所在的磁盘的磁盘 I/O 使用率过高,请考虑将 DTC 日志文件移动到更快的磁盘。 在SQL Server群集化的环境中,这不是一个问题,因为日志文件已位于共享驱动器上,该驱动器可能是具有多个轴的快速 SAN 驱动器。 不过,仍应监视磁盘 I/O 使用情况。 这是因为在非群集环境中,或者当 DTC 日志文件与其他磁盘密集型文件一起位于共享磁盘上时,它可能会成为瓶颈。

分隔 MessageBox 和跟踪数据库

由于 BizTalk MessageBox 和 BizTalk 跟踪数据库最活跃,因此建议将其中每个数据库的数据文件和事务日志文件放在专用驱动器上,以减少出现磁盘 I/O 争用问题的可能性。 例如,需要四个驱动器用于 MessageBox 和 BizTalk 跟踪数据库文件,每个驱动器用于以下各项:

  • MessageBox 数据文件

  • MessageBox 事务日志文件

  • BizTalk 跟踪 (DTA) 数据文件

  • BizTalk 跟踪 (DTA) 事务日志文件

    分离 BizTalk MessageBox 和 BizTalk 跟踪数据库以及分离不同物理磁盘上的数据库文件和事务日志文件被认为是减少磁盘 I/O 争用的最佳做法。 尝试将磁盘 I/O 分散到尽可能多的物理轴上。 还可以通过将 BizTalk 跟踪数据库放在专用SQL Server上来减少磁盘 I/O 争用;但是,在分离数据文件和事务日志文件方面,仍应遵循上述做法。

优化BizTalk Server数据库的文件组

按照优化 Databases2 的文件组优化数据库性能中的步骤为BizTalk Server数据库创建其他文件组和文件。 这将极大地提高单磁盘配置中BizTalk Server数据库的性能。

另请参阅

优化数据库性能