NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

数据库虚拟化——这样做值吗?

  • 2008-02-16
  • 本文字数:1076 字

    阅读完需:约 4 分钟

在虚拟机镜像中部署服务器应用程序的做法风靡一时。当需求改变时,虚拟服务器可以快速地从一台机器移到另一台机器上的这种能力让 IT 部门受益无穷。但是,这种做法适用于像 SQL Server 这样的重量级系统吗?对于这个问题,Conor Cunningham 提出了否定的看法。

根据 Conor 的说法,SQL Server 对它的运行环境有一些假设,这包括:

  1. 所有的 CPU 能力相同;
  2. 所有 CPU 执行指令的频率大致相同;
  3. 磁盘缓存的写入动作必须在一个确定的时间段内发生。

第一个问题会出现在支持并行查询的高端数据库版本中。当执行一个查询时,所有的工作会被平均地分配到不同的线程中,但在超线程(hypertheading)或是虚拟化的环境中,这些线程并不是按照一致的速度运行的。 > 在这种情况下,某些线程会比另外一些提前完成,因此较快的线程会被阻塞,直至最慢的线程执行完毕。更糟糕的是,除非是整个查询都完成了,否则这些线程都无法被分配给其他查询任务。现在,你应该了解到为什么说某些 SQL Server 不适合部署到超线程机器上的真正原因了。

Later Conor 接着讨论了内存和 I/O 方面的问题,

SQL Server 有假设条件,至少在被配置为主要服务模式的 SQL Server 中,它会假设自己是机器中唯一一个会使用大量内存的服务程序,因为这是一台“服务器”(SQL Express 的假设不同,不过它并不会放松对内存的需求),而现在,SQL Server 运行在一个内存受限的环境中,尽管你并不希望这样做,但这样做会让许多事情受到影响——缓存池、查询计划的缓存、以及用于查询的内存(例如进 行 hash join 的条件)等等。如果你不当心的话,这些问题都可能会变的愈发严重。

虚拟化中的 I/O 部分我的经验很少,这也是为什么我向其它人请教 SQL Server 产品相关问题的原因之一。他们通常使用会使用存储阵列(storage array),这的确是个有效的方法——它大大提高了 I/O 的带宽,并且把它和机器中的其他操作(如你的操作系统、你正在开发的 SQL Server 上层应用程序等)隔离开来。我打算花更多的时间去研究它,不过我认为这个想法的基础是有效的——因为当你开始让多个虚拟机共享 I/O 带宽时, 像 SQL Server 这样的 IO 带宽消耗大户会让你很快达到极限。所以,按照前面的逻辑,你应该将你的数据库通信隔离在独立的存储路径上,尤其是当你想构建一个扩展性良好的系统时更应该如此。在虚拟机环境中,这样做能让你避免因使用默认配置让所有人共享同一硬盘而造成的严重后果。

以上的说明并不是在说 SQL Server 无法在虚拟镜像中运行,只是为了说明当 SQL Server 的性能对你很重要时,使用虚拟机将会使你得不偿失。

查看英文原文: Database Virtualization - Is it worth it?

2008-02-16 07:381828
用户头像

发布了 157 篇内容, 共 52.7 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

聚焦供应链布局,新能源汽车企业重塑产业核心竞争能力

数商云

数字化转型 供应链 新能源汽车

科创人·富士康CDO史喆:To B产品切忌臃肿,数字化不分对错只求更好

科创人

MSE 微服务治理发布企业版,助力企业构建完整微服务治理体系

阿里巴巴云原生

免费下载|KubeMeet 城市站实录合辑,N 场容器开源分享打包看

阿里巴巴云原生

“双碳”下的建筑业:未来10年必须重视这5大方向

WorkPlus

jackson学习之十(终篇):springboot整合(配置类)

程序员欣宸

Java web 4月月更

好的测试数据管理,到底要怎么做?

禅道项目管理

测试 数据 数据管理

云图说丨叮咚,您有一份短信通关攻略待查收

华为云开发者联盟

短信 签名 消息 签名模板 MSGSMS

2022年提高远程工作效率的三大实用技巧汇总

行云管家

远程办公 居家办公 办公软件

使用 Sanic 框架进行 Python Web 开发

宇宙之一粟

Python 4月月更 sanic

hyengine - 面向移动端的高性能通用编译/解释引擎

阿里巴巴终端技术

编译 移动端 引擎

Tiger DAO VC:将你的风险投资变成DAO组织协同

小哈区块

来也科技收购Mindsay背后:新旧势力交锋智能自动化备受关注

王吉伟频道

RPA 收购 机器人流程自动化 来也科技 Mindsay

thinkphp5框架新建页面相关规范详解

CRMEB

Redis是怎样通讯的?

ooooooh灰灰

redis 后端 协议 4月月更

Prime Video 如何使用机器学习来确保视频质量

亚马逊云科技 (Amazon Web Services)

计算机视觉 Amazon Prime Video WACV

STM32+华为云IoTDA,带你设计一个属于自己的动态密码锁

华为云开发者联盟

stm32 iotda 华为云IoT 密码锁 Qt框架

macOS系统病毒常见的两种传播途径

火绒安全

macos 终端安全 勒索病毒 蠕虫

计算机存储层次简析

懒时小窝

计算机基础

TASKCTL ETL作业类型的插件与维护管理

TASKCTL

kettle 元数据 ETL 自动化运维 调度任务

五大应用示范,为社区/企业防疫管理减负提效

明道云

java高级用法之:JNA中的Function

程序那些事

Java Netty 程序那些事 4月月更

【Zeekr_Tech】汽车软件RTOS-之AUTOSAR OS多核控制简介

Zeekr_Tech

Linux 软件架构

知识管理的目的及意义——提高社会资源的配置效率

小炮

知识管理

5. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 接口以及场景压测

MASA技术团队

C# .net 微软 测试 压测

“东数西算”超级工程利好云计算,多云管理背后却暗藏汹涌!

行云管家

云计算 多云 东数西算 云管

YonMaster开发者认证线上赋能培训班定档4月18日

YonBuilder低代码开发平台

教你用ab命令进行并发与压力测试

华为云开发者联盟

并发 压力测试 ab测试 ab命令 请求次数

一文读懂 TsFile

Apache IoTDB

从容器化到资源池化,数栈云原生技术实践探索之路

袋鼠云数栈

大数据 flink 云原生 k8s

WeTest平台产品&技术合作伙伴招募

WeTest

数据库虚拟化——这样做值吗?_.NET_Jonathan Allen_InfoQ精选文章