SQL Server 2012研发团队背后的故事

本文讲的是SQL Server 2012研发团队背后的故事,在切入正题之前,就让浸泡在数据海洋里的我们,看几个并不陌生的场景吧。

  场景一:痛苦的升级

  三十六岁的吴桐坡是一个电商网站的首席技术官,最近有点头疼:业务旺季就在眼前,现在的内存、盘阵、操作系统和应用平台已经有点扛不住。老板却已发话,今年要基于用户消费行为的统计与分析,上线更多的新品类。唉,又要和部门里的兄弟们熬夜了。好在之前做了不少准备工作,对这次升级的成本和问题心里大概有底。“但过去几年,哪次硬件变更和软件升级没出过岔子?我怎么敢跟老板拍胸脯,说升级后的系统马上能顺利支持5000-6000次/秒的在线交易请求,而不影响任何业务?“

  场景二:郁闷的IT

  修养很好的俞年发火了,让这位年届不惑、掌控某跨国餐饮连锁品牌的职业经理人失控的原因很简单,当他早上10点走进办公室,没有看到昨天的运营报表——这让他想起昨晚从一位消息灵通的分析师朋友处得知,竞争品牌最近两个月的营业额大幅超过自家,这是什么原因?现在居然连头一天的运营报表都没正常出现,IT部门干什么去了?被俞年召来猛K一顿的IT经理任愿也很郁闷。“不知道为什么,头天晚上从各个营业点上传来的原始数据,未按正常流程进行匹配和清洗,最终没导入数据仓库,导致今天早晨没法生成报表,但老板也不至于这样生气吧?” 检查数据集成进程时发现原先仅需半小时的一个步骤用了近两小时,还是通不过,也找不出原因,郁闷…

  场景三:抓狂的网购

  二十九岁的白领史博妍与姐妹们一样,紧张的工作节奏让她无暇逛街,幸好还有网购。作为每月在网购过千元的重度用户,怎能错过各大网店的春夏促销?周末晚上,当她打开浏览器,却发现最钟爱的网店却无法访问,页面总是显示“响应超时”,而且怎么刷新也没用。难道下周要穿着去年的衣服去拜访客户和“周末大轰趴”?这个假设让她很抓狂,抓起了电话向网店客服投诉。数分钟后,网店的数据库管理员李易凌接到客服部门的排障需求,他能否在很短的时间里,从海量的Query记录中,找出那条引发故障的Query?

  那些年,他们一起追寻的创新

  您一定能猜到上面的三个典型场景,就藏着SQL Server 2012研发团队所要解决的三个典型问题,而解决这三个问题的主要团队成员,就是微软亚太研发集团服务器与开发工具事业部的一群年轻工程师们——而解决上述三个问题的功能分别是Distributed Replay、SQL Server集成服务(SSIS)和扩展事件(xEvent)。

  正如微软其他应用于关键业务的产品,SQL Server 2012功能设计的来源主要有三类,即面向全球范围内的最终用户与分析师的调研、全球技术支持服务部门的反馈,以及开发团队的前瞻性思考。

  故事一:跨越七年的灵感

  Distributed Replay、集成服务和扩展事件也不例外,而其中从需求发掘、设计产生到功能实现时间跨度最大的,是Distributed Replay。而这一特性的灵感在2005年左右,几乎同时出现在姚钢和王清越的脑海里。

  高级开发主管姚钢现在已申请下Distributed Replay的专利,触动他的是做SQL Server技术支持的六年经历,“客户经常在升级硬件和软件过程中碰到各种问题,尤其是新硬件和操作系统环境中,数据引擎性能的下降让他们很是挠头。是不是能有一个功能,让客户提前知道升级后,可能遇到的各种状况?“

  而当时还在微软总部从事SQL Server引擎性能优化的王清越也在想,“如果能开发一个工具,让客户在多线程、高并发度的环境下,模拟实际应用场景,从而实现在变更软、硬件时预知这些变化对数据引擎性能的影响,不就能让他们不再忧心升级后的变数么?“

  于是,当他们2008年加入SQL Server中国研发团队后,这个想法很自然地被提到了SQL Server 2012产品规划中。

  让姚钢和王清越印象尤为深刻的是,2010年10月功能基本开发完成后,一位远道而来的欧洲电子商务客户提出,用他们的真实数据让Distributed Replay模拟5000-6000次/秒在线交易请求的生产环境?开了几个夜车后,两周内姚钢和同事们顺利实现了客户需求——这让项目组也很是欣慰,因为虽然设计目标就是实现每秒5000-6000次的负载模拟,但此前还未在实验室环境下得到过验证。

  随着SQL Server 2012的上市,国内类似吴桐坡这样需求的CTO们,将不用再为软、硬件变更可能带来的性能变化而烦恼了。

  故事二:为了一致与可靠

  SQL Server集成服务要解决的则是IT经理们不得不面对的问题 —— 如何在有限时间和资源前提下,保证“数据的一致性和可靠性“,不至于当老板要看报告时,却交不出来。在集成服务的项目经理卓伟雄看来,帮助两个重量级本地客户解决类似问题的经历是在产品开发中最值得回味的,”这两个客户,一个来自保险业,一个来自连锁餐饮业。他们处理数据的共同特征是,来自各个分支机构的数据都在晚上运行,而实际上每天晚上运行SSIS包的时间窗口其实很短。在决策层第二天到办公室之前,数据平台要完成的事情有很多——首先是把数据从不同的来源取出,然后导入到数据仓库。从数据仓库到用户能使用的报表,多维数据集等等时间的掌控很重要。而在SQL Server 2012之前,当SSIS包在抓取、导入过程中出了问题,管理员往往需要花费数十分钟乃至几个小时,逐一找出并解决SSIS包抓取失败或延迟等问题。如果问题一多,第二天没法交付报告就成了很自然的事。而现在,管理人只需要通过预先建立的故障排除和性能调优功能,在SSIS包运行过程中,便能自动拿到最可能引发问题的事件记录,而用户可以马上把这些事件交给相关的技术部门去解决。”

  让测试开发工程师吴晓晨记忆犹新的则是在最后测试阶段,一个特殊的场景下运行新功能时,往往比平时慢2、3秒,但一位同事硬是坚持三、四周解决了这个问题,因为他们觉得“如果每个客户都节约几秒钟,那么全球来看就是一个了不得的大数字。”

  故事三:DBA的黎明

  扩展事件的诞生,是为了帮助李易凌这样的数据库管理员们。当碰到这样的问题,他可以首先将当天的SQL Query(像场景三中的网店会有几千种SQL Query)的响应时间分组求平均值,然后按组排序以迅速找到花费时间最长的那一组Query,接着打开这一组Query排序,便能找到花费时间最长、甚至是无法响应的Query,从而迅速找到问题根源并进行排除。更为重要的是,轻量化的扩展事件只需很小的服务器资源开销,就能抓取50GB的Trace包。

  SQL Server 2012的发布,对负责扩展事件的开发主管徐进、测试主管陈玉祥来说同样意义非凡——因为尽管从SQL 7.0时代就有了SQL Profiler工具,但直到SQL Server 2012有了扩展事件才高度满足了数据库管理员的大量真实需求。

