瞭解一下SQL Server

jeanron100發表於2017-09-07

說實話,我在大學的時候用了下SQL Server,自從工作以來一直沒有接觸過SQL Sever,越是不接觸越是排斥,也是不瞭解越是排斥,所以花點時間瞭解下自己不熟悉的技術,可能也會有一番收穫。

SQLServer的版本

它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發的,1988年推出了第一個OS/2版本。1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和使用者見面;SQL Server 2000是Microsoft公司於2000年推出,目前最新版本SQL SERVER 2016。

Oracle的版本也開始按照這種套路了,9i,10g,11g,12c,下來就是18,因為自2018年起,Oracle資料庫的版本號將直接跳升到18

甘特魔力象限

如果說Oracle是最強大的商業資料庫,估計反對的聲音會很少,這些年來Oracle一直在這種強大的光環下,但是從近些年的發展來看,SQL Server的變化也很大,直到去年一看Garnter魔力象限,竟然飆到了第一名。

瞭解一下SQL Server

這個象限是通過多個維度來做的一個結論,所以是綜合的優勢。

DB engines的排名

我從DB Engines拿到了最新的資料庫流行度的排行版,前三甲依舊是Oracle,MySQL,SQL Server,從我的片面認識來看,SQL Server似乎沒有他地位該有的熱度。

瞭解一下SQL Server

而進一步瞭解一下資料庫產品競爭圖和客戶流向示意圖,就會發現,很多資料庫都在收縮。在我的印象中,SQL Server在韓國,臺灣用的相對比較多。

瞭解一下SQL Server

中間粗粗的一條線就是Oracle到MySQL。下面這個圖有一點需要補充,那麼就是Oracle到SQL Server,微軟已經推出了Linux平臺的資料庫版本服務,這對於Azure的發展可謂是如虎添翼,而且微軟算是投入了大量的人力財力來稀釋Oracle的市場佔有率。他們推出了SQL Server遷移到Oracle免費的策略,除了免費的SQL Server許可外,微軟還提供了免費的SQL Server技術培訓以及用於抵消遷移部署成本的補償金。當然這個政策有一定的時效性。

MVP

微軟在社群方面也花了很大的精力,他們的社群專家是被稱為MVP,是通過評選獲得的,整個的參選標準和Oracle的ACE有點像,得到榮譽之後也會傳送獎盃之類的。

瞭解一下SQL Server

安裝型別

SQL Server的安裝型別比較多,有企業版,標準版,個人版,開發版,企業評估版等。估計還有些沒有整理細緻,從版本的報價來看,比Oracle略低,版本間有一定的梯度價格。

Oracle的版本相對要少一些,企業版,標準版,還有個中間版本,版本的不同就是元件的差別了。比如ADG,RAC,Partition這些都是企業版的。

MySQL在這方面的差別更明顯,商業版,社群版,分支(MariaDB,Percona,Drizzle...),除了商業版有個基本的費用外,其他都免費,還開源,當然這麼比就不公平了,畢竟是商業資料庫和開源資料庫。

體系結構

學習一個資料庫,看看它的體系結構設計尤其重要。這是我找到的一個體繫結構圖。

瞭解一下SQL Server

整體來看,資料庫引擎是分為了下面四個部分。

  • 協議層(Protocols)

    這個層面SQL Server做得很全面,支援TCP/IP,name pipes等,Oracle的網路服務是獨立的,本機是bequeath協議,網路TCP.網路擴充套件支援很強,支援多埠,多種配置模式。

    MySQL在這方面的要簡單一些,獨一埠,統一的協議。

  • 關係引擎(Relational Engine),也稱為查詢處理器(Query Processor)

    這個被稱為是SQL Server最複雜的一個元件。和我們通常所說的SQL引擎差不多。

  • 儲存引擎(Storage Engine)

    儲存引擎包含的元件大體有事務服務,鎖管理器,訪問方法和實用工具等。

    MySQL裡面的儲存引擎那可是百花齊放,尤以InnoDB為上品。

  • SQLOS是應用層,是最底層的,裡面有很多的排程和管理,比如記憶體管理,死鎖檢測,排程等。

隔離級別

SQL Server有下面的5種事務隔離級別,比平常我們所說的多了一種:快照。

  • Read Uncommitted:僅支援悲觀併發;

  • Repeatable Read:僅支援悲觀併發;

  • Serializable:僅支援悲觀併發;

  • Snapshot: 支援樂觀併發;

  • Read Committed:預設隔離級別,依據配置既可支援悲觀併發也可支援樂觀併發

備份恢復

這方面的工作,如果手工去做,通過圖形介面就能夠完成,這一點上很多資料庫都達不到SQL Server這種易用性和使用者體驗。當然大批量的環境應該得用指令碼實現。

看了下SQL Server create database的語句,和Oracle很想,有些資料字典也會很類似。比如裡面也有information_schema,還有sys等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2144667/,如需轉載,請註明出處,否則將追究法律責任。

相關文章