bil*_*lpg 4 sql sql-server transactions
我正在寻找类似于SQL事务的东西.我需要交易提供的常规保护,但我不希望它减慢任何其他人的速度.
想象一下,客户端A连接到数据库并运行以下命令:
BEGIN TRAN
SELECT (something)
(Wait a few seconds maybe.)
UPDATE (something)
COMMIT
Run Code Online (Sandbox Code Playgroud)
在SELECT和UPDATE之间,客户端B出现并尝试进行查询,在正常情况下,最终必须等待A进行COMMIT.
我想要的是客户A以这样一种方式打开它的交易,应该B出现并执行它的查询,客户端A将发现它的事务立即回滚并且后续命令失败.客户B只会遇到最小的延迟.
(请注意,SELECT和UPDATE只是说明性的命令.)
更新中...
我有一个高优先级的任务(客户端B),有时(一个月一次)得到一个SQL超时错误,一个低优先级任务(客户端A)有一个导致超时的事务.我宁愿低优先级任务失败并在下一个周期重新尝试.
我最终通过完全消除事务并用一组非正式的标志替换它们来解决这个问题.如果引发了正确的标志集,那么查询被重构为仅执行某些操作,并且我添加了一些清除了回滚过去将清除的废弃记录的内容.
我通过消除交易来修复我的交易问题.