我想知道在重新启动 SQL Server 时将执行哪些操作?
场景是,事务日志几乎满了,我的一个客户觉得系统很慢(实际上查询是不可执行的,他跟踪服务器CPU和内存使用率很高),因此他选择重新启动整个服务器。
随后,他说手术再次顺利进行。
我想知道,事务日志特有的sql server重启操作中做了哪些操作
例如,重新启动是否会强制 SQL 服务器执行检查点?甚至是备份?以便重新启动可以以某种方式释放占用的空间?
作为重启后数据库启动的一部分,每个数据库的事务日志都由 SQL Server 读取。已提交的事务会前滚,未提交的事务会回滚,并且日志中先前处于活动状态的部分将被标记为非活动状态,并保留日志文件中的大部分空间。此过程称为恢复,发生在数据库启动时,该过程作为 SQL Server 启动、AG 故障转移、镜像故障转移的一部分或在从备份还原数据库之后发生。
这可能会对性能产生影响,但重新启动服务器会影响 SQL Server 性能的许多事情。缓冲区缓存被清除,计划缓存也被清除,所有打开的连接都被断开,任何正在运行的 SQL 代理作业都被取消,列表继续。
事务日志的完整性可能是问题,或者至少是问题的一部分,但请考虑以下场景:由于参数嗅探问题,您遇到了糟糕的计划选择。这很容易导致 SQL Server 出现性能问题,因为缓存计划对于参数化查询的特定执行返回的行数不是最佳的。
由于计划缓存已被清除,此问题现在已被重新启动所掩盖。如果该问题查询的第一次执行在重新启动后选择了好的计划,您可能会在一段时间内看不到这个问题,直到再次为此查询缓存了一个糟糕的计划。
长期解决这个问题(意外的性能下降)需要一些主动监控:
另外,看看这篇文章,它是在 SQL Server 中开发性能故障排除方法的重要资源,这篇文章也有一些很好的技巧。
归档时间: |
|
查看次数: |
92 次 |
最近记录: |