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的更多相关文章

  1. ADO.NET 使用通用数据库操作类Database (SQL Server)

    一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...

  2. 【ADO.NET】 使用通用数据库操作类Database (SQL Server)

    一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...

  3. [ Database ] [ SQL Server ] SQL Server 很多不允許的操作解決方法

    說明可參考 https://blog.miniasp.com/post/2012/10/26/SQL-Server-Management-Studio-Prevent-saving-changes-t ...

  4. SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑

    SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑 关键词:CDC   原文:http://www.cnblogs.com/chenxizhang/arc ...

  5. 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- ...

  6. 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 ...

  7. 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 ...

  8. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

  9. [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 ...

随机推荐

  1. 马氏距离(Mahalanobis distance)

    马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离.它是一种有效的计算两个未知样本集的相似度的方法.与欧 ...

  2. 判断是否为gif/png图片的正确姿势

    判断是否为gif/png图片的正确姿势 1.在能取到图片后缀的前提下 1 2 3 4 5 6 7 8 9 //假设这是一个网络获取的URL NSString *path = @"http:/ ...

  3. SecureCRT在远程主机和本地之间传输文件

    概述 Linux系统不像Window系统有清晰的操作页面,数据能Copy下来,远程Linux的数据,就牵扯到本地数据与远程服务器数据交换的问题.Linux远程攻击SecureCrt提供了2种方式,可以 ...

  4. 【Java EE 学习 55】【酒店会员管理系统项目总结】

    本酒店会员管理系统使用了SSH框架和传值播客提供的协同OA静态页面. 项目地址:https://github.com/kdyzm/HotelMembersManagement 一.需求分析 酒店会员管 ...

  5. WooCommerce

    http://devework.com/woocommerce.html https://woocommerce.com/ https://woocommerce.com/product-catego ...

  6. 安装maven编译环境

    安装maven编译环境 1.默认已经装好yum并配置好yum源(推荐使用163yum源) 2.安装JDK 3.安装相关依赖环境(root用户登陆) yum install -y cmake lzo-d ...

  7. Cookie 用法 小记

    //保存cookie Cookie cookieName = new Cookie("name", realUser.getName());                 Coo ...

  8. dos下对mysql的简单操作(linux类似)

    >>>>>>>>>>>>>>>>>>>> 基础入门语句10条 1. 连接服务器  ...

  9. VBA实例收集

    1.工作表事件:固定制定区域激活,使之不能选择其他区域. Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target. ...

  10. GridView中实现DropDownList联动

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...