一名小小的SQL Server DBA想談一下SQL Server的能力

來源:互聯網
上載者:User

標籤:

一名小小的SQL Server DBA想談一下SQL Server的能力

百度上暫時還沒有搜尋到相關的個人寫的比較有價值的文章,至少在中文網路的世界裡面沒有

但是在微軟的網站有這樣一篇文章:《比較 SQL Server 與 IBM DB2》

文章從下面幾個方面進行了對比

1、TCO和ROI
2、效能和可擴充性
3、高可用性
4、安全
5、管理
6、開發效率
7、商業智慧和資料倉儲
8、OLTP
9、SAP整合

文章介紹得比較牛逼

效能與可擴充性

SQL Server 的效能和可擴充性優於IBM DB2.

  • 基準顯示SQL Server 能夠掌控大型工作負載:

    • 在TPC-C 基準測試總,SQL Server每分鐘的交易處理超過1百萬,並且在 Windows平台上擁用最好的效能.
    • 在 TPC-H 基準的10項比較中,有7項SQL Server優於DB2.
    • 在一項 SAP-SD 認證基準中 支援 93,000個並發使用者,相當於全球最大的SAP客戶的10倍以上. 
    • 在新的OLTP基準標準-TPC-E中,SQL Server 是無可爭議的領先者.
    • 閱讀最新的 SQL Server 2008 基準結果.

     

  • SQL Server 2008 包括最新的效能與可擴充性 ,能夠優於DB2為大型工作負載提供更好的效能:

    • o 改進分區表、索引、範圍及其他
    • o 壓縮支援符合甚至超越了IBM DB2 UDB資源管理,能夠控制更細的CPU和記憶體資源
    • o 效能資料收集器可以跨企業定位問題、調整和監控SQL Server執行個體
    • o 高度調整的ETL引擎  目前保持了世界ETL效能紀錄

成功案例

  • Citi Group runs Lava market montage解決方案 運行在SQL Server上, 達到每秒200,000次以上的更新頻率

  • Xerox 採用SQL Server管理每天7百萬的交易處理,達到99.999%已耗用時間

  • American Power Conversion 遷移至 SQL Server企業版---實現100%的快速回應時間,節省費用800,000美元

  • VHA  從DB2的大型主機遷移至SQL Server—提升了25%效率, 降低了89%的複製時間, 顯著降低了總擁有成本.

  • Countrywide Home Loans 選擇了SQL Server以提高效能,獲得高可用性

  • Microsoft  IT  使用SQL Server來驅動 27TB的全球法定安全工具

  • Nasdaq, 全球領先的科技股交易,即時定票系統,採用SQL Server處理高達每秒5000的事務量.

  • Unisys UPSS system, 在 SQL Server上架構23 TB的資料倉儲,進入了資料倉儲峰值負荷的Top10行列.

  • Premier BankCard 將12 TB的資料倉儲和OLTP資料庫升級到SQL Server.

  • Danske Supermarket  在 SQL Server分析服務上運行600GB的的多維分析,以及10TB的商業智慧資料

還有一個文章《sqlserver的並發處理能力到底如何呀?高手都說說?》

 

 

其實這個題目是too open ended,無論大家認為它的定位在Oracle之下,還是只適合於中小型資料庫,我只想說一下它在我眼中的能力

我相信我寫完後其他資料庫愛好者就會出來噴了,Oracle的、MySQL的,畢竟這種文章跟《C#和JAVA哪家強》之類的文章是比較類似的。

 

我在這篇文章主要講兩個大家最care的方面:資料量、效能和功能

其實大家剛開始用資料庫最關心的莫過於OLTP情境裡面的效能了還有這個資料庫系統的所能夠hold住的資料量

 

一、hold住大資料量

SQL Server作為一個成熟的商務資料庫,對於hold住大資料量是沒有問題的

正如上面文章提到的:Microsoft  IT  使用SQL Server來驅動 27TB的全球法定安全工具

 

在本人所在公司也有一些比較大的資料庫,資料庫體積大的也有7~8TB,小的幾十MB

很多人說:“SQL Server不能處理海量資料,資料量一大SQL Server就處理不了!”

我想問:“海量資料究竟有多少資料?1億?10億?100億?1TB?10TB?100TB?”

反正我天天都對著這麽多資料(上TB也有、上十億條也有),還是這樣用SQL Server管理它們。

 

我這裡想說明一下如何比較資料量:比較資料量應該用資料庫的實際佔用體積大小來比較,而不應該用單表資料量的大小來比較!

這裡有一個例子:之前我們資料庫伺服器裡有一個表,有六個欄位,都是int類型,單表資料量已經1億+了,但是資料庫的大小隻有20G不到

在我眼中只是一個比較小的資料庫,雖然它的資料量比較驚人

在園友馬非碼的部落格裡曾經寫到一篇文章《我是如何在SQLServer中處理每天四億三千萬記錄的》,文章是非常多的推薦

但是在我眼裡,文章沒有多少新意,正如我剛才說的,四億三千萬資料可能就<100G的資料,這麽多資料其實跟SQL Server是否能hold住

沒有多大關係,而是跟博主的架構能力有關係,資料庫結構描述無非就是 分表-》分庫-》分機房,解決CAP問題,還有就是MVCC的問題。

 

 

實際上,超大型資料庫(VLDB)跟小型資料庫管理起來是不一樣的,這裡我是不管它資料量,我只管它的資料庫實際佔用體積

對於管理大型資料庫裡面的大表,大家第一個想法就是使用表分區來管理它,表分區從SQL Server2005開始推出到現在SQL Server2014還是使用表分區

