等待事件介绍

IDENTITY_INSERT 为 ON 时 , 必须把需要插入的列名列出来 不然报错

澳门微尼斯人手机版,如果你曾经有那么一个不经意的心跳来自于数据库数据损坏:错误的新增、更新、删除 。那么下面的方案一定能抚平你的创伤!

 

正确例子:

  对于一个数据库小白来说,数据库的任何闪失带来的打击可说都是致命的。最初,我们让一个叫做“数据库”的小孩任性的在服务器上裸奔(没有任何数据备份),倡导自由与开放。突然有一天,这孩子生病了(数据篡改),病得很突然,很厉害,他不能和你描述他的任何感受(差异数据),那么你将苦于诊断病症。如果你现在有小孩以前的行为习惯数据(完备、差备、日志备份、尾日志备份),那么这无疑可以很快的针对治疗并康复(Recovery)!放声歌唱吧,阿拉So Easy,
哪里不会点哪里!

关于等待事件RESOURCE_SEMAPHORE_QUERY_COMPILE,官方的介绍如下:

SET IDENTITY_INSERT  table(表名) ON
insert into table(id,name) value(1,名称)

好了,欢愉过后,让我们静下来理一理上面着色的备份字面量:

 

SET IDENTITY_INSERT table OFF

    1、完备:完整数据备份(截止现在时间点,数据库完整数据)

       Occurs when the number of concurrent query
compilations reaches a throttling limit. High waits and wait times may
indicate excessive compilations, recompiles, or uncachable
plans.

    2、差备:差异数据备份(截止现在时间点,与上一份完备数据之间的差异)

 

   
3、日志备份:事务日志数据备份(截止现在时间点,与上一次日志备份的差异)

该等待事件在并发查询编译的数量达到阀值限制时出现。 等待时间较长或等待次数较多可能表明编译、重新编译或不能缓存的计划过多。

    4、尾日志备份:需手动备份(截止异常时间点,与上一次日志备份的差异)

 

    备注:

 

        1、1、2、3、4点都基于数据库恢复模式:完整模式(此模式会产生大量日志,需要定期维护日志)

等待事件分析

       
2、2、3、4点的都基于点1,即其他备份依赖至少有一次完备才能进行 

 

    
3、1、2、3点都可以使用Sqlserver维护计划来备份

内存授予的等待类型叫做“RESOURCE_SEMAPHORE”.在理解这个等待事件前,我们先来了解一下查询内存授予(query
memory
grant),它是用于在排序或连接时存储临时数据的服务器内存的一部分。查询在实际执行前需要先请求保留内存,所以会存在一个授予的动作。这样的好处是提高查询的可靠性和避免单个查询占用所有的内存。

    
4、1、2点的备份里面,虽然数据是完整的,但是事务日志记录基本没有,所以要查看历史数据变更行为,必须有日志备份

 

 

SQL
Server在收到查询时,会执行3个被定义好的步骤来返回用户所请求的结果集。

备份方案

  

  完备(1天/次)+
差备(6小时/次)+ 日志备份(30分钟/次)+
尾日志备份(可选,灾难时使用)

 

    备注:

  1. 生成编译计划(compiled
    plan)。它包括各种逻辑指令,如怎么联接数据行。

     
1、备份间隔视具体情况可调整,1天1完备针对小型数据库还行,大型数据库会造成大量冗余

2.
生成执行计划(execution
plan),它包含将编译计划中的各种逻辑引用转换成实际的对象的指令和查询执行的跟踪机制。

      
 2、ApexSQLLog是一个不错的分析日志的工具,有破解版,支持SqlServer2014

3.
从指令树的顶端开始执行。

 

 

 

生成编译计划是件开销较大的事情,因为它需要在数以百计的编译计划中找出较优的一个。它的时间通常很短,因为优化器会在找到最优的编译计划后便马上释放内存。编译主要使用内存和CPU资源。缺少可用内存可能会导致编译延迟和得到非最优的编译计划。    

by:海豚湾-丰

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注