解密SQL Server数据库系统的编译

你知道SQL Server这么庞大的企业级数据库服务器产品是如何build出来的吗?

这有些相关的数据:

每个build 的大小在300GB左右。

每个完整的build需要几十台高端的服务器运行2.5天。

每个完整的build由几千个job、10000多个参数组成。

我们每天同时做20个左右的build,每周130个。

位于美国微软总部雷蒙德和北京的build团队能够保证build全天24小时不间断的顺利进行。

从去年至今,我们build team已经成功而准时地完成了数以千计的build。

也许你会问:你们的build怎么这么大?怎么需要这么长的时间?为什么你们每天要做这么多build?

为什么我们的一个build这么大?比如说你的32位中文零售开发版SQL Server的DVD,包括工具和帮助 文档是4GB,那么你可以这样估算一下:首先加上一些内部的build信息和统计,以及用于debug的Symbol ,然后乘以2(retail版,debug 版),再乘以3(CPU 类型:x86、x64和ia64),再乘以所有的版本数( 企业版、开发版、标准版等),最后再乘以支持的语言数。不只1个TB 了吧?J 幸好SQL 2008 的setup 团队采用了consolidated setup模式,这样在一个语言包中,安装程序可以判定你的CPU类型并根据你输 入的产品序列号,自动安装对应的版本。由此我们的build才压缩到了300GB。

为什么我们的一个build需要这么长时间?Build这么庞大的企业级数据库服务器产品是一个极其复杂 的过程,况且SQL Server的build 系统已经是微软内最为高效的系统之一。她是图形化用户界面并且高度 自动化的。历经60小时,多数build会顺利的自动完成并通知相关人员其build的状态及信息。如果build 失败,其也会提供详细的错误信息用于debug。SQL Server的build 系统不仅如此易用和高效,同时可以 灵活的适应某些特殊的需求和build工作流。SQL Server的build 系统是由Windows Workflow Foundation 驱动的,其数以千计的job被并行或串行的分发到几十台 build机器上并完成。build的过程包括:

将几十GB的源文件及相关的所需文件和资源同步到build机器上

源代码静态分析

编译所有的可执行文件和测试文件并签名

生成系统数据库

优化

本地化

制作安装文件和安装包并签名

索引Symbol和源文件

我们每天做这么多的build正体现了我们如何支持整个SQL Server工程体系和构架:

首先需要声明的是我们随时都在为多个产品提供支持,比如当前的SQL Server 2005和即将发布的SQL Server 2008。

在SQL Server 2008的工程体系和构架中,我们将每个需要增加或增强的功能特性做成一个单独的分支 ,在这个功能特性开发和测试完成后,其代码才会合并到SQL Server的主线代码中。因此根据功能特性的 优先级和大小,SQL Server分成了几十个不同的团队,每个团队包括了架构师、项目经理、开发和测试人 员,帮助及案例文档专员,甚至科学家和科研人员。每个分支都需要build来进行及时的测试,因此有了 这个我们当前每周需要的build个数——130。当build结束后,Test Execution team和其分支 团队会执行自动测试来确保其代码的质量符合严格的要求和标准。最后当这个功能特性开发和测试完成后 ,其代码将会融入到SQL Server的主线代码中,然后其它各个分支团队将重新获取主线代码并融合其分支 的当前代码,来保证和主线代码的同步。

那么如何确保主线的代码质量总是符合严格的要求和标准呢?我们将会在后续文章中揭示另一个神奇 的领域,下次见!

时间: 2024-09-17 04:05:52

解密SQL Server数据库系统的编译的相关文章

在SQL Server中重新编译存储过程

在执行诸如添加索引或更改索引列中的数据等操作更改了数据库时,应重新编译访问数据库表的原始查询计划以对其重新优化.在 Microsoft SQL Server 2005 重新启动后第一次运行存储过程时自动执行此优化.当存储过程使用的基础表发生变化时,也会执行此优化.但如果添加了存储过程可能从中受益的新索引,将不自动执行优化,直到下一次 Microsoft SQL Server 重新启动后再运行该存储过程时为止.在这种情况下,强制在下次执行存储过程时对其重新编译会很有用. 必要时,强制重新编译存储过

