你的位置:首页 > 软件开发 > ASP.net > 关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?

关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?

发布时间:2016-09-07 11:00:04
背景: 事务是数据库管理系统的一个基本概念,事务具有四个基本特点,即ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),通过事务机制可以保证数据库的一致性和完整性。 ...

关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?

背景:

      事务是数据库管理系统的一个基本概念,事务具有四个基本特点,即ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),通过事务机制可以保证数据库的一致性和完整性。

      不过数据库事务只能在数据库实例的同一个会话级别进行事务控制。而分布式事务可以协调一个数据库实例多个会话之间的操作,甚至是多个数据库实例之间的数据库操作,并保持事务特性。但是原则上我们不推荐使用分布式事务,因为分布式事务对资源消耗较多,执行效率较差。

      然而一直以来,我们对分布式事务的代码使用和效果都存在误解:使用了TransactionScope就一定会开启分布式事务吗?

 

验证:

      我们做一个简单的Demo:两个连接字符串完全相同,ADO.NET会复用连接池中的连接,结果会如何

  using (TransactionScope ts = new TransactionScope())  {    SqlConnection conn;    conn = new SqlConnection("server=.;uid=tkk123;pwd=aaaaaa");    conn.Open();    SqlCommand cmd = conn.CreateCommand();    cmd.CommandText = "select 1 as tkk";    cmd.ExecuteNonQuery();    conn.Close();    conn = new SqlConnection("server=.;uid=tkk123;pwd=aaaaaa");    conn.Open();    cmd = conn.CreateCommand();    cmd.CommandText = "select 2 as tkk";    cmd.ExecuteNonQuery();    conn.Close();    ts.Complete();  }  Console.WriteLine("OK");  Console.ReadKey();

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录