要建设稳定运行的虚拟化SQL Server系统,关键是确保虚拟化管理软件配置能提供数据库所需的资源。SQL Server是CPU密集型技术,因此支撑它的虚拟机需要能获得充足的处理器资源,同时不能引起与其它虚拟机的资源争用。 SQL Server虚拟化往往比较复杂,因为有很多因素要考虑,包括控制CPU分配和资源利用率,还要配置SQL Server虚拟机的内容来保障可扩展性,避免运行处理任务时内存不足带来问题。微软公司的Hyper-V虚拟化软件提供了帮助满足这些工作需求的工具,至少可以满足组织在使用该技术时需要的配置工作。 首先,Hyper-V包含许多不同的设置项,可以用来控制每个虚拟机CPU资源分配,如图1所示: 在Hyper-V中设置控制虚拟机资源分配 图1:在Hyper-V中设置控制虚拟机资源分配 默认情况下,Hyper-V管理器只给虚拟机分配一个处理器,所以要给SQL Server虚拟机提供合适数量的CPU,要考虑该服务器未来规划负载以及SQL Server授权情况。还有,为了确保虚拟SQL Server获得足够的CPU资源,你可以使用“虚拟机保护”设置选项,选择保护特定虚拟机可用资源的百分比。 有多种方法可以避免虚拟SQL Server产生CPU资源竞争。例如,你可以调整“虚拟机限制”和“相对权重”设置(在资源控制面板中),控制SQL Server虚拟机的CPU资源消耗情况。另一种方案是对相邻虚拟机应用保护,避免其它虚拟机过度消耗资源。不过,这种方案也有点麻烦,因为虚拟机可能会被迁移到其它主机。 此外,Windows Server 2016引入了托管资源保护机制,如果虚拟机占用太多现有硬件资源,该机制会强制停止。它能对CPU消耗进行主机级别的监控,如果虚拟机开始消耗过多CPU资源,该功能会自动调节处理器资源。 想要使用虚拟化SQL Server的IT团队还应该关注虚拟机的内存配置,图2中Hyper-V提供了内存配置选项。 在Hyper-V中设置控制虚拟机资源分配 图2:Hyper-V针对虚拟机的内存配置选项 微软的hypervisor提供了两种方式使用内容:动态内存分配和静态配置。动态内存是Hyper-V的特色,专为提升系统物理内存使用效率而设计,它把内存设计为共享资源,可以在不同的虚拟机之间按需进行再分配。然而,该功能对SQL Server来说很危险,因为SQL Server虚拟机通常会尝试使用尽可能多的内存。因此,最好对虚拟SQL Server静态分配内存。 在使用非统一内存访问架构(NUMA)系统的时候,对SQL Server的设置有点特殊。NUMA设计是为了实现更好的可扩展性,它把不同组的处理器和系统内存片段整合到一起(一般称为NUMA节点)。 在Hyper-V中设置控制虚拟机资源分配 图3:Hyper-V对基于NUMA系统的配置选项 处理器可以访问分配给所有NUMA节点的内存,但是与CPU同一节点下的本地内存肯定比访问不同节点的远程内存更快一些。因此,SQL Server虚拟机的NUMA节点和套接字虚拟拓扑应该与物理硬件拓扑有对应关系。 如图3所示,Hyper-V的NUMA设置在Hyper-V管理器Processor处理器菜单下的子菜单中。你可以使用它们调整拓扑或者手工设置虚拟NUMA节点的处理器数量、内存数量,设置服务器单个套接字支持的节点数量。 在Hyper-V虚拟机中运行SQL Server的另一项最佳实践是使用微软公司的第二代虚拟机,它的启动速度很快,整体功能表现也比第一代产品更好。不过,因为SQL Server的性能与存储I/O关系很大,因此最重要的是确保虚拟硬盘的底层存储提供的IOPS要满足数据库需求。 另一种考虑因素是两种高可用形式之间可能存在冲突。在与Windows Failover集群结合时,Hyper-V虚拟机可以在虚拟机级别实现更好的可用性。但是,SQL Server还支持独立于虚拟机管理程序的高可用性。如果你选择使用SQL Server的高可用功能(它会设置所谓的访客集群),需要设置反关联规则组织不同的SQL Server虚拟机。这些虚拟机是单个访客集群的组成部分,都来自于通用物理主机。否则,主机级别的故障会破坏访客集群的可靠性。 在虚拟机上运行SQL Server可以说是在数据库资源需求和系统其它部分资源需求之间“走钢丝”。实施本文描述的最佳实践可以帮助你保持虚拟SQL Server系统平稳运行。