应用Profiler优化SQL Server数据库系统

当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析.是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析.但本文并不介绍如何使用Profiler 工具,而是将介绍如何使用read80trace(有关该工具见后面介绍)工具结合自定义的存储过程来提

SQL Server数据库系统变化与性能调试

我们都听过一个流行的说法"唯一不变的,就是变化".变化是不可避免的.对于不断发展的企业,这意味着管理http://www.aliyun.com/zixun/aggregation/36297.html">应用数据库环境的时候,IT总在发生重要的变化.通常,昨天还运行良好的数据库系统在今天可能会遇到严重的问题.发生了什么变化呢?这篇文章将和数据库管理员(DBA)和开发者一起讨论如何在不断变化的环境中进行数据库调优,文章中我们将讨论到: 通常在数据库环境中发生变化的种类 这

如何优化Windows OS使SQL Server性能最优化

1.问题提出   这些天菜鸟又遇到麻烦事儿了.Server Team交给菜鸟的这批服务器跑起SQL Server来老是不顺畅.菜鸟情不至尽的想起了老鸟,于是,敲开了老鸟办公室的门:   "鸟哥,到底我们要如何定制化或者说如何优化我们的Windows Server OS来使得我们的SQL Server达到最大程度的性能优化呢?".老鸟还没有反应过来,菜鸟劈头盖脸的问道.   老鸟顿了两秒,自信的回答道:"菜鸟,有进步啊,开始学会思考问题了.我们可以按照如下方法来优化我们的操作系

SQL Server调优系列基础篇(常用运算符总结)

原文:SQL Server调优系列基础篇(常用运算符总结) 前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL Server数据库系统中是如何分解执行的,数据结果如何通过各个运算符组织形成的. 技术准备 基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 一.数据连接 数据连接是我们在写T-SQL语

SQL Server基础

server  1.1.        SQL Server的发展历程SQL Server是Microsoft公司的一个关系数据库管理系统,但说起它的历史,却得从Sybase开始的.SQL Server从20 世纪80年代后期开始开发,最早起源于1987年的Sybase SQL Server.SQL Server最初是由Microsoft.Sybase 和Ashton-Tate三家公司共同开发的,1988年,Microsoft公司.Sybase公司和Aston-Tate公司把该产品移植到OS/2

VFP中用SPT访问SQL Server数据库

VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也令广大用户非常头痛.随着MS SQL Server数据库系统的推广应用,其强大的安全性能普遍受到好评.笔者在长期的编程实践中,发现利用VFP的SQL pass-through(SPT)技术结合MS SQL Server数据库系统,也能像VB.Delphi.PowerBuilder一样轻松开发出优秀的客户/服务器(C/S)应用软件.现通过编写一个简单的通信录例子和广大VFP爱好者共同探讨. 一.服务器端MS SQL

T-SQL命令在SQL Server查询中的运用

server 首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET STATISTICS TIME这二条被经常忽略的Transact-SQL命令的. 从表面上看,查询性能的调节是一件十分简单的事.从本质上讲,我们希望查询的运行速度能够尽可能地快,无论是将查询运行的时间从10分钟缩减为1分钟,还是将运行的时间从2秒钟缩短为1秒种,我们最终的目标都是减少运

用户和安全性管理--SQL Server 的登录认证

   对任何企业组织来说,数据的安全性最为重要.安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到SQL Server 并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作.因此,安全性管理与用户管理是密不可分的.SQL Server 2000 提供了内置的安全性和数据保护,并且这种管理有效而又容易.    本章主要讨论如何创建和管理用户账号,以及如何实现和管理安全性,同时包括很多技巧和注意事项,这些技巧和注意事项将使您的工作更轻松,高效.