写点什么

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

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

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

关注

评论

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

【LeetCode】滑动窗口的最大值Java题解

Albert

算法 LeetCode 7月日更

Pandas高级教程之:稀疏数据结构

程序那些事

Python 数据分析 pandas 程序那些事 稀疏矩阵

赋能中小银行数字营销:索信达助力深圳农商行建设标签系统

索信达控股

金融 银行 用户标签

bash: docker-compose: 未找到命令

阿呆

Docker-compose

360 政企安全集团基于 Flink 的 PB 级数据即席查询实践

Apache Flink

flink

数字化转型下的数字经济新发展

CECBC

【设计模式】工厂模式

Andy阿辉

编程 程序员 设计模式 23种设计模式

架构实战营 模块二作业

脉醉

#架构实战营

Python OpenCV 图像处理再循环,第一阶段复盘

梦想橡皮擦

7月日更

Vue进阶(六十二):理解$nextTick()

No Silver Bullet

Vue 7月日更 nextTick

Vue进阶(十六):vue项目结构启动原理详解

No Silver Bullet

Vue 7月日更 启动原理

基于RNN和CTC的语音识别模型,探索语境偏移解决之道

华为云开发者联盟

语音 RNN ASR CTC 语音识别模型

华为云MVP周峥:气象预报是个技术活,大数据、超算、AI,缺一不可

华为云开发者联盟

人工智能 大数据 环保 气象 超算

Linux - 零拷贝

大海

Linux zero copy

Rust从0到1-并发-可扩展性

rust 并发 sync Concurrency send

重磅来袭!全网最具深度的三次握手、四次挥手讲解

欢喜学安卓

android 程序员 面试 移动开发

抖音霸屏系统软件开发

获客I3O6O643Z97

大数据 抖音霸屏

获客达人app系统开发

获客I3O6O643Z97

大数据

【设计模式】总览

Andy阿辉

编程 程序员 设计模式 23种设计模式

重磅消息!写给安卓软件工程师的3条建议

欢喜学安卓

android 程序员 面试 移动开发

网易传媒数据指标体系建设实践

网易数帆

大数据 数据仓库 指标体系

基于用户角色的数据库智能监控系统应用场景分析

华为云开发者联盟

数据库 架构 监控 用户 智能监控

什么是MircoPython?

华为云开发者联盟

Python 编程语言 物联网 MicroPython 嵌入式应用

智慧能源:清洁低碳环保新能源,沙漠光伏与光热发电站 3D 可视化

一只数据鲸鱼

数据可视化 智慧能源 光伏发电 沙漠光伏

统一语言 = 领域模型 ?

escray

学习 极客时间 7月日更 如何落地业务建模

【Flutter 专题】81 图解 Android Native 集成 FlutterBoost 小尝试 (三)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

HCIA-HarmonyOS Application Developer 应用方向认证资料

爱吃土豆丝的打工人

HarmonyOS HCIA认证 应用开发方向

Go语言,你必须掌握的--高效并发模式!

微客鸟窝

Go 语言

一文搞懂一致性hash的原理和实现

万俊峰Kevin

微服务 hash Go 语言

【设计模式】抽象工厂

Andy阿辉

编程 程序员 设计模式 23种设计模式 编程思想

深度解析 Lucene 轻量级全文索引实现原理

vivo互联网技术

lucene 检索 索引技术

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