作者:王玉圆

来源: IT168

原文标题:SQL Server 2012研发团队背后的故事

时间: 2024-10-05 15:39:05

SQL Server 2012研发团队背后的故事的相关文章

大数据里的中国智慧:SQL Server 2012研发的人与事

在切入正题之前,就让浸泡在数据海洋里的我们,看几个并不陌生的场景吧. 场景一:痛苦的升级 三十六岁的吴桐坡是一个电商网站的首席技术官,最近有点头疼:业务旺季就在眼前,现在的内存.盘阵.操作系统和应用平台已经有点扛不住.老板却已发话,今年要基于用户消费行为的统计与分析,上线更多的新品类.唉,又要和部门里的兄弟们熬夜了.好在之前做了不少准备工作,对这次升级的成本和问题心里大概有底."但过去几年,哪次硬件变更和软件升级没出过岔子?我怎么敢跟老板拍胸脯,说升级后的系统马上能顺利支持5000-6000次/

《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.1 窗口函数的背景

1.1 窗口函数的背景 T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数 在开始学习具体的窗口函数之前,先了解其背景和内涵,会对后续的学习有所帮助.本节先谈谈窗口函数的背景,解释基于集合方式和基于游标/迭代方式进行查询的不同,以及窗口函数如何对二者的差异进行弥补.最后,本节也提到了窗口函数的替代方法,以及为什么窗口函数会优于其替代方法.注意,尽管窗口函数能非常高效地解决很多问题,但在某些案例中,替代方法会好于窗口函数.第4章会具体谈论对窗口函数的优化,解释在什么情况下,计算

