| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> SQLServer Delayed durability 延迟持久化 -> 正文阅读 |
|
[大数据]SQLServer Delayed durability 延迟持久化 |
SQLServer自2014版本推出了一项新功能:“Delayed transaction durability”。 这项功能旨在通过推迟已提交的事务持久化到事务日志文件,减少事务日志文件IO,从而提升写入性能。
在描述DELAYED DURABILITY的具体细节前,先来看下他性能提升的神奇效果。 一张表定义如下:
模拟海量小事务:10000个事务,每个事务向“dbo.t1”表中插入一条数据
在数据库默认配置下,也就是不开启DELAYED DURABILITY情况下,上面这段脚本在我的环境中执行时长:3分29秒
再次执行上面的批量命令,执行用时: 0秒! 没看错,性能提升就是这么明显!
WAL(Write Ahead Logging)机制 各种关系型数据库在实现持久化这一需求上,都采用了WAL:Write Ahead Logging 机制。 在这种机制下,假设用户的事务刚刚提交成功就发生了断电事件。 SQLServer在实现WAL机制的具体细节上,其实还有一层叫做"Log Buffer"的缓存层,如下图:
这样设计既符合ACID要求,又通过"Log Buffer"缓存提升了性能。 SQLServer为了应对这种场景,推出了折中机制:“Delayed Durability”。 开启“Delayed Durability”功能后,将"Log Buffer"中的数据刷到日志文件的时机包括:
1)强制开启DELAYED DURABILTIY,所有事务都会强制延迟
2)关闭DELAYED DURABILTIY
3)允许推迟: 每个事务自己决定是否要推迟持久化
提交事务时显示指定推迟持久化,如:
4) 查询数据库是否开启了DELAYED DURABILTIY
5) 强制刷日志文件
有可能丢失数据!
如果数据库遇到了海量小事务性能问题,并且能够容忍一定程度数据丢失(比如本身就是备库),那么就可以开启DELAYED DURABILITY来解决性能问题。 参考文章: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:26:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |