0

在使用事务编辑内容时,我觉得加载内容有些延迟,(测试这种情况对我来说有点困难,因为我不知道如何更好地测试它)

Transactions我对用法有一些疑问:

关于交易有一些小问题和我应该了解的事情,这些部分与这个问题有关:

我们什么时候应该在自己制作的 CMS 中使用事务?

我的案例特定说明:

  1. 我是否应该在任何 CMS 上使用事务,而我们在 Insert、Update、Retrieve、...上有存储过程?
  2. 只有在我们处理多于一张的表时才需要使用事务吗?

我使用的交易策略:

添加产品方法(使用 add Product sproc ):

            TransactionOptions txOptions = new TransactionOptions();
            using (TransactionScope txScope = new TransactionScope
              (TransactionScopeOption.Required, txOptions))
            {
                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                    LastInserted = (int)pInsertedID.Value;
                    txScope.Complete();                        
                }
                catch (Exception ex)
                {
                    logErrors.Warn(ex.Message);
                }
                finally
                {
                    command.Dispose();
                    connection.Close();
                }
4

1 回答 1

0

事务可能有助于确保数据库的一致性。例如,如果一个用于添加产品的存储过程在多个表中插入数据,并且在此过程中发生了故障,则事务可能有助于回滚整个操作,因此数据库中没有半生不熟的产品(例如在相关表格中缺少一些关键信息)。

事务范围 ( TransactionScope) 用于为代码块内运行的任何代码提供环境隐式事务。这些作用域可能有助于严重简化代码,但是,它们也可能在多线程环境中增加复杂性(不幸的是,我对这种情况知之甚少)。

因此,您提供的代码可能对确保数据库的一致性有意义,尤其是在命令使用多个表的情况下。它可能会增加一些性能开销;但是,在进行任何优化之前,最好依靠收集到的分析数据而不是任何类型的感觉(即尝试收集一些关于事务处理速度有多慢的定量数据)。现代数据库引擎通常非常有效地处理事务。以我自己的经验,由于性能开销,没有删除事务。

于 2012-09-14T11:07:15.867 回答