什么情况下我们应该放弃SQL Server虚拟化

虚拟化技术在最近几年已经获得了显著进步。虚拟机性能比以往更强大,它们可以处理更大的容量,管理更容易,也能对资源分配提供更出色的控制。因此,那些顽固反对虚拟化的DBA们也在重新考虑他们自己的角色,这并不令人感到奇怪。采用虚拟化不但可以快速配置数据库环境,还可以很容易地把该环境复制多次,这对把虚拟化看作成本节约和便利操作的大神们也是一种安慰。

  尽管虚拟机(VM)越来越流行,但并非所有的SQL Server环境都应该进行虚拟化。关于授权许可、性能、可用性和支持方面的问题必须在把SQL Server部署到虚拟化环境之前考虑清楚。如果不这么做,可能会导致不符合标准的生产环境。虽然名义上实现了虚拟机环境,但实际上没有达到虚拟机应有的效果。

  SQL Server虚拟化授权

  让我们先来了解一下SQL Server授权,因为它本身就是一个麻烦的过程,在SQL Server 2012发布之后更甚。如何授权SQL Server取决于产品版本以及运行环境版本,还有处理器的数量,以及是真实物理环境还是虚拟环境。

  例如,SQL Server 2012提供了三个版本:企业版,商业智能版和标准版。所有这些版本都必须授权才可使用。你可以给每个版本按每处理器或者每服务器进行授权。如果是后者,你必须为每台设备和连接SQL Server的每个用户购买客户端访问授权。如果你给SQL Server企业版做了虚拟化,你可以按虚拟机级别或者主机级别为该产品购买授权。SQL Server标准版和商业智能版只能按虚拟机级别授权。在这些版本中你能做什么取决于你授权的是哪个版本以及你是否参与了微软的软件保证(SA)计划。例如,你可以在虚拟机环境中基于每个内核为标准版和企业版做授权,但是商业智能版本不可以。此外,按照每内核授权的方式最少要四个内核起售,尽管你可能只把它运行在两个虚拟CPU上。如果你想迁移虚拟机,你必须要等三个月之久,除非你参与了SA计划。

  这就意味着,组织可能为了虚拟机授权花了很多额外的资金,结果却可能是通过迁移出虚拟环境来实现成本的节约。至少在某种程度上,按照SQL Server授权结构是这样。尽管最关键的是要为SQL Server精心策划和配置你的虚拟环境,但这种配置并不总是在控制之下。例如,如果你在许多虚拟机之间部署你的SQL Server实例,最终可能会在授权上花很多钱,甚至比把那些实例部署在一台独立物理计算机上花费的都要多。SQL Server授权对于操作系统环境是一个整体,不管操作系统环境(OSE)下有多少个实例。一台物理服务器就是一个OSE,而如果是虚拟机环境,就要累加了。

  因此要记住,在完全理解授权的不同情况以及影响之前,不要对SQL Server做虚拟化。

  SQL Server虚拟化性能

  虚拟化技术已经取得了长足的进步,并在广泛的组织中得到了接受。但尽管有了处理SQL Server负载的虚拟化能力,但在进入虚拟化之前也必须仔细评估。例如,关键问题是虚拟化中SQL Server数据存储的方式。即使在最佳条件下,可能发生的资源争用也必须纳入考虑。是否有其它虚拟机共享相同的存储区域网络呢?数据是否被存储在相同的地方呢?如果存在这些问题的话,你的SQL Server环境可能会受到其它那些机器的影响。

  对于小型数据库部署,资源争用可能不会有大问题,尤其是现在的资源管理已经有很大进步了。然而,对于处理大负荷的大型系统可能就会使主机的IO能力受到压力。例如,如果必须重建较大的压缩索引,那会很快把CPU耗尽,重组和其它维护操作也一样。许多DBA建议完全避免1GB iSCSI存储,而关注每秒稳定传输数据超过一百兆的存储,如果情况需要更给力也可以选择更快些的。

  如果存储能力不能完全满足需求,你必须至少确保有足够的内存以弥补这部分不足,同时要满足巅峰值需求。CPU也必须能处理那些峰值负载。尽管虚拟化产品比以往能支持更多要求苛刻的应用程序,但它们仍然在虚拟CPU和支持的内存数量上有一定局限。

  如果你运行的SQL Server系统容易消耗CPU和内存,那就不要对它们做虚拟化,除非你有条件先执行足够的测试以确保你能得到需要的性能。如果你的系统要求很高,你就不能在该主机上运行其他VM或者SQL Server实例,这样你做虚拟化的意义就不大了。虚拟机需要额外的存储和内存,以及运行第二个操作系统所必要的资源。如果多个虚拟机运行在同一个主机上(这是做虚拟化的主要意义所在),你必须把可能引起的资源争用纳入考虑范围。当几个应用同时达到峰值时怎么办?在虚拟环境中,并发问题的影响很深远,而不只是单个数据库配置的事。

TechTarget中国原创内容,原文链接:http://www.searchdatabase.com.cn/showcontent_74361.htm?lg=t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server参数化查询是一种使用参数作为查询条件的技术,可以提高查询的安全性和性能。相比于拼接SQL语句,参数化查询可以防止SQL注入攻击,并且能够重复使用已经编译好的查询计划,从而提高查询的执行效率。 在参数化查询中,可以使用参数占位符(例如@parameter)来代替具体的参数值。这样可以将参数值与查询分离,使查询具有更好的可读性和维护性。 使用参数化查询的好处之一是可以防止SQL注入攻击。当使用拼接SQL语句时,如果用户的输入未经过正确的处理和验证,恶意的用户可能会在输入中注入恶意的SQL代码,导致数据库被攻击和破坏。而使用参数化查询,参数值会被正确地转义和处理,从而保证了查询的安全性。 此外,参数化查询还可以提高查询的性能。当使用参数化查询时,数据库会对查询进行编译,并生成一个查询计划。这个查询计划可以被重复使用,避免了每次查询都需要重新编译的开销,从而提高了查询的执行效率。 总结来说,SQL Server参数化查询是一种安全、高效的查询方式,可以提高查询的安全性和性能。通过将参数值与查询分离,参数化查询可以防止SQL注入攻击,并且可以重复使用已编译好的查询计划,提高查询的执行效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值