2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

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

关注

评论

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

转角遇上Volcano,看HPC如何应用在气象行业

华为云开发者联盟

容器 云原生 HPC Volcano 批量计算

区块链养成宠物游戏开发动物世界app系统搭建方案

v16629866266

Android Styling System

Changing Lin

android

Kubernetes Pod篇:带你轻松玩转Pod

xcbeyond

Kubernetes pod 28天写作 Kubernetes从入门到精通 服务编排

Elasticsearch和Kibana变更开源许可协议;Facebook利用AI增强为视障人士描述照片能力

京东科技开发者

云计算

云原生架构下复杂工作负载混合调度的思考与实践

星环科技

云计算

开发的必杀技:Git 的分支管理

华为云开发者联盟

git Linux 分支

屏幕共享功能的应用

anyRTC开发者

android 音视频 WebRTC 在线教育 视频会议

数据库覆盖式数据导入方法:部分和完全

华为云开发者联盟

数据库 sql 数据 DWS 覆盖式导入

《Java 面经手册》PDF,全书5章29节,417页11.5万字,完稿&发版!

小傅哥

Java 面试 小傅哥 PDF 面经手册

毫不留情地揭开负载均衡的真面目~

田维常

负载均衡

甲方日常 90

句子

工作 随笔杂谈 日常

并发条件队列之Condition 精讲

伯阳

AQS 多线程 lock Condition 条件队列

使用 async_hooks 模块进行请求追踪

智联大前端

node.js 大前端 koa async_hooks

30+岁、没转管理、加不动班,我的竞争力从哪里来?

博文视点Broadview

第二周作业

Geek_6a8931

2021年1月国产数据库排行榜:OceanBase重回前三,TDSQL增长趋势最强劲!

墨天轮

数据库

架构师训练营-大作业:物流系统架构设计

晴空万里

架构师训练营第2期

【年度重磅】2020华为云社区年度技术精选合集,700页+免费下载!

华为云开发者联盟

数据库 AI 云原生 物联网 华为云

智能building 之智慧城市

张老蔫

28天写作

八大案例带你了解图数据库如何洞察数据间关联价值

NebulaGraph

图数据库 图数据库实战

【并发编程的艺术】内存语义分析:volatile、锁与CAS

程序员架构进阶

Java 架构 Java内存模型 28天写作

面试官常问的垃圾回收器,这次全搞懂

Silently9527

Java JVM 垃圾回收 GC

从定义到AST及其遍历方式,一文带你搞懂Antlr4

华为云开发者联盟

Java AST 语言 antlr4 语法分析器

【图文并茂,点赞收藏哦!】重学巩固你的Vuejs知识体系

我是哪吒

程序员 面试 Vue 大前端 Web

红帽架构师:为什么KubeEdge是2020年我最喜欢的开源项目?

华为云原生团队

开源 云原生 边缘计算 边缘技术

趋势预测:2021年五大流行的编程语言

禅道项目管理

Java php python 爬虫 趋势

不可忽视的PHP数据精度损失问题

架构精进之路

php 七日更 28天写作

娄底携手浪潮,打造了智慧城市建设的“娄底样板”

计算机网络学习第一课

落曦

2021分享三面阿里:Java面试核心手册+Java电子书+技术笔记+学习视频

比伯

Java 编程 架构 面试 程序人生

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