大家會說,微軟還是沒有什麼突破,還是用這麽老的表分區技術來管理大表,甚至於有時候我做了表分區,但是整個資料庫這麽大,我還是做不了完整備份。。。

貌似在大家的眼中,表分區只是作為一種提升查詢效能的工具,更直接來說,就是提升Select Query效能的利器

但是對於我們DBA來說,分區表的優勢更多的體現在管理方面

分區表的管理優勢如下:

1、壓縮單獨某個分區的資料(SQL2008)

2、按分區的統計資訊(SQL2014 CREATE STATISTICS 和相關統計資訊語句現在允許通過使用 INCREMENTAL 選項建立按分區的統計資訊)

3、聯機重建某個分區的資料(SQL2014 針對聯機索引操作事件類別的進度報告現在具有兩個新資料列:PartitionId 和 PartitionNumber)

4、聯機重新組織某個分區的資料(SQL2005)

5、檔案組備份和分次還原(SQL2005)

6、CHECKFILEGROUP(SQL2005)

7、交換分區(刪除曆史資料或歸檔 或進行ETL)

8、鎖定擴大可以提升到分區鎖,而不是直接到表鎖(SQL2008)

 

其實只要表分區做得好,分區區間做得合理,定時維護分區表,hold住大資料量是沒有多少問題的。

 

前年看到一篇文章,對於關係型資料庫,如果資料庫的實際佔用體積到了100TB,關係型資料庫已經無能為力了,該到Hadoop上場的時候了。

本人承認,如果你的資料庫真的有100TB,那麼SQL Server可能會沒有能力handle,但是,你的資料庫真的reached 100TB,那麼你們公司的資料庫結構描述師

是不是有責任承擔這個風險,是不是他的資料庫結構描述沒有做好,沒有分庫分表分機房。

 

我先不管關係型資料庫是否有能力handle這麽大的資料量,後來我又看了一個視頻。

視頻裡面甲骨文技術產品事業部總經理吳承楊介紹了關係型資料庫和Hadoop的區別,Hadoop是處理非結構化資料的

而關係型資料庫是處理結構化資料的,兩者的側重點是不一樣,Hadoop處理的是海量非結構化資料,一般資料量PB層級

而吳承楊總經理也講到,非結構化資料通常指代的就是網頁資料,Hadoop把這些資料經過處理之後就存放進去關係型資料庫裡面以便查詢

所以不能把Hadoop和關係型資料庫相提並論。

 

二、SQL Server的效能

 

效能方面,我只想談論一下IO

大家知道不管Windows還是Linux,都是 使用者程式->OS核心->存放裝置這種架構,使用者程式和OS核心之間存在一套IO介面

同樣,OS核心和存放裝置之間一樣存在一套IO介面,有非同步,同步,存放裝置的Write Through和Write Back等參數

而Linux作業系統的IO行為跟Windows有很多不同之處的,兩者的檔案系統的不同,兩者的IO裝置驅動不一樣,IO調度模型不一樣

 

由於本人對Windows和Linux的IO調度沒有太深入研究,大家可以參考下面兩篇文章

Linux五種IO模型效能分析

Windows五種IO模型效能分析

 

其實一般不是太差的資料庫都可以達到上千的TPS,上萬的QPS,上萬的並發串連

由於本人沒有親自測試也沒有環境,就不再詳細說了

 

之前看過一本書,裡面說Linux的IO調度模型對於使用網路儲存的機器來講更加好,上層的一個請求,對於下層少量的網路資料包

而Windows上層的一個IO請求會對網路儲存發出比Linux還多的網路資料包,好像是iSCSI協議,所以運行在Linux上的Oracle和MySQL會更勝一籌

 

但是可以說,SQL Server針對Windows系統做過特別最佳化,在TPS和QPS各方面測試中不會跟主流資料庫相差很遠,不然的話SQL Server早就從地球上消失了

三、SQL Server的功能

 

本人覺得SQL Server的功能做得是比較完善了,最起碼對於一個商務資料庫,其他競爭者有的功能,SQL Server基本都有

例如限制資源使用這個功能

SQL Server的資源管理員可以針對登入使用者限制它所使用的CPU、記憶體、IO資源

而MySQL的Query Throttling針對的是

限制使用者每小時的修改資料庫資料的數量

控制使用者每小時開啟新串連的數量

限制有多少使用者串連MYSQL伺服器

 

MySQL的Query Throttling偏向於查詢方面的

我這裡不評論好壞,我只想說各有各的優缺點

 

到目前為止,我還未發現其他資料庫有的功能,SQL Server沒有的,或者本人才疏學淺,可能Oracle有的功能而SQL Server沒有的

比如:Oracle中的位元影像索引,而在SQL Server中位元影像過濾(Bitmap)運算子

相關文章:《SQL Server最佳化器特性-位元影像過濾(Bitmap)》

 

很多時候只是大家的實現方式不一樣已而,而不代表SQL Server沒有

總結

本人做DBA的時間不長,在學校開始接觸,到畢業之後公司使用SQL Server,到現在由它來帶我進入DBA這個行業

對於SQL Server這個產品,本人是比較感激的,每天跟各位SQL Server愛好者討論如何使用它,不亦樂乎

 

只可惜SQL Server在中國國內市場越來越不活躍,不知道以後會不會有盡頭。

 

如有不對的地方,歡迎大家拍磚o(∩_∩)o 

一名小小的SQL Server DBA想談一下SQL Server的能力

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.