程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server內核架構剖析

SQL Server內核架構剖析

編輯:關於SqlServer

我們做管理軟件的,主要核心就在數據存儲管理上。所以數據庫設計是我們的重中之重。為了讓我們 的管理軟件能夠穩定、可擴展、性能優秀、可跟蹤排錯、可升級部署、可插件運行,我們往往研發自己的 管理軟件開發平台。我們總是希望去學習別人的開發平台(如用友或金蝶或SAP),但我們卻總是感歎管 理軟件業務處理細節繁多,而數據庫管理軟件卻簡單的SELECT、INSERT、DELETE、UPDATE四個命令就搞定 。我們多希望有一天能做出一個架構,也可以這麼簡單就搞定管理軟件。我們往往研究別人的架構,卻忘 記了我們身邊我們最熟悉的數據庫的架構。所以,今天,我想帶領大家一起剖析一下數據庫的架構,來探 索數據庫的架構思想。而我本人呢,只熟悉SQLSERVER這一種數據庫產品,所以我就拿SQLSERVER來分析。

在講SQLSERVER內部原理的之前,我覺得非常有必要向大家介紹一下SQLSERVER的歷史。

讓我們站在1999年,看看計算機數據庫業界到底處於什麼狀態。

1999年,Oracle已經於1998年9月發布了Oracle 8i(可能中文版在1999年才來到中國)。Oracle 8i支 持用JAVA編寫存儲過程,支持XML,支持Linux。

1999年1月,SQLSERVER7正式發布。SQLSERVER7重構了整個數據庫引擎(相當於重寫了SQLSERVER)。 SQLSERVER第一次完整性的支持了行鎖(有沒有搞錯,過去人是怎麼使用數據庫產品的。1988年,Oracle6 就支持行鎖。另外1988年,Oracle就開始研發ERP產品。誰說Oracle是ERP門外漢,可以參考這個)。

看看他們倆的前一個版本。如果你入行比較晚(2000年以後),可能對以下文字更感到驚訝。

1992年,Oracle7發布。有了存儲過程、觸發器、引用完整性校驗、分布式事務處理。(天哪, Oracle7才有了這些東西)。

1995年,SQLSERVER6發布。SQLSERVER6是微軟真正意義上的第一個數據庫產品(真是爆料,大家沒想 到SQLSERVER6才是微軟第一個數據庫產品,那版本6之前的5、4、3、2、1是怎麼度過的)。因為1994年, 微軟和Sybase掰了(Sybase是第一個運行於PC上的C/S數據庫產品)。微軟為了進入數據庫產品領域,自 己又沒有經驗,於是和Sybase一起合作(當時微軟是全世界第一大軟件公司,微軟1986年上市。Sybase有 產品,缺錢。微軟缺產品,有錢。於是一拍即合)。直到1994年,微軟也不需要Sybase了(已經學會了數 據庫技術),Sybase也感覺微軟太狼子野心,於是合作分裂。微軟開始自己做自己的數據庫。

歷史說完。我們言歸正傳。

很多入門級做管理軟件的,SQL語句玩的熟練,從子查詢到Having到交叉表統計SQL都能做出來,甚至 存儲過程能寫2000多行,游標、自定義函數、觸發器、約束用的眼花缭亂。再入點門,在SQL查詢器中可 以使用SQL分析優化索引,用SQL Profile可以跟蹤SQL,甚至在性能查看器中監測SQLSERVER內存、CPU、 線程、I/O的運行狀態,甚至為自己會使用DBCC而沾沾自喜。

你是如此熟悉SQLSERVER,又是對SQLSERVER如此陌生。

我今天就用架構的角度來給大家分析一下SQLSERVER架構和原理。短短一篇博文肯定只能面上的多一些 ,深一層的可能需要連載數篇文章甚至一塊大磚頭書才能講完整。不過,我希望我的博文能夠拋磚引玉, 使大家能從一個過去沒有想過的角度去看SQLSERVER。

SQLSERVER,作為一個數據庫產品,我個人認為,最重要的就是兩大塊:存儲引擎和查詢引擎。

其他的日志、事務、鎖、索引等等都是圍繞他們來工作的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved