如何在微软Hyper-V下发挥SQL Server最大功效

时间:2022-09-01 15:10:13
要建设稳定运行的虚拟化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. Binary search tree

    #ifndef __TREE_H #define __TREE_H #include <iostream> template<typename T> class TreeNod ...

  2. VoltDB介绍——本质:数据保存在内存,充分利用CPU,单线程去锁,底层数据结构未知

    转自:http://blog.csdn.net/ransom0512/article/details/50440316 简介 VoltDB数据库是一个分布式,可扩展,shared-nothing的内存 ...

  3. mysql datetime 排序

    在项目里面,使用mysql datetime desc,看见别人使用UNIX_TIMESTAMP(datetime) desc,就用了 datetime进行比较,使用UNIX_TIMESTAMP()进 ...

  4. c&num; MySqlHelper&lowbar;ExecuteSqlTran

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;u ...

  5. java IO&lpar;四&rpar;:键盘录入

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. httpclient案例二(调用百度地图的接口)

    一,class T package com.http.test; import org.junit.Test; import com.http.BaiduMapProxyService; import ...

  7. POJ&lowbar;2653&lowbar;Pick-up sticks&lowbar;判断线段相交

    POJ_2653_Pick-up sticks_判断线段相交 Description Stan has n sticks of various length. He throws them one a ...

  8. 查看Linux的所有线程

    查看Linux所有线程有3种方法: ps -T <pid>可以看指定pid的所有线程,SPID就是指线程.或者用ps -eLf top -H,和普通的top命令相比,多了Thread ht ...

  9. java mysql连接时出现的问题

    当出现Caused by: java.sql.SQLException: Unknown system variable ‘tx_isolation’ 一般是mysql-connector-java的 ...

  10. json字符串序列化exception处理

    一.背景: 使用REST接口接收远端传送过来的Json格式String,需要把这个String序列化成响应的对象. 二.问题: 对方封装了一个错误的json格式过来,程序就挂了…… 三.似乎解决: 通 ...