SQL Server 2012 自动增长列,值跳跃问题

原文:SQL Server 2012 自动增长列,值跳跃问题   介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中

《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.4 支持窗口函数的查询元素

1.4 支持窗口函数的查询元素 T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数 并不是所有的查询子句都支持窗口函数,相反,仅仅SELECT和ORDER BY子句支持窗口函数.为了帮助大家理解这个约束的原因,我首先要解释查询逻辑处理的概念.然后,我会介绍支持窗口函数的子句,最后,解释如何在其他子句中避开约束. 1.4.1 查询逻辑处理 查询逻辑处理从概念性的角度描述SELECT查询是如何根据逻辑语言的设计进行判断的.它描述了怎样由查询的输入表,经由一系列步骤和阶段,直到查询

SQL Server 2012列存储索引技术

title: SQL Server 2012列存储索引技术 author: 风移 摘要 MS SQL Server 2012首次引入了列存储索引(Columnstore Index)来加速数据分析(OLAP)和数据仓库(Data Warehouse)场景的查询,它主要是通过将数据按列压缩存储的方式来减少查询对磁盘IOPS开销和CPU开销,最终达到提升查询效率,降低响应时间的目的.当然,列存储索引也不是一把万能的钥匙,在SQL Server 2012版本中它有诸多非常严苛限制条件. 这篇文章会从以

使用PowerShell 命令集进行SQL Server 2012 备份和还原

原文:使用PowerShell 命令集进行SQL Server 2012 备份和还原 最近心相不错,所以打算翻译一些英文文档做福利,原文在此,翻译有不足的地方还请各位兄弟指点. 讨论什么是DBA最重要的工作的时候,你最常听到就是一条就是DBA只要做好备份和恢复.事实如此,如果你不做备份,或者无法保证你的备份能够有效恢复,你和你的公司就会处于数据丢失危险下. T-SQL 命令BACKUP DATABASE已经使用了相当长的一段时间(在这之前用的是DUMP DATABASE 命令,老人们都记得).

SQL Server 2012全力打造大数据特性

本文讲的是SQL Server 2012全力打造大数据特性,同其他IT厂商一样,微软公司也做好了全面进军"大数据"领域的准备,而即将发布的SQL Server 2012将成为微软大数据战略的支点.最新的数据库平台将提供一系列的大数据功能,其中包括Apache Hadoop连接器.开源分布式计算架构,能够存储并处理海量的结构化与非结构化数据. 为了让用户对于SQL Server 2012的大数据功能有一个更直观的了解,记者采访微软数据库平台专家Mark Kromer,让他来谈一谈SQL

PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题

原文:PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题 团队合作设计一套系统数据模型,创建了PDM后,Table.View.Store Procedure等都创建好了,且创建了多个Schema方便管理这些数据库对象,但Table.view.Column等对象有Comment时(用来在团队不同成员间共享描述信息) 生成数据库时会得到一个提示"不支持扩展属性,或对象不存在",分析发现异常在类似以下语句: if ex

SQL Server 2012 安全概述_MsSql

在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用,不用在面对特定威胁,不能保护你数据的功能上浪费时间. 从让人眼花缭乱的客户端使用连接,通过到处分布的网络,尤其是互联网,关系数据库在各种应用程序里广泛使用.这使数据对任何人,在任何地方都可访问.数据库可以保存人类知识的很大部分,包括高度敏感的个人信息和让国际商务工作的关