云宝典(ZDNet ipad app)
ZDNet中国[其他]


当前位置:ZDNet > 服务器频道 > 虚拟化 > VMware > 实验:SQL Server和VMware这对冤家或致命

实验:SQL Server和VMware这对冤家或致命


ZDNet 虚拟化 来源: 51CTO 2011年10月31日 评论(0)
关键词: VMware SQL Server 虚拟机
本文摘要

在本次试验中,我们使用WMPlayer 2.0.2.作为访客系统,使用Vista惠普作为主机系统。这个问题很有可能不影响ESX服务器,但是我们仍在等待VMware方面给予确认:ESX服务器完全尊重微软SQL Server在输入/输出方面的核心需求。

在本页阅读全文(共2页)

在本次试验中,我们使用WMPlayer 2.0.2.作为访客系统,使用Vista惠普作为主机系统。这个问题很有可能不影响ESX服务器,但是我们仍在等待VMware方面给予确认:ESX服务器完全尊重微软SQL Server在输入/输出方面的核心需求。

现在虚拟机变得越来越流行。它们常常用于在物理机上创建“安全沙箱”。管理员们可能会往这些虚拟机里面装入一些程序,偶尔会装入SQL Server。遗憾的是,将SQL Server装入到虚拟机里面可能会带来灾难!

我们不妨短暂回顾一下30年前的数据库状况。所有数据库在拥有存储过程、分区视图、XML及如今的所有其他附加功能之前,它们的一项关键特性是什么?自一开始,所有数据库(MySQL等“玩具”数据库除外)都包括某种类型的预写式日志机制,以确保数据完整性。MS SQL中的LDF日志,甲骨文数据库中的Undo(撤消)日志和redo(重做)日志,它们都确保了执行COMMIT(提交)语句后,保证数据保存起来。

为了在Windows上实现这一机制,SQL Server为输入输出操作标上了WRITETHRU和NOBUFFERING这两个标记。SQL Server读取时,它使用自己的高速缓存来读取数据,而不使用操作系统的高速缓存。SQL Server写入时,它要求操作系统等到该操作完成。请注意:SQL Server将一切置于其掌控之下,根本不使用操作系统的高速缓存。这是SQL Server与其他应用程序之间的一个关键区别(见图1)。  

  

图1

从主机系统的角度来看,当SQL Server在虚拟机里面运行时,会发生什么情况呢?主机系统并不知道“安全沙箱”里面的内容。至于里面运行的是Windows、Linux还是另一款操作系统,主机系统一无所知。这就使得它完全不知道虚拟机里面的操作系统标记。因此,当虚拟机“请求”主机系统写入数据时,满足该请求的方式与普通的非SQL Server应用程序完全一样。写入操作非同步完成,使用高速缓存(同样见图1)。

这个区别会带来几个影响,既有好的影响,也有坏的影响。先来说说好的影响,性能监视器(Perfmon)工具的数据显示,VMWare下的SQL Server运行起来常常速度更快(见图2)!  

  

图2

考虑到性能监视器工具只是每秒更新一次图表,只好人为减慢输入输出系统的速度,才能观察到其影响。如图所示,写入操作在虚拟机上完成后(以垂直的绿线为分界点),物理机上仍然有写入操作。

这带来了不好的影响。请注意:COMMIT(提交)语句在虚拟机上执行时,数据并没有送到输入输出系统。数据仅仅发送到了物理机。遗憾的是,SQL Server与VMWare一起运行时,停电等干扰因素会导致你丢失报告为“已提交”的事务数据。更为糟糕的是,万一出现这种干扰因素,高速缓存就会改变写入顺序,导致数据库被损坏!

  • 第1页:SQL Server与VMWare一起运行数据库被毁
  • 本文关键词: VMware SQL Server 虚拟机
  • 转发 腾讯微博探客微博RSS订阅
文章评论
  登录 (没有帐户?快速注册)
使用第三方帐号登录:

VMware相关投票
VMware相关用户
推荐词条
CNET Networks
百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。
ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134