热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

包裹在显式事务中的SSMS中的T-SQL为什么运行得更快

如何解决《包裹在显式事务中的SSMS中的T-SQL为什么运行得更快》经验,为你挑选了1个好方法。

该查询只是将相同的值“ hello”插入表中1000次。

当此查询在显式事务中运行时(在begin tran和中包装),commit tran它会立即运行。但是,如果begin tran & commit tran注释已被注释掉,则大约需要8秒钟才能完成!

谁能解释一下?

查看下面的查询和结果:

显式:

/*------------------------
drop table Test

create table Test (Name varchar(10))

begin tran
    set nocount on
    declare @i int = 1000

    select 'START: ', getdate() -- trick to get row title printed

    while (@i > 0)
    begin
        insert into Test (Name)
            select 'hello'
        set @i = @i - 1
    end

    select 'END: ', getdate() -- trick to get row title printed
    commit tran
------------------------*/

START:  2019-10-30 17:50:54.283  
END  :  2019-10-30 17:50:54.313  

隐式:

/*------------------------
drop table Test

create table Test (Name varchar(10))

--begin tran
set nocount on
declare @i int = 1000

select 'START: ', getdate() -- trick to get row title printed

while (@i > 0)
begin
    insert into Test (Name)
        select 'hello'
    set @i = @i - 1
end

select 'END: ', getdate() -- trick to get row title printed
--commit tran
------------------------*/

START:  2019-10-30 17:51:48.203  
END  :  2019-10-30 17:51:56.520  

编辑:在我的连接设置IMPLICIT_TRANSACTIOnS= OFF。我上面所说的“隐式交易”只是缺少显式交易。



1> 小智..:

提交事务后,SQL Server需要加强(写入磁盘或受电源保护的缓存)。一个使用隐式trx,由于循环,您有1000个trx,SQL需要为trx日志执行1000个ios。

将它们包装在一个trx中时,sql只需为trx日志执行几个ios(取决于trx日志缓冲区)。因此性能更好。


@Sumith就是这样工作的。循环中的每个插入都必须是单个ATOMic事务。为了使其工作,必须为每个插入使用事务。您的带有显式事务的代码在单个事务中执行1000次插入。
@Sumith,缺少隐式事务是自动提交的,意味着每个语句本身就是一个事务。这不同于隐式事务,后者启动一个事务(可以跨越多个语句),并且必须显式提交。
推荐阅读
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • 本文讨论了在 Oracle 10gR2 和 Solaris 10 64-bit 环境下,从 XMLType 列中提取数据并插入到 VARCHAR2 列时遇到的性能问题,并提供了优化建议。 ... [详细]
  • 解决SQL Server数据库sa登录名无法连接的问题
    在安装SQL Server数据库后,使用Windows身份验证成功,但使用SQL Server身份验证时遇到问题。本文将介绍如何通过设置sa登录名的密码、启用登录名状态以及开启TCP协议来解决这一问题。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • Dell Latitude 5290 2-in-1 平板电脑黑苹果体验评测
    本文基于notebookcheck的详细数据和个人实际使用体验,对Dell Latitude 5290 2-in-1平板电脑进行评测。评测内容包括外观设计、散热性能、基准测试、游戏表现和续航能力等方面,旨在为读者提供全面的参考。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 无线鼠标应用:Remote Mouse
    Remote Mouse 是一款功能强大的无线鼠标软件,可将您的手机或平板设备变为遥控器,完美模拟键盘和鼠标操作,实现手机远程控制电脑。 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • 本文介绍了在 iOS 开发中设置图片和视图圆角的几种方法,包括通过 layer 设置圆角、使用贝塞尔曲线和 Core Graphics 框架,以及使用 CAShapeLayer 和 UIBezierPath。每种方法都有其优缺点,适用于不同的场景。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
author-avatar
丘圆圆611
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有