SQL Server CheckPoint的几个误区
有关CheckPoint的概念对大多数SQL Server开发或DBA人员都不陌生。但是包括我自己在内,大家对于CheckPoint都或多或少存在某些误区,最近和高文佳同学(感谢高同学的探讨)关于该处进行过一些探讨,整理出来几个误区。 1.CheckPoint实例级别,而不是数据库级
有关CheckPoint的概念对大多数SQL Server开发或DBA人员都不陌生。但是包括我自己在内,大家对于CheckPoint都或多或少存在某些误区,最近和高文佳同学(感谢高同学的探讨)关于该处进行过一些探讨,整理出来几个误区。
1.CheckPoint实例级别,而不是数据库级别
CheckPoint的时间虽然可以在实例级别进行设置,但CheckPoint的过程是以数据库为粒度。从CheckPoint在Redo和Undo的作用来看,CheckPoint是为了优化IO和减少Recovery时间,而Recovery是需要日志支持,因此日志是数据库级别的概念,因此可以知道CheckPoint是以数据库为单位进行的。
我们来做一个简单的实验,分别设置两个连接A和B,A和B使用不同的数据库并修改数据产生脏数据,在A上进行了CheckPoint后,A连接的数据库脏页全部写入磁盘,而B连接产生的脏页依然驻留在Buffer中,因此可以确定CheckPoint是数据库级别而不是服务器级别。
,因为SQL Server此时需要保证所有的数据写入磁盘,从而保证了数据库一致性,如果没有活动的事务,那么这种关闭方式叫做Clean ShutDown,这意味着该数据本身一致,因此即使没有日志,MDF也可以附加。
7.CheckPoint是一个时间点(高同学补充)
错误,这是打游戏存档的想法,从哪存进度,从哪取进度,是某个时间点。在SQL Server中,CheckPoint是一个完整的过程,这个过程的耗时取决于脏数据的大小,更多资料,请参阅MSDN:
8.引发自动CheckPoint的条件是内存中脏页的多少(高同学补充)
错误,CheckPoint的触发条件,是在CheckPoint期间生成日志的大小。因此,大家见过内存中有很多脏页,却不引发CheckPoint的情况。
9.当数据所在磁盘压力大时,通过checkpoint pages/ sec 计数器来观察写入磁盘的脏页(高同学补充)
部分正确。实际上,脏页被写入磁盘一共有3中方式,CheckPoint仅仅是其中一种,我们还需要将Lazy writes/sec考虑在内。
10.TempDB上永远不会写入脏页
错误。TempdB是一个特殊的数据库,永远只能简单恢复模式,如果您在TempDB上造成大量脏页,自动CheckPoint时会发现的确不会有任何脏页写入操作,但手动CheckPoint时,脏页依然会被写入磁盘。
最后,,再次感谢高文佳同学和我探讨。
上一篇: MongoDB 副本集自动复制 Replica Set
下一篇: php MySQL连接测试
推荐阅读
-
SQL Server索引管理的六大铁律
-
配置 SQL Server 2005 以允许远程连接的方法
-
解决SQL Server数据库占内存过多的问题
-
php连接sql server的三种方法小结
-
对比MySQL与SQL SERVER2005的触发器写法_MySQL
-
oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用 博客分类: database Oracle配置管理网络协议数据结构SQL Server
-
Win10打开SQL Server数据库服务的方法
-
SQL Server的存储过程概述
-
SQL Server的几个常用快捷键记录
-
Oracle 与 SQL Server的简单常用的插入语句的区别