我有一个存储过程,主要功能是UPDATE一个表,然后再INSERT到另外一个表。
此存储过程会有大量并发,大概每秒300左右。
现在如何保证在保持现有并发频率下,UPDATE完成后,一定会INSERT。
我现在的情况是平均每30万次执行此存储过程,就会有10个左右在存储过程只执行到一半就卡死,这样就导致我数据库里的数据不一致了。此时服务器CPU性能已达到100%。如果对上述两个动作加事务进行控制,现在就没办法处理300/秒的并发量。有没有类似事务的操作,这两个动作进行捆绑,但又不会像事务一样,如此影响速率。
此存储过程会有大量并发,大概每秒300左右。
现在如何保证在保持现有并发频率下,UPDATE完成后,一定会INSERT。
我现在的情况是平均每30万次执行此存储过程,就会有10个左右在存储过程只执行到一半就卡死,这样就导致我数据库里的数据不一致了。此时服务器CPU性能已达到100%。如果对上述两个动作加事务进行控制,现在就没办法处理300/秒的并发量。有没有类似事务的操作,这两个动作进行捆绑,但又不会像事务一样,如此影响速率。
2.就算cpu达到100%,sqlserver还是会保证事务完整的,楼主要先找到错误原因究竟是不是死锁产生;
3.代码中每一行后面增加 if @@error<>0 goto errhdl,然后在errhdl后面处理错误,可以再调用一次存储过程,或者将错误信息写到另一个表,再用作业处理