我们的一个表有一个用于保存故障排除信息的列,它是一种 XML 数据类型,与行相关,因此如果出现问题,我们可以快速查看该事务发生的所有事情。这已成为一个问题,因为它会急剧增加数据库大小。一个月后通常不需要检索此信息,这是在浪费宝贵的空间。
我们的解决方案是使用插入触发器在一个月大后将 XML 日志列清空。我们担心的是,这是否会影响表的性能,足以引起注意并可能导致问题?
以下是我们正在努力实现的目标:
CREATE PROCEDURE [dbo].[sp_ClearTransactionXmlLogs]
AS
UPDATE [dbo].[CCResponse]
SET [TransactionXML] = NULL
WHERE [DateSaved] < DATEADD(MONTH,-1,GETDATE())
AND [TransactionXML] IS NOT NULL;
CREATE TRIGGER [dbo].[tr_ClearTransactionXmlLogs]
ON [dbo].[CCResponse]
AFTER INSERT
AS EXEC sp_ClearTransactionXmlLogs;