Transactions 交易范围

Transactions 交易范围,transactions,msdtc,system.transactions,transactionscope,Transactions,Msdtc,System.transactions,Transactionscope,事务范围是如何工作的?它如何知道何时已经在使用另一个上下文,以及如何在代码中实现另一种作用域 我主要是一名vb.net开发人员,但如果你用它写的话,我可以阅读c 如果上述内容过于模糊: 我了解system.transactions的功能和使用方法。我想知道的是如何创建类似的库,我自己的库,我可以围绕一些代码,这些代码可以以与system.transactions范围相同的方式处理它。我计划将其与缓存模型一起使用,这将极大地增强它。我正在寻找关于事务作用域如何知道的详细信息,例如,存在父作用域,因

事务范围是如何工作的?它如何知道何时已经在使用另一个上下文,以及如何在代码中实现另一种作用域

我主要是一名vb.net开发人员,但如果你用它写的话,我可以阅读c

如果上述内容过于模糊:

我了解system.transactions的功能和使用方法。我想知道的是如何创建类似的库,我自己的库,我可以围绕一些代码,这些代码可以以与system.transactions范围相同的方式处理它。我计划将其与缓存模型一起使用,这将极大地增强它。我正在寻找关于事务作用域如何知道的详细信息,例如,存在父作用域,因此它可以附加到父作用域等等,或者提交需要在更高的级别或更高的联系人中进行

例如,如果我有以下内容

using scope1 as new system.transactions.scope
    using scope2 as new system.transactions.scope
        using scope3 as new system.transactions.scope
             scope3.commit
        end using
        scope2.commit
    end using
end using

Scope1不会提交,scope2或scope3也不会提交,因为它们的父对象都是Scope1的上下文。我希望能够用我自己的库来设置它。

我尝试一下,但我不是100%确定这个问题

就数据库而言,事务往往具有作用域。这表示事务中正在更改的数据量的覆盖范围。它们在数据库服务器中实现,不能在“代码”中更改。每个数据库服务器都有自己的实现,每个服务器(oracle、MSSQL、MySQL)都有自己的行为

一般来说,事务将锁定任何其他连接,而不是从正在修改的数据中读取数据。事务的范围将从尽可能小的范围开始,然后随着更改的数据量的增加而扩展。锁定尽可能少的数据符合数据库的最佳利益,它通过以下方式实现:

  • 锁定单个数据行中的单个列
  • 然后锁定一行数据
  • 然后锁定一页数据(可能是8096字节?)
  • 然后锁定整个数据表
如果更新修改了多行数据,则事务作用域将扩展到页面大小(针对每个服务器自定义),或锁定整个表。在事务进行期间,某些数据库服务器将允许其他连接按更新之前的方式读取表,而其他数据库服务器将阻止对数据的任何选择,直到提交事务为止

基本上,问题是您不能修改服务器的实现方式,事务范围也不需要太担心。只需确保事务仅用于相互依赖的简洁更新。我通常不使用事务。但是,再说一次,我不使用银行账户或任何其他重要的参考系统


希望这有帮助

我试试看,但我对这个问题不是100%肯定

就数据库而言,事务往往具有作用域。这表示事务中正在更改的数据量的覆盖范围。它们在数据库服务器中实现,不能在“代码”中更改。每个数据库服务器都有自己的实现,每个服务器(oracle、MSSQL、MySQL)都有自己的行为

一般来说,事务将锁定任何其他连接,而不是从正在修改的数据中读取数据。事务的范围将从尽可能小的范围开始,然后随着更改的数据量的增加而扩展。锁定尽可能少的数据符合数据库的最佳利益,它通过以下方式实现:

  • 锁定单个数据行中的单个列
  • 然后锁定一行数据
  • 然后锁定一页数据(可能是8096字节?)
  • 然后锁定整个数据表
如果更新修改了多行数据,则事务作用域将扩展到页面大小(针对每个服务器自定义),或锁定整个表。在事务进行期间,某些数据库服务器将允许其他连接按更新之前的方式读取表,而其他数据库服务器将阻止对数据的任何选择,直到提交事务为止

基本上,问题是您不能修改服务器的实现方式,事务范围也不需要太担心。只需确保事务仅用于相互依赖的简洁更新。我通常不使用事务。但是,再说一次,我不使用银行账户或任何其他重要的参考系统


希望这有帮助

你的问题很含糊,很难知道你到底在问什么并寻求答案,但这也许会有所帮助


你的问题很模糊,很难知道你到底在问什么,想要什么作为答案,但这也许会有所帮助


我推荐文章作者

我推荐文章作者

我认为我已经找到了复制范围行为的解决方案。我将很快发布这些信息,但基本上它涉及使用静态值实现idisposable来跟踪对象的嵌套实例。为了将其连接到缓存提供程序,我计划使用缓存对象的数组列表,以便在处理对象时运行某种清理。我想我也知道如何处理线程问题,但我仍在处理后勤问题。完成后,我将发布代码,以便在velocity之上部署它,以应对当前面临的一些挑战。

我认为我已经找到了重现作用域行为的解决方案。我将很快发布这些信息,但基本上它涉及使用静态值实现idisposable来跟踪对象的嵌套实例。为了将它连接到缓存提供程序,我计划使用缓存对象的数组列表,然后运行一些
[ThreadStatic]
private static Context scopeContextThingy;