Hekaton是如何影响你数据库的目标恢复时间(RTO)的
这个周末我发现了SQL Server 2014里Hekaton的一个有趣副作用,很遗憾它会负面影响你数据库的目标恢复时间(Recovery Time Objective,RTO)。你已知道,对于每个本地编译表和存储过程,Hekaton都会创建一个DLL,这些都是以C语言代码实现的。这些DLL文件载入sqlservr.exe的执行空间。你可以用下列的查询通过DMV sys.dm_os_loaded_modules来查看当前载入的Hekaton表:
SELECT * FROM sys.dm_os_loaded_modules
WHERE description LIKE 'XTP%'
在CTP2里,我遇到的副作用是:当你删除对应表后存储过程时,载入的Hekaton的DLL文件并没有卸载掉。假设你创建了一个本地编译的存储过程,在一定时间后你想删除那个存储过程来重建,为了获得更好的本地编译执行计划(在Hekaton里的当前执行时间并不支持重编译)。在那个情况下,你的存储过程的老实现方式还在sqlservr.exe的执行空间里,在消耗额外的内存。当你删除表时也会同样发生,DLL本身还在内存里!
去除这些额外不需要的DLL文件的唯一方法是让你的整个数据库离线,再联机。然后当你查询DMV sys.dm_os_loaded_modules时,你会看到只有当前实现的本地编译表和存储过程被载入sqlservr.exe。当你没有特定的可用维护界面时,这是你Hekaton第一个遇到的糟糕问题。
但事情变得更加糟糕:当你重启SQL server,SQL Server会编译和链接每个原先已经生成的DLL。编译和链接每个Hekaton的DLL会占用一些CPU时间,在此期间你的数据库是处理恢复阶段,从用户角度来说,意味着你的数据库是不能访问的!即使当你尝试访问基于传统硬盘的表,在此期间,你会得到类似如下的错误信息:
Msg 922, Level 14, State 1, Line 1
Database ‘HashCollisions’ is being recovered. Waiting until recovery is finished.
你也可以在C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\xtp目录里看到原先老的.c,.obj和.dll还在,因为对于下次SQL Server的启动它们是需要。

假设你创建50个本地编译表和存储过程并立即删除。在那个情况下你在结束100个DLL文件,这些文件会在SQL Server启动期间编译和连接。我在虚拟机上测试SQL Server 2014的CTP2,我的数据库在69秒后才联机!
因此请留意这些副作用,因为它们会大幅度降低你的目标恢复时间(RTO)!设想下你在群集故障转移,在那个情况下,每个DLL必须在你另外的群集点编译和链接好,对于的终端用户,你的数据库才会联机。我说过,这是我在SQL Sever 2014 CTP2里遇到的问题,因为我希望在RTM版本发布时,微软对这方面会有所改进!
感谢关注!
参考文章:
https://www.sqlpassion.at/archive/2013/11/25/how-hekaton-will-impact-the-rto-of-your-database/
Hekaton是如何影响你数据库的目标恢复时间(RTO)的的更多相关文章
- 经验:什么影响了数据库查询速度、什么影响了MySQL性能 (转)
一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定 ...
- mysql中影响数据库性能的因素讲解
mysql中影响数据库性能的因素讲解 在本篇文章中我们给大家讲述了mysql中影响性能的因素以及相关知识点内容,有兴趣的朋友参考下 关于数据库性能的故事 面试时多多少少会讲到数据库上的事情,“你对数据 ...
- 关于数据库优化2——关于表的连接顺序,和where子句的前后顺序,是否会影响到sql的执行效率问题
有好多时候,我们常听别人说大表在前,小表在后,包括现在好多百度出来的靠前的答案都有说数据库是从右到左加载的,所以from语句最后关联的那张表会先被处理.如果三表交叉,就选择交叉表来作为基础表.等等一些 ...
- Hekaton的神话与误解
最近这段时间,我花了很多时间来更好的理解Hekaton——SQL Sever 2014里的全新内存表技术.我看了很多文章,了解了Haktaon的各种内部数据存储结构(主要是哈希索引和Bw-tree). ...
- 终极事务处理(XTP,Hekaton)——万能大招?
在SQL Server 2014里,微软引入了终极事务处理(Extreme Transaction Processing),即大家熟知的Hekaton.我在网上围观了一些文档,写这篇文章,希望可以让大 ...
- [转]Oracle10g数据库自动诊断监视工具(ADDM)使用指南
第一章 ADDM简介 在Oracle9i及之前,DBA们已经拥有了很多很好用的性能分析工具,比如,tkprof.sql_trace.statspack.set even ...
- 11g 使用rman duplicate复制数据库,创建辅助实例
一,创建所需目录 1)创建审计文件目录 PROD1@dbrac1 /dsg/oracle11$ cd $ORACLE_BASE/admin PROD1@dbrac1 /u01/app/oracle/a ...
- Oracle【IT实验室】数据库备份与恢复之四:RMAN(备份与恢复管理器)
RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件. 归档日志和控制文件.它也可以用来执行完全或不完全的数据库恢复. RMAN可以由命令行接口或者 OEM的 Backup ...
- RMAN_学习实验2_RMAN Duplicate复制数据库过程(案例)
待整理 对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用.实现这个功能我们可以借助rm ...
随机推荐
- django文件上传下载
views: def mgmt_files(request): #列出树形目录,上传文件页面 if request.method == 'POST': path_root = "D:\\py ...
- 读取XML的问题
利用SAX读取写了代码,调试了一下午却一直在parse里抛异常.尼玛,Java的库函数还真心不怎么好用. 把代码贴上来先: package com.example.gulanfinddemo; imp ...
- Android 第三方开源库收集整理(转)
原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, ...
- C++实现单例模式
昨天面试的时候,面试官让我用C++或Java实现一个单例模式. 因为设计模式是在12年的时候学习过这门课,而且当时觉得这门课很有意思,所以就把课本读了几遍,所以印象比较深刻,但是因为实际编程中很少注意 ...
- Codeforces Round #379 (Div. 2) A. Anton and Danik 水题
A. Anton and Danik 题目连接: http://codeforces.com/contest/734/problem/A Description Anton likes to play ...
- phpMyAdmin在Mac OS X上的配置和使用
本文主要记录phpMyAdmin在Mac OS X上的配置和使用,避免朋友们走弯路,浪费不必要的时间. 1. 下载: 2. 在"设置"中打开" web shar ...
- 解决vbox下安装centos不能上网问题
由于工作需要用到Centos做服务器,使用VBOX安装Centos7系统后发现不能上网,记录解决方法,以便下次使用.找到/etc/sysconfig/network-scripts/ifcfg-enp ...
- iOS开发——项目实战总结&数据持久化分析
数据持久化分析 plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 当存储大块数据时你会怎么做? 你有很多选择,比 ...
- Xcode8新特性和iOS10新特性
从 Xcode 8.0 开始,目前所有的插件都无法工作! NSLog 无法输出 -- 此bug等待正式版本... Xcode 提供了文档注释快捷键option + cmd + / 但是要把系统升级到1 ...
- Linux 导入epel源
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh http:// ...