Sql server 如何处理经常插入的表中的数据
我有一个表dbo.RawMessage,它允许另一个系统频繁(每秒插入2条记录)插入数据 我需要处理RawMessage中的数据,并将处理后的数据放入dbo.ProcessedMessage中 因为处理逻辑不是很完整,所以我的方法是在RawMessage表中添加一个insert触发器,但有时会出现死锁 我正在使用SQLServerExpress 我的问题是: 1.这是stuipid方法吗? 2.如果没有,如何改进?Sql server 如何处理经常插入的表中的数据,sql-server,triggers,database-deadlocks,Sql Server,Triggers,Database Deadlocks,我有一个表dbo.RawMessage,它允许另一个系统频繁(每秒插入2条记录)插入数据 我需要处理RawMessage中的数据,并将处理后的数据放入dbo.ProcessedMessage中 因为处理逻辑不是很完整,所以我的方法是在RawMessage表中添加一个insert触发器,但有时会出现死锁 我正在使用SQLServerExpress 我的问题是: 1.这是stuipid方法吗? 2.如果没有,如何改进? 3.如果是,请指导我优雅的方法通常,我们尝试引导应用程序/用户远离插入原始数据-
3.如果是,请指导我优雅的方法通常,我们尝试引导应用程序/用户远离
插入原始数据->触发处理->插入已处理的
方法,而转向类似执行处理(原始数据)->插入已处理的
方法。单凭这一点就可以解决死锁问题,这与触发器处理过程中实际发生的情况有很大关系。忘记触摸dbo.RawMessage。这部分已经修复。你能解释一下死锁的原因吗?因为我不认为这是显而易见的!我理解,当您在dbo.RawMessage表中插入时,会在dbo.RawMessage上获取X锁,并且由于触发器,会在dbo.ProcessedMessage表上获取X锁,但这本身并不能证明死锁是正确的,或者是这样吗?通常我们会尝试引导应用程序/用户远离INSERT raw data->Trigger processing->INSERT Processed
方法,而转向EXEC spProcessing(raw data)->INSERT Processed
方法。单凭这一点就可以解决死锁问题,这与触发器处理过程中实际发生的情况有很大关系。忘记触摸dbo.RawMessage。这部分已经修复。你能解释一下死锁的原因吗?因为我不认为这是显而易见的!我知道,当您插入dbo.RawMessage表时,会在dbo.RawMessage和dbo.ProcessedMessage表上(由于触发器)上获取X锁,但这本身并不能证明死锁是正确的,还是正确的?