SQL Server【提高】事务】的更多相关文章

  随着公司业务的发展,数据量增长迅速,在解决Scale Out的同时,还要考虑到主从的复制延迟问题,尽量降到1s以内满足线上业务,如果不调整,SQL Server默认的配置可能平均要3s左右.生产的复制架构采用的是推送方式进行事务复制,发布服务器下面有4个从节点,两两指向同一虚拟IP,构成负载均衡,服务于不同的线上业务.对于4个节点,发布库和分法库的压力都很大,订阅库每秒I/O能达到5M,高峰时能达到数十兆.研究并试验了一些时间,给出一些优化建议: 1.硬件.数据库设计: 使用SSD磁盘,有钱…
1.原理       我说的数据修改同步过程指的是在快照生成完毕,分发代理将快照应用于订阅服务器完成订阅服务器初始化后,发布服务器后续的更改同步到订阅服务器过程,这也就是我们常常关注的延迟.此过程主要涉及两个代理,分发代理和日志读取代理,因为我们使用的是推送订阅,所以这两个代理都工作在分发数据库上.首先,日志读取代理读取发布事务日志,并表示任何INSERT.UPDATE以及DELETE语句,然后将这些事务定时将批量复制到分发服务器的分发数据库中.分发库中存储着事务和命令,每个事务以多条命令组成.…
测试数据表量1500w+,使用初始化默认的快照代理参数,复制的三个过程包括快照初始化,订阅初始化和数据修改复制,主要对快照代理.分发代理.日志读取代理分别作了参数优化,并给出优化前后的对照实验测试. 1.初始化快照 在复制监视器中找到快照代理位置,右键,选择代理配置文件:   查看默认配置:   初始化快照时间:   2.优化参数测试 新建一个快照代理配置文件,命名为"快照代理优化参数 " 查找这个代理配置文件的profile_id use msdb 或者 这里的agent_type注…
初始化订阅主要是由分发代理分发和应用快照代理之前生成的快照,所以优化的主体是分发代理. 1.初始化订阅 首先在本地创建一个订阅,发布服务器.分发服务器和订阅服务器都在同一台服务器上,仅为了测试生产环境不要这样做 分发服务器参数配置 初始化订阅运行时间 需要注意几点: 快照代理实际执行的是BCP程序,生成快照文件: 快照代理会在快照生成的初始阶段使用锁,虽然时间很短,但是影响范围较大. 在快照生成过程中,不能对表的结构进行更改. 2.优化参数测试 新建一个分发代理配置文件,命名为"分发代理优化参数…
SQL Server 之 事务与隔离级别实例讲解 SQL Server 实现了6个隔离级别来防止并发情况下,类似企图并发的访问或修改同一数据时问题的发生.本文将带你体验全部6个隔离级别.正如你接下来将看到的,你将理解每个隔离级别所能达成的效果以及何时使用它. 一.事务简介 SQL Server的6个隔离级别中有5个是用于隔离事务的,它们因而被称作事务隔离级别.另外的一个工作于语句级别. 在现实中要求多个数据修改操作必须要么完全成功要么什么也没发生的例子.当数据被合并到数据库时,可能有多个表需要更…
事务是什么 在SQL Server中事务是构成一个工作逻辑单元的一系列任务,也就说多个任务放在一起执行,这些任务要么全部执行成功,要么全部执行失败. 通过事务我们可以保证数据的完整性,例如:用户A给用户B转1000块钱,如果从用户A的账号中扣了1000块,但是在向用户B账号添加1000块的时候执行失败,这个时候用户A说自己转了,用户B却有没收到,两个还不得打起来.所以针对于这种情况,需要使用事务,其中从用户A账号扣除1000块钱是一个任务,向用户B账号添加1000块是另一个任务,这两个任务如果都…
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 的事务和锁(一)   最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 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中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列   本文是Stairway系列的一部分:SQL Server中事务日志管理的阶梯 当事情进展顺利时,没有必要特别注意事务日志的功能或工作方式. 您只需要确信每个数据库都有正确的备份机制. 当出现问题时,了解事务日志对于采取纠正措施非常重要,尤其是在需要对数据库进行时间点恢复时! 托尼戴维斯给出了每个DBA应该知道的正确程度的细节. 在此级别中,…