7
回答
使用 事务 和不使用事务 哪个速度快?

使用 事务 和不使用事务 哪个速度快??我想的是 事务 速度会慢才对,因为可以进行回滚操作

可是我同学说 “以前不会事务查询,10W条插入语句执行了半天,用了事务查询,1秒搞定.”

<无标签>
举报
foxidea
发帖于7年前 7回/669阅
共有7个答案 最后回答: 7年前

引用来自“傅小黑”的答案

一般来说事务会快得多。。。。
因为很多数据库不用事务的意思就是:每条语句一个事务...,sqlite,mysql都是这样的。所以就...了
    class Program
    {
        /// <summary>
        /// 事务 53 秒
        /// 无事务 27 秒
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            DateTime dta = DateTime.Now;
            SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Test;User ID=fhz;Password=fhzadmin");
            conn.Open();
            //SqlTransaction ST = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            //cmd.Transaction = ST;
            cmd.Connection = conn;
            for (int i = 0; i < 65535; i++)
			{
                cmd.CommandText = "insert into [Table_1](Title) values('" + i + "')";
                cmd.ExecuteNonQuery();
                Console.WriteLine(i);
			}
            //ST.Commit();            
            cmd.Dispose();          
            
            conn.Close();
            conn.Dispose();
            DateTime dtb = DateTime.Now;
            TimeSpan TS = dtb.Subtract(dta);


            Console.WriteLine("执行了:" + TS.Seconds);
            Console.WriteLine("success!");
            Console.ReadLine();
        }
    }

环境:SQL Server 2005 Express  + .net 2.0

实验证明 :无 事务 比 使用事务 速度 快了一倍。

这是相对的,而不是绝对的。通常说索引可以加快查询速度,但只有在数据量达到一定规模的情况下是这样的。个人认为简单操作,使用事务的效果不是非常明显。只有在 批量 操作时效果才是明显的。比如一次添加100条记录,使用事务效果会比较明显。可以这样理解:到银行存钱,10个存折,到一个柜台办理,显然是优于分别到10个柜台办理。省去了排队等候过程。可省去了调取你账户信息的过程。
--- 共有 2 条评论 ---
lucika@ExtremeTalk : 你贴的代码是插入操作。在插入操作时,批量插入使用事务,效果明显。查询时,不需要使用事务,个人认为查询速度会慢。使用事务可以看做是批量操作,而不使用事务时,可以看做是单次操作。 7年前 回复
ExtremeTalk查询为啥要事务? 7年前 回复

毫无疑问”事务“慢!你想一下好了,一件事请10个步骤,如果使用事务,必须监测每一个步骤的执行,任何一步失败都必须rollback。不使用事务就是不用保证10个步骤全部完成,我执行第一个步骤之后,第二部失败就完事了,因为无关紧要。以淘宝为例,你浏览商品的时候根本不用事务,但是当你付钱的时候就用事务了。事务是保证一件事情要么全部完成,要么什么都不做。

顶部