SQL Server 2014新特性——事务持久性控制
控制事务持久性
SQL Server 2014之后事务分为2种:完全持久, 默认或延迟的持久。
完全持久,当事务被提交之后,会把事务日志写入到磁盘,完成后返回给客户端。
延迟持久,事务提交是异步的,在事务写入到磁盘前,事务提交返回给客户端。
以前都是完全持久,现在多了个延迟持久,延迟持久只有当日志缓存刷新的时候才会被写入到磁盘保证事务完整性。
目录
完全持久事务和延迟持久事务持久性
说白了,完成持久事务完全保证事务的持久性,延迟持久事务延迟保证事务的持久性。
完全持久事务
只要存在以下情况,就应使用完全持久事务:
1.系统无法承受任何数据丢失
2.造成性能瓶颈的原因不是事务日志写入延迟
完全持久事务保证:
1.事务提交后,修改对其他事务时可见的。
2.完全保证事务的持久性
延迟持久性事务
延迟持久性事务,通过异步的把事务日志写入到磁盘来实现,在写入到磁盘之前,日志被保存在缓存区中,当缓冲区满了或者刷新缓冲区了把日志写入磁盘,依次来减少磁盘资源争用:
1.事务提交不用等待写入到磁盘完成
2.减少磁盘争用从而提高,事务吞吐量。
使用场景:
1.可以忍受一定数据的丢失
2.在事务日志写入的时候发现瓶颈
3.磁盘资源争用率很高
延迟持久事务保证:
1.提交后,修改对其他事务可见
2.持久性只能靠缓存刷新来保证:
事务日志缓存在以下情况下刷新:
a.当同一个数据库的完全持久性事务提交,并成功
b.成功执行存储过程sp_flush_log
c.缓存区满了,自动刷新
如何控制事务的持久性
数据库级别
ALTER DATABASE … SET DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
DISABLE:默认设置,不管如何保持完全持久性
ALLOWD:允许延迟持久性执行,要看存储过程,或者TSQL级别的设置
FORCED:强制所有的事务都是延迟持久性的
存储过程级别
DELAYED_DURABILITY = { OFF | ON }
OFF:默认设置,不使用延迟持久事务
ON:启动延迟持久事务
CREATE PROCEDURE <procedureName> …
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
DELAYED_DURABILITY = ON,
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'English'
…
)
END
语句级别
COMMIT [ { TRAN | TRANSACTION } ] [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]
OFF:默认设置,不使用延迟持久事务
ON:启动延迟持久事务
如何强制日志刷新
1.提交完全持久性事务
2.使用系统存储过程sp_flush_log
延迟持续性和其他 SQL Server 功能
更改跟踪和变更数据捕获
具有更改跟踪属性的所有事务都是完全持久事务。 如果一个事务的所有写入操作都对表进行,而这些表支持更改跟踪或变更数据捕获 (CDC),则该事务具有更改跟踪属性。
崩溃恢复
一致性可得到保证,但已提交的延迟持久事务的一些更改可能会丢失。
跨数据库和 DTC
如果事务跨数据库或是分布式事务,则无论数据库或事务提交设置如何,它都是完全持久事务。
AlwaysOn 可用性组和镜像
延迟持久事务并不能保证主数据库或任何辅助数据库的持续性。 此外,它们也不保证了解辅助数据库的事务。 提交后,在从同步辅助数据接收到 ACK 之前,控制权就会归还客户端。
故障转移群集
某些延迟持久事务写入可能会丢失。
事务复制
延迟持久事务并不保证其复制。 只有在事务成为持久事务后才会得到复制。
日志传送
传送的日志中仅包含已成为持久事务的事务。
日志备份
备份中仅包含已成为持久事务的事务。
参考:
SQL Server 2014新特性——事务持久性控制的更多相关文章
- SQL Server 2014 新特性——内存数据库
SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...
- SQL Server 2014 新特性——内存数据库(转载)
目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 内存优化表的索引 并发能力的提升 和竞争对手相比几点 ...
- 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...
- SQL Server 2014新特性——Buffer Pool扩展
Buffer Pool扩展 Buffer Pool扩展是buffer pool 和非易失的SSD硬盘做连接.以SSD硬盘的特点来提高随机读性能. 缓冲池扩展优点 SQL Server读以随机读为主,S ...
- SQL Server 2014 新特性:IO资源调控
谈谈我的微软特约稿:<SQL Server 2014 新特性:IO资源调控> 2014-07-01 10:19 by 听风吹雨, 570 阅读, 16 评论, 收藏, 收藏 一.本文所涉及 ...
- 小心SQL SERVER 2014新特性——基数评估引起一些性能问题
在前阵子写的一篇博文"SQL SERVER 2014 下IF EXITS 居然引起执行计划变更的案例分享"里介绍了数据库从SQL SERVER 2005升级到 SQL SERVER ...
- SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer
SQL Server 2014新特性:五个关键点带你了解Excel下的Data Explorer Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企 ...
- [SQL Server 2014] SQL Server 2014新特性探秘
SQL Server 2014新特性探秘(1)-内存数据库 简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQ ...
- SQL Server 2014新特性:其他
AlwaysOn 增强功能 SQL Server 2014 包含针对 AlwaysOn 故障转移群集实例和 AlwaysOn 可用性组的以下增强功能: “添加 Azure 副本向导”简化了用于 Alw ...
随机推荐
- java.lang.NullPointerException org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
采用SSH框架时出现了 java.lang.NullPointerException org.apache.struts2.impl.StrutsActionProxy.getErrorMessage ...
- sina sae开发中出现的问题
都是些小问题,但既然出现了,下次就该避免! 网站加载速度慢: 1.安装 Disable Google Fonts 字体插件即可 2.删代码 http://jingyan.baidu.com/arti ...
- 一个bug
bug原因: maven的project重新更新了一下project name,然后在更新过程中,卡死了,就强制退出.结果,就再也进不去eclipse了.看了eclipse的启动日志,各种报错,找不到 ...
- TestNG官方文档中文版(2)-annotation
TestNG的官方文档的中文翻译版第二章,原文请见 http://testng.org/doc/documentation-main.html 2 - Annotation 这里是TestNG中用到的 ...
- mysql 5.6 read-committed隔离级别下并发插入唯一索引导致死锁一例
今天,某个环境又发生了死锁,如下: *** (1) TRANSACTION:TRANSACTION 735307073, ACTIVE 0 sec insertingmysql tables in u ...
- 设计模式之 面向对象的养猪厂的故事,C#演示(二)
(三) 优先使用聚合,而不是继承 有一段时间,养猪场的老板雇用了清洁工人来打扫猪舍.但有一天,老板忽然对自己说"不对啊,既然我有机器人,为什么还要雇人来做这件事情?应该让机器人来打扫宿舍!& ...
- IO流(二)__BufferedReader和BufferedWriter
BufferedReader和BufferedWriter 字符流的缓冲区:缓冲区的而出现提高了对数据的读写效率对应类:BufferedWriter BufferedReader缓冲区要结合流才可以 ...
- The template engine
Play has an efficient templating system which allows to dynamically generate HTML, XML, JSON or any ...
- sDashboard:简单的,轻量级的 jQuery 仪表板插件
sDashboard 是一个轻量的仪表板 jQuery 插件,转换一个对象数组到仪表板.数组中的每个对象将被呈现为一个仪表板组件,可以通过左右拖 动重新排列. sDashboards 内置渲染 Da ...
- [deviceone开发]-优惠券商户管理端App开源
一.简介 这是一个优惠券的商主端,也就是配置发送优惠券的App 页面和交互还是像纳豆那样非常漂亮流畅,大家可以参考一下 二.效果图 三.源码分享 https://github.com/do-proje ...