【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

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

  • 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:381832
用户头像

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

关注

评论

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

解决 Django 多进程下,logging 记录日志错乱问题

AlwaysBeta

Python django 编程 日志 log

用原理认知世界,用情绪驱动行为

史方远

职场 心理 成长

MySQL事务解析

一个有志气的DB

MySQL 事务隔离级别 mysql事务

中小企业如何做运维自动化?

外滩运维专家

运维 spug 运维自动化 jenkins ansible

如何搞定Kafka重复消费?

奈学教育

kafka kafka配置

比AtomicLong更优秀的LongAdder确定不来了解一下吗?

一枝花算不算浪漫

并发编程 jdk源码

Dart 进阶 | 深入理解 Function & Closure

LitaVadaski

flutter dart

新mac笔记本需要做的事情

好好学习

Mac

汉字不能编程?别闹了,只是看着有点豪横!容易被开除!

小傅哥

spring 小傅哥 aop 汉字编程

2020第一篇技术博客

java劝退师首席大弟子

生活

识别代码中的坏味道(二)

Page

Java 面向对象 复杂代码优化 重构 CleanCode

PhotoShop切图,一篇文章就够用了

cwang

Web 工具 PhotoShop

Jenkins权限管理

kcnf

JAVA内存模型与线程

颇风

Java 内存模型 JVM

写在开头

宋胖子

一想到有95%的问题还没解决,我就calm down了

赵新龙

科普 宇宙 后真相时代

Design Sprint 教你五天完成产品迭代

Yanel 说敏捷产品

产品 敏捷 设计 产品设计 团队

英语学习中听和说的区别

董一凡

学习

华为“补洞”:去年重新设计超过6000万行代码

罗燕珊

华为 实体清单

CentOS 6 升级 glibc

wong

centos glibc

《零基础学 Java》 FAQ 之 8-Java方法调用是传值还是传引用

臧萌

Java

Android | Tangram动态页面之路(三)使用

哈利迪

android

谈谈控制感(6):虚幻的控制感也好用

史方远

职场 心理 成长

如何发布一个npm包-创建,发布,更新,撤销及常见问题解决

Brave

npm

一文带你了解 HTTP 黑科技

cxuan

大前端 HTTP

回“疫”录(20):世界从来不会欺负听话的人

小天同学

疫情 回忆录 现实纪录 纪实

走进Golang之编译器原理

何磊

编译原理 Go 语言

写作对我的意义

Neco.W

总结 思考 写作 感悟

键入网址后,其间发生了什么?

小林coding

TCP 计算机网络 网络协议 IP HTTP

笔记:《如何系统思考》之如何应用系统思考

wiflish

思维方式

如何用一套引擎搞定机器学习全流程?

Apache Flink

大数据 flink 流计算 实时计算

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