TechTarget中国原创内容,原文链接: http://www.searchdatabase.com.cn/showcontent_94267.htm
© TechTarget中国:http://www.techtarget.com.cn

如何在微软Hyper-V下发挥SQL Server最大功效的更多相关文章

  1. 在Windows2008下安装SQL Server 2005无法启动服务的解决办法

    在Windows2012下安装SQL Server 2005无法启动服务的解决办法 1.正常安装任一版本的SQL Server 2005. 2.安装到SqlServer服务的时候提示启动服务失败  此 ...

  2. 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...

  3. 大数据时代下的SQL Server第三方负载均衡方案----Moebius测试

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...

  4. 招聘 微软全球技术支持中心 sql server组

    微软亚太区全球技术支持中心(APGC CSS)是微软为个人用户.开发者.IT 专业人员到合作伙伴和企业级合作伙伴提供全方位.多元化的服务和技术支持的部门.一个优秀的SQL Server技术支持工程师应 ...

  5. (转)大数据时代下的SQL Server第三方负载均衡方案----Moebius测试

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...

  6. 大数据量下的SQL Server数据库自身优化

    原文: http://www.d1net.com/bigdata/news/284983.html 1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情 ...

  7. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  8. 浅析Win8/8.1下安装SQL Server 2005 出现服务项无法正常启动解决方案

    如何才能在微软最新的Windows8/Windows 8.1下正常使用SQL Server 2005套件呢?下面就简单介绍利用文件替换法,解决其服务项无法正常启动的临时方案.当然还是建议使用SQL S ...

  9. ASP .Net Core 在 CentOS8 ARM 下连接 SQL Server 2008 R2(Hypervisor)

    本文主要记录在 ARM 系统下无法连接SQL Server 2008 R2 的解决过程. 解决方案是使用 ODBC 的方式连接数据库,进行操作. 手上有公司的华为鲲鹏云计算 ARM 架构的 CentO ...

随机推荐

  1. 大学二三事——那些人(1)

    校歌墙的对面是一座历史比较悠久的建筑,以前叫做12号楼,后来改成了"诚"字楼. 在诚字楼一楼昏暗的走廊上,你总是能看见一位大概四五十岁的大叔,有时他会指着挂在墙上的学校简介,一个人 ...

  2. linux的学习系列 3---目录

    目录也是一个文件,它的唯一功能是用来保存文件及其相关信息.所有的文件,包括普通文件.设备文件和目录文件,都会被保存到目录中. 主目录 登录后,你所在的位置就是你的主目录(或登录目录),接下来你主要是在 ...

  3. ARC属性中还能使用assign,copy,retain这些关键字吗

    http://blog.sina.com.cn/s/blog_6531b9b80101c6cr.html      很早以前比较弱,网上不知道哪里看了篇博文,留下了ARC属性中不能使用retain关键 ...

  4. Struts2龙之总结

    一.Struts2执行流程: 1.客户端初始化一个指向servlet容器(tomcat)的请求: 2.这个请求经过一系列过滤器(Filter): 3.接着StrutsPrepareAndExecute ...

  5. AI 人工智能 探索 (五)

    我们把做好的 角色 拖到 内存池,如图所示,这样我们可以动态生成角色并给予他 寻路目标. //逗留碰撞 void OnTriggerStay(Collider other) { if (other.t ...

  6. static加载问题

    原文地址:http://blog.csdn.net/lubiaopan/article/details/4802430     感谢原作者! static{}(即static块),会在类被加载的时候执 ...

  7. sublime使用方法

    一.sublime菜单简介[常用功能及快捷键] [Edit菜单] 1.line行操作快捷键 ctrl+] 增加缩进 ctrl+[ 减小缩进 ctrl+shift+D 复制当前行 ctrl+shift+ ...

  8. elasticsearch 管理工具

    ------------------sense------------------- google chrome 浏览器插件,数据交互使用   -------------------------hea ...

  9. java网络之udp

    import java.net.*; /** * InetAddress用法 * 获取本地主机名,ip * 通过主机名,ip获取InetAddress对象 */ public class Demo{ ...

  10. zf-关于被发牌人没有显示环节的那个被发牌人的解决办法

    是存储过程里的字段没有插入进去,添加个presonName即可--修改的时候可以执行 dbo.dingshi_fapai 来进行存储 如果添加presonName 必须在临时表里加上这个字段,然后在进 ...