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

foxidea 发布于 2011/10/18 09:52
阅读 679
收藏 0

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

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

加载中
1
bastetwang
bastetwang

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

一般来说事务会快得多。。。。
因为很多数据库不用事务的意思就是:每条语句一个事务...,sqlite,mysql都是这样的。所以就...了
0
Jackarain
Jackarain
不要想当然嘛, 有疑问, 写个程序去验证它就是了.
0
傅小黑
傅小黑
一般来说事务会快得多。。。。
foxidea
foxidea
不明白 为何 事务 可以回滚,而且速度还快??
0
foxidea
foxidea
    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

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

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

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

0
北落
北落
用所谓的高速 插入的话 估计没啥区别
小香蕉
小香蕉
此事无蹊跷报告完毕
小香蕉
小香蕉
Hi there. Have we met somewhere? I think I recognize your face.
返回顶部
顶部