Change the Target Recovery Time of a Database (SQL Server) 间接-checkpoints flushcache flushcache-message
Change the Target Recovery Time of a Database (SQL Server) 间接checkpoints flushcache flushcache-message
https://msdn.microsoft.com/en-us/library/hh403416.aspx
间接checkpoints在SQL Server2012开始引入
sql2012的target recovery time就是强制做checkpoint,强制人工干预
之前的recovery interval是大部分由sqlserver来决定何时做checkpoint,即使我们设置了recovery interval的值
默认target recovery time是0,并且数据库会使用自动checkpoints(自动checkpoints受recovery interval 服务器选项的控制)
如果设置target recovery time大于0会引起数据库使用间接checkpoints并建立一个数据库的recovery time的上限
当一个长时间运行的事务造成太多undo事件的时候,数据库的target recovery time上限是可以超越的
这个选项简单来讲就是强制控制SQL Server做checkpoint的间隔,比如设置为60秒,那么每60秒做一次checkpoint
ALTER DATABASE AdventureWorks2012 SET TARGET_RECOVERY_TIME = 60 SECONDS;
可以看到
recovery interval :是实例级选项
TARGET_RECOVERY_TIME :是数据库级选项
本来SQL Server根据数据库的一定修改量算法来进行checkpoint,现在强制按照时间间隔进行checkpoint,那么当修改量很少,并且读多写少的时候
强制checkpoint会带来磁盘物理写和磁盘的物理读,因为物理写占用了一定的IO,导致读操作受到连累,如果按照数据库的修改量算法来进行checkpoint可以
避免这种问题,修改量很少,不进行checkpoint,这时候不会影响读操作

注意
配置了间接checkpoints的数据库的在线事务可能会遭遇性能下降。间接checkpoints会确保内存中脏页的数量要低于一个阀值以便数据库还原时间在target recovery time定义的时间之内。实例级选项recovery interval刚好与数据库级选项TARGET_RECOVERY_TIME间接checkpoints相反,它使用事务数来决定恢复时间而非脏页数量。当间接checkpoints在一个数据库上开启并接收了大量的DML操作,
后台的lazywriter进程会不断刷写脏页到磁盘确保数据库设置的recovery时间在target recovery time之内。这样会造成额外的I/O活动,并造成性能瓶颈如果磁盘子系统已经超过了I/O阀值
安全
权限
需要数据库的ALTER权限
SSMS
SQL Server2012

SQL Server2008

TSQL设置语法
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
示例
设置AdventureWorks2012数据库的target recovery time为60秒
ALTER DATABASE AdventureWorks2012 SET TARGET_RECOVERY_TIME = 60 SECONDS;
http://www.cnblogs.com/MYSQLZOUQI/articles/4966137.html
评估数据库修改量,有两种方法:
第一种:是记录shared buffer里面的脏页有多少,占所有buffer的多大比例;
第二种:记录用户事务的数据修改量是多少。如果用系统的脏页数量或所占比例,来评估修改量,会不太准确,用户有可能反复修改相同的页面,脏页不多,但实际修改量很大,这时候也是应该尽快进行checkpoint,减少恢复时间的。而通过记录WAL日志的产生量,可以很好的评估这个修改量
间接checkpoints的弊端
当一个长时间运行的事务造成太多undo时间的时候,数据库的target recovery time上限是可以超越的
配置了间接checkpoints的数据库的在线事务可能会遭遇性能下降
自动检查点 实例级

间接检查点 数据库级

