sqlserver内核架构剖析--

sqlserver内核架构剖析--

ID:9502547

大小:62.50 KB

页数:12页

时间:2018-05-01

sqlserver内核架构剖析--_第1页
sqlserver内核架构剖析--_第2页
sqlserver内核架构剖析--_第3页
sqlserver内核架构剖析--_第4页
sqlserver内核架构剖析--_第5页
资源描述:

《sqlserver内核架构剖析--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、SQLServer内核架构剖析>>  我们做管理软件的,主要核心就在数据存储管理上。所以数据库设计是我们的重中之重。为了让我们的管理软件能够稳定、可扩展、性能优秀、可跟踪排错、可升级部署、可插件运行,我们往往研发自己的管理软件开发平台。我们总是希望去学习别人的开发平台(如用友或金蝶或SAP),但我们却总是感叹管理软件业务处理细节繁多,而数据库管理软件却简单的SELECT、INSERT、DELETE、UPDATE四个命令就搞定。我们多希望有一天能做出一个架构,也可以这么简单就搞定管理软件。我们往往研究别人的架构,却忘记了我们身边

2、我们最熟悉的数据库的架构。所以,今天,我想带领大家一起剖析一下数据库的架构,来探索数据库的架构思想。而我本人呢,只熟悉SQLSERVER这一种数据库产品,所以我就拿SQLSERVER来分析。  在讲SQLSERVER内部原理的之前,我觉得非常有必要向大家介绍一下SQLSERVER的历史。  让我们站在1999年,看看计算机数据库业界到底处于什么状态。  1999年,Oracle已经于1998年9月发布了Oracle8i(可能中文版在1999年才来到中国)。Oracle8i支持用JAVA编写存储过程,支持XML,支持Linux。

3、  1999年1月,SQLSERVER7正式发布。SQLSERVER7重构了整个数据库引擎(相当于重写了SQLSERVER)。SQLSERVER第一次完整性的支持了行锁(有没有搞错,过去人是怎么使用数据库产品的。1988年,Oracle6就支持行锁。另外1988年,Oracle就开始研发ERP产品。谁说Oracle是ERP门外汉,可以参考这个)。  看看他们俩的前一个版本。如果你入行比较晚(2000年以后),可能对以下文字更感到惊讶。  1992年,Oracle7发布。有了存储过程、触发器、引用完整性校验、分布式事务处理。(天

4、哪,Oracle7才有了这些东西)。  1995年,SQLSERVER6发布。SQLSERVER6是微软真正意义上的第一个数据库产品(真是爆料,大家没想到SQLSERVER6才是微软第一个数据库产品,那版本6之前的5、4、3、2、1是怎么度过的)。因为1994年,微软和Sybase掰了(Sybase是第一个运行于PC上的C/S数据库产品)。微软为了进入数据库产品领域,自己又没有经验,于是和Sybase一起合作(当时微软是全世界第一大软件公司,微软1986年上市。Sybase有产品,缺钱。微软缺产品,有钱。于是一拍即合)。直到1

5、994年,微软也不需要Sybase了(已经学会了数据库技术),Sybase也感觉微软太狼子野心,于是合作分裂。微软开始自己做自己的数据库。  历史说完。我们言归正传。  很多入门级做管理软件的,SQL语句玩的熟练,从子查询到Having到交叉表统计SQL都能做出来,甚至存储过程能写2000多行,游标、自定义函数、触发器、约束用的眼花缭乱。再入点门,在SQL查询器中可以使用SQL分析优化索引,用SQLProfile可以跟踪SQL,甚至在性能查看器中监测SQLSERVER内存、CPU、线程、I/O的运行状态,甚至为自己会使用DBC

6、C而沾沾自喜。  你是如此熟悉SQLSERVER,又是对SQLSERVER如此陌生。  我今天就用架构的角度来给大家分析一下SQLSERVER架构和原理。短短一篇博文肯定只能面上的多一些,深一层的可能需要连载数篇文章甚至一块大砖头书才能讲完整。不过,我希望我的博文能够抛砖引玉,使大家能从一个过去没有想过的角度去看SQLSERVER。  SQLSERVER,作为一个数据库产品,我个人认为,最重要的就是两大块:存储引擎和查询引擎。  其他的日志、事务、锁、索引等等都是围绕他们来工作的。  SQLSERVER是C/S产品,所以一条S

7、QL语句要让SQLSERVER执行,必须要传输到SQLSERVER服务器端。传输,我们当然知道需要NetBEUI、TCP/IP等等网络传输协议。但是光有这些还不行。客户端如何发,服务器端如何收,如何确认发的和收的正确完整,如何确实发的和收的已经结束,如何发和收能跨越各种网络协议(如UNIX和。这个数据流是令牌控制客户端和服务器端对话(否则,客户端说了N句话,服务器端返回N句话,没有令牌就混在一起了,不知道哪个回答是对应哪个请求的)。我们往往不能直接和OpenDataServices打交道,把数据放进来。而是我们必须通过ODBC

8、、ADO或DB-Library来发送tabulardatastream。而SQLSERVER返回的数据结果,也是通过这些ODBC之类发回tabulardatastream。你看看SQLSERVER设计的多巧妙,一个通用数据访问接口屏蔽了你和SQLSERVER之间,就如同-IP

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。