在完美的世界中,所有邮件在发布到 MessageBox 数据库后立即进行处理和传递,MessageBox 数据库永远不会增长到过多的大小。 不再引用的 MessageBox 中的任何消息都将立即被定期清理 MessageBox 数据库表的 SQL 代理作业删除。
但是,在实际方案中,通常不会以可预测的线性方式接收消息,SQL 代理作业需要时间来清理 MessageBox 数据库表。
因此,在某些情况下:MessageBox 可以非常快地增长。
以下项目可能导致 MessageBox 增长过大并妨碍整体性能:
“允许主机跟踪”选项集的 Biztalk 主机实例已停止。 这是负责将跟踪数据从 MessageBox 数据库移动到 Biztalk 跟踪数据库(BizTalkDTADb)的主机。
SQL Server 代理未运行 如果负责将数据从 MessageBox 数据库移动到 BizTalkDTADb 数据库的 SQL 作业(随后清除 MessageBox 中的数据)未运行,则可能会发生这种情况。 SQL 代理服务必须一直运行,以避免此问题。
SQL Server 作业已禁用 即使 SQL Server 代理正在运行,至关重要的是不能禁用任何默认 SQL Server 作业。
BizTalkDTADb 数据库增长过多 如果 BizTalkDTADb 数据库增长非常大,导致 BizTalkDTADb 数据库中的插入时间更长,则可能会发生这种情况。 当发生这种情况时,通过跟踪数据传递服务(TDDS)移动数据会变慢,从而导致 MessageBox 数据库中积压。 为了避免此问题,请务必定期在 BizTalkDTADb 数据库上运行 SQL Server 存档和清除作业。
磁盘 I/O 延迟过多 如果传入 MessageBox 数据库中的数据速率快于系统可以处理数据并将其移动到 BizTalkDTADb 数据库的速度,积压工作可以在 MessageBox 数据库中生成。 如果积压工作继续增加,这是一个非常严重的问题,系统性能会随着时间推移而下降。 缓解此问题的一种方法是安装更快的磁盘和/或升级硬件,以帮助确保系统能够从长时间积压的消息中恢复。
规划未来
尽管遵循上述所有最佳做法,但随着时间推移,迁移到 BizTalkDTADb 数据库的跟踪数据量将非常大。 请务必实施数据库维护计划来定期存档跟踪数据,以便系统可以继续以最佳方式执行。
可以在 BizTalkDTADb 数据库中保留的历史数据量取决于通过系统推送的消息量。 对于不受高压力和吞吐量约束的系统,此数据库的速度将增长速度较慢,并且有可能在 BizTalkDTADb 数据库中保留更多历史数据。
建议在 BizTalkDTADb 数据库中保留最少的数据,以便不会牺牲运行时性能。