【发布时间】:2008-09-17 21:21:56
【问题描述】:
在当今时代,事务性编程是现代开发的主要内容。并发性和容错性对于应用程序的寿命至关重要,因此,事务逻辑已变得易于实现。但是,随着应用程序的增长,事务代码似乎对应用程序的可伸缩性变得越来越沉重,当您桥接分布式事务和镜像数据集时,问题开始变得非常复杂。我很好奇,在数据大小或应用程序复杂性方面,事务经常开始成为问题的根源(导致超时、死锁、关键任务代码中的性能问题等),这些问题的修复、故障排除更麻烦或解决方法,而不是设计一个本身更具容错性的数据模型,或使用其他方法来确保数据完整性。此外,哪些设计模式可以最大限度地减少这些影响或使标准事务逻辑过时或不再存在?
--
编辑:到目前为止,我们已经得到了一些质量合理的答案,但我想我会自己发布一个答案,以提出我听说过的一些事情,以激发一些额外的创造力;我得到的大部分回应都是对这个问题的悲观看法。
另一个重要的注意事项是,并非所有死锁都是由于程序编码不当造成的。有时存在依赖于不同顺序的相似资源的关键任务操作,或者是不同查询中的复杂连接,它们相互叠加;这是一个有时似乎无法避免的问题,但我一直参与重新设计工作流程,以促进不太可能导致问题的执行顺序。
【问题讨论】:
-
这个问题很主观。此外,它非常模糊,可能过于笼统,无法得到集中的答案。你应该尝试改写它。
-
我在问题中添加了一些额外的细节,甚至根据我正在寻找的内容给出了更多的答案,但似乎这可能已被吸入 SO 漩涡中。跨度>
标签: sql performance design-patterns transactions