前言 接下来我们将SQL Server基础系列还剩下最后几节内容结束,后续再来讲解SQL Server性能调优,我们开始进入主题. SQL Server事务对本地变量影响 事务对变量影响具体是指什么意思呢,换句话说就是当我们回滚事务和提交事务之后对本地变量是否起作用呢,下面我们来看下具体例子. PRINT '回滚事务之后测试' DECLARE @FlagINT INT SET @FlagInt = PRINT @FlagInt ---- 此时变量值为1 BEGIN TRANSACTION SET…
BEGIN DISTRIBUTED TRANSACTION指定一个由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务的起始. 语法BEGIN DISTRIBUTED TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] 参数transaction_name 是用户定义的事务名,用于跟踪 MS DTC 实用工具中的分布式事务.transaction_name 必须符合标识符规…
SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列   本文是Stairway系列的一部分:SQL Server中事务日志管理的阶梯 当事情进展顺利时,没有必要特别注意事务日志的功能或工作方式. 您只需要确信每个数据库都有正确的备份机制. 当出现问题时,了解事务日志对于采取纠正措施非常重要,尤其是在需要对数据库进行时间点恢复时! 托尼戴维斯给出了每个DBA应该知道的正确程度的细节. 在此级别中,…
SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情进展顺利时,无需特别注意事务日志的作用或工作方式.您只需要确信每个数据库都有正确的备份机制.当出现问题时,了解事务日志对于采取纠正措施很重要,特别是在需要紧急恢复数据库的时间点时!Tony Davis给出了每个DBA都应该知道的正确的细节级别. 在此级别中,我们将回顾在完全恢复模式下工作时进行日志备…
SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作主要来自于临时表,在测试之前,我们已经对部分消耗资源较多的语句进行了跟踪. 对一些使用临时表的语句进行了修改,但是肯定还是有落网之鱼.我们需要对其进行甄别,做到进一步的优化. 在开始之前,我们先来了解下什么样的操作会使用到临时表: 时的用户对象, 比如临时表,表变量等(#,##,@开头的一些变量)…
事务是什么 在SQL Server中事务是构成一个工作逻辑单元的一系列任务,也就说多个任务放在一起执行,这些任务要么全部执行成功,要么全部执行失败. 通过事务我们可以保证数据的完整性,例如:用户A给用户B转1000块钱,如果从用户A的账号中扣了1000块,但是在向用户B账号添加1000块的时候执行失败,这个时候用户A说自己转了,用户B却有没收到,两个还不得打起来.所以针对于这种情况,需要使用事务,其中从用户A账号扣除1000块钱是一个任务,向用户B账号添加1000块是另一个任务,这两个任务如果都…
  随着公司业务的发展,数据量增长迅速,在解决Scale Out的同时,还要考虑到主从的复制延迟问题,尽量降到1s以内满足线上业务,如果不调整,SQL Server默认的配置可能平均要3s左右.生产的复制架构采用的是推送方式进行事务复制,发布服务器下面有4个从节点,两两指向同一虚拟IP,构成负载均衡,服务于不同的线上业务.对于4个节点,发布库和分法库的压力都很大,订阅库每秒I/O能达到5M,高峰时能达到数十兆.研究并试验了一些时间,给出一些优化建议: 1.硬件.数据库设计: 使用SSD磁盘,有钱…
SQL Server 的事务和锁(一)   最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT @findCount=COUNT(id) FROM MyTable WHERE [fk_related_id]=@Argument   IF (@findCount > 0) BEGIN     ROLLBACK TRANSACTION     RETURN…
简介 本文将介绍SQL Server的事务日志中记录了哪一些信息,如何来读懂这些事务日志中信息.首先介绍一个微软没有公开的函数fn_dblog,在文章的接下来的部分主要用到这个函数来读取事务日志. fn_dblog(@StartingLSN,@EndingLSN) --@StartingLSN:表示起始的LSN号,如果为NULL值则表示从首日志记录开始查询. --@EndingLSN:表示结束的LSN号,如果为NULL值则表示查询到尾日志记录. --需要注意的是我们平时所看到的LSN都是十六进制…
SQL Server 之 事务与隔离级别实例讲解 SQL Server 实现了6个隔离级别来防止并发情况下,类似企图并发的访问或修改同一数据时问题的发生.本文将带你体验全部6个隔离级别.正如你接下来将看到的,你将理解每个隔离级别所能达成的效果以及何时使用它. 一.事务简介 SQL Server的6个隔离级别中有5个是用于隔离事务的,它们因而被称作事务隔离级别.另外的一个工作于语句级别. 在现实中要求多个数据修改操作必须要么完全成功要么什么也没发生的例子.当数据被合并到数据库时,可能有多个表需要更…