![]() |
1
1
您是否在事务中运行它们?不确定您所说的“中断”是什么意思,但假设它们在以下范围内,则它们是安全的:
|
![]() |
2
1
如果我对你的理解正确,你想 set the transaction isolation level 可序列化。假设MSSQL具有真正的可序列化性(可能没有;真正的可序列化性很少需要,而且实现起来往往非常昂贵),这将保证即使您同时执行多个事务,最终结果也将与执行一个事务相同(尽管 哪一个 一个事务通常是不确定的),等待它完成,然后执行另一个事务,等等。不过要小心:在数据库可序列化实现中,经常会有一些微妙的“bug”,不管它们是实际的bug还是错误的特性,因为这些东西很难正确处理。尤其令人讨厌的是,一些基于MVCC的数据库(Oracle和PostgreSQL使用MVCC,我知道Postgres列表最近正在与其DBMS讨论这些问题)并没有真正完美地实现可序列化,取而代之的是所谓的快照隔离——这提供了可序列化的99%的好处,而对性能的影响最小,但如果你只剩下1%,那就没有什么好处了。 如果SERIALIZABLE不是一个选项,或者是因为它不执行您想要的操作,或者是因为其他原因,那么您可以始终让每个SP在执行脏工作之前获取一个独占锁。这可能会导致死锁或超时,并需要在其他地方进行其他调整,因此这是一种丑陋的选择,但它应该可以完成这项工作。 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 3 年前 |