https://blogs.msdn.microsoft.com/psssql/2012/06/01/how-it-works-when-is-the-flushcache-message-added-to-sql-server-error-log/
flushcache就是SQLSERVER的checkpoint操作,在sql2012开始可以通过打开跟踪标志(3502和3504)查看checkpoint操作的IO吞吐量
Is Long Checkpoint就是当上一个周期的checkpoint还没执行完,下一个周期的checkpoint发现上一个周期的checkpoint还没执行完,而把flushcache-message日志打印到errorlog里
表示磁盘IO不给力,还未flush完数据
FlushCache is the SQL Server routine that performs the checkpoint operation. The following message is output to the SQL Server error log when trace flag (3504) is enabled.
2012-05-30 02:01:56.31 spid14s FlushCache: cleaned up 216539 bufs with 154471 writes in 69071 ms (avoided 11796 new dirty bufs) for db 6:0
2012-05-30 02:01:56.31 spid14s average throughput: 24.49 MB/sec, I/O saturation: 68365, context switches 80348
2012-05-30 02:01:56.31 spid14s last target outstanding: 1560, avgWriteLatency 15
Prior to SQL Server 2012 the trace flag had to be enabled in order to output the information to the SQL Server error log. (Trace flag was the only way to obtain the output.)
SQL Server 2012 adds an additional condition (is long checkpoint) to the logic. If the trace flag is enabled or the checkpoint ‘TRUE == IsLong’ the message is added to the SQL Server error log.
Is Long Checkpoint: A long checkpoint is defined as a ‘FlushCache / checkpoint’ operation on a database that has exceeded the configured recovery interval.
If your server does not have the trace flag enabled (use dbcc tracestatus(-1) to check) the message is indicating that the checkpoint process, for the indicated database, exceeded the configured recovery interval. If this is the case you should review your I/O capabilities as well as the checkpoint and recovery interval targets.
Not meeting the recovery interval target means that recovery from a crash could exceeded operational goals.
Bob Dorr – Principal SQL Server Escalation Engineer
<footer >
Tags 2008 2008 R2 Denali Engine How It Works SQL 2008 SQL 2012 SQL Denali SQL Server 2008 SQL Server 2008 R2 Troubleshooting: The DB Engine
</footer>
关于216539 bufs
FlushCache: cleaned up 216539 bufs ,一个bufs代表一个页面
刷新了216539个页面到磁盘
Change the Target Recovery Time of a Database (SQL Server) 间接-checkpoints flushcache flushcache-message的更多相关文章
- ADO.NET 使用通用数据库操作类Database (SQL Server)
一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...
- 【ADO.NET】 使用通用数据库操作类Database (SQL Server)
一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...
- [ Database ] [ SQL Server ] SQL Server 很多不允許的操作解決方法
說明可參考 https://blog.miniasp.com/post/2012/10/26/SQL-Server-Management-Studio-Prevent-saving-changes-t ...
- SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑
SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑 关键词:CDC 原文:http://www.cnblogs.com/chenxizhang/arc ...
- Easy way to change collation of all database objects in SQL Server
This info is from: http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of- ...
- Importing/Indexing database (MySQL or SQL Server) in Solr using Data Import Handler--转载
原文地址:https://gist.github.com/maxivak/3e3ee1fca32f3949f052 Install Solr download and install Solr fro ...
- P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1
P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1 May ...
- 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务
使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...
- [Windows Azure] Managing SQL Database using SQL Server Management Studio
Managing Windows Azure SQL Database using SQL Server Management Studio You can use Windows Azure SQL ...
随机推荐
- JS 模块化和打包方案收集
1.这里想讨论的是拆分规则,不是在问哪个工具怎么使用.2.这里没有在想找正确答案,因为感觉这个问题要结合具体业务场景. 随着项目开发越来越大,一开始代码全打包到一个文件的方式,让文件越来越大,接下来要 ...
- Linux 使用Crontab设置定时调用Shell文件
定时执行步骤: 利用crontab来定时执行任务大致有如下两步: 1.编写shell脚本 2.利用crontab加入到定时任务队列 一.如何建立shell脚本 程序必须以下面的行开始(必须方在文件的第 ...
- 利用C# Winform做Windows系统任务栏
最近公司做一个考试系统,需要一个答题栏,要求:占用屏幕上方一部分区域,而且始终置顶,当其他窗口最大化时"答题栏"始终置前并且不遮挡最大化窗口的任何部分!就像windows任务栏一样 ...
- dir命令只显示文件名
dir /b 就是ls -f的效果 1057 -- FILE MAPPING_web_archive.7z 2007 多校模拟 - Google Search_web_archive.7z 2083 ...
- arm工作模式笔记
linux用户态程序即应用程序,在user模式 linux内核运行在svc模式 arm七个模式: usr用户模式 fiq快速中断模式 irq普通中断模式 supervior svc模式 abort ...
- UILAbel 设置了attributedText 后省略号不显示
今天遇见个大坑呀,UILabel我设置了 attributedText ,并且设置了 lineBreakMode = NSLineBreakByTruncatingTail 就是想让多余的内容显示成省 ...
- Makefile笔记之二------make的递归执行
1.make的递归过程指的是: 在Makefile中使用"make"作为一个命令来执行本身或者其它makefile文件的过程. 2.递归的意义: 当前目录下存在一个"su ...
- dvd管理系统
>>>>>>>>>>>>>>>>>>>> 语言:java 工具:eclipse ...
- shell处理输入
1.在运行脚本时指定参数,直接在脚本名称后边跟随需要添加的参数,在运行的过程中,$0代表程序名,$1代表第一个参数,$2代表第二个参数,一直到第九个,从第十个参数开始需要变成${10}等,即需要添加花 ...
- CSS3属性box-sizing
1.box-sizing属性是CSS3的属性,有3个值:border-box.content-box.inherit. 2.默认是content-box,就是我们知道的width.padding.bo ...