断言
SQL – when should you use “with (nolock)”
在一家当地的金融机构,我被他们的程序员斥责,他们表达了我的观点(他们的程序员对它的迷恋)(b)锁定MS SQL Server 2005数据库中的问题对我来说没有多大意义.
如果财务操作从未更新,删除甚至不正确的操作(“交易”的一部分?)通过将新的更正记录插入(添加)到数据库中来纠正,可能存在锁定,阻塞,死锁的问题?
用英语这个术语是什么意思?在其他语言中,它被称为storno,stornoed(?)操作/记录.
因此,据我所知,“交易”实际上永远不会回滚,并且永远不会有不正确/不存在的记录,只有非实现的记录.
更新:
我用谷歌搜索了storno,用英语定义或用在英文文本中找不到任何结果.
我发现只有意大利语的storno(拉丁字母)的定义.
但会计是在意大利发明的,许多意大利会计术语用于其他语言,例如俄罗斯会计(银行业).
我还以为这是国际公认的金融业务会计惯例,不是吗?
UPDATE2:
S.Lott给了我链接到The way that transactions are reversed in an ERP application is a big deal!告诉storn是逆转交易.
嗯,这是不正确的. Storno不仅仅是转换,它是纠正错误操作的任何操作(交易的一部分),尽管两个操作组合似乎可以逆转交易(包括2个操作 – 对目标和源账户进行贷记和借记).
那么,storno不是全世界常见的财务会计实践吗?
无论如何,我想避免讨论会计细节/技术/术语,并在永远不删除或更新记录时将问题限制在上下文中.
在这种情况下,锁定,阻塞,死锁,性能可能存在哪些问题?
最佳答案 “Storno Transactions”或“Reversing Transactions”总结得很好.在很多地方.
http://richardatopenbravo.blogspot.com/2010/02/way-that-transactions-are-reversed-in.html
http://help.sap.com/saphelp_46b/helpdata/en/d2/6f921f415e11d182b10000e829fbfe/content.htm
http://forum.wordreference.com/showthread.php?t=1875166
不要将软件实施与会计混为一谈.通过最小的锁定可以获得合理的实现.然而,这并不意味着什么.您可能因为软件(a)设计糟糕而且(b)因设计不良而需要小心锁定而受到谴责.
What are the possible issues…?
由于我们不知道软件的编写有多好或多差,因此无法猜测.他们可能对你不熟悉的系统有所了解.
一个简单的storno交易系统应该易于实现.实际上,它应该是微不足道的.
如果在插入期间使用页级锁定,则一对“仅插入”表仍会遇到死锁.
第1页的表A在事务X中有一个插入.
第2页的表B在事务Y中有一个插入.
第2页的表B在事务X中有一个插入.
第1页的表A在事务Y中有一个插入.
避免死锁的唯一方法是让整个系统使用单个表.或者将所有交易限制在一个表中.或者使用单个数据库范围的锁.
如果您有多表操作(和页面级锁定),那么即使使用仅插入操作,您仍然可能存在潜在的死锁.显然它很少见,但仍有可能.