


淺析SQL server2008企業(yè)級(jí)新特性
SQL Server 2008已經(jīng)發(fā)布,我們可以看到它在各方面都有了顯著的進(jìn)步,這些讓人側(cè)目之處和失望之處都有可能極大地影響大型企業(yè)的采購(gòu)意向。
微軟SQL Server 2008的開發(fā)代號(hào)是Katmai,這個(gè)名字來(lái)源于阿拉斯加半島東端阿拉斯加州北部阿留申山區(qū)的一座活火山,對(duì)數(shù)據(jù)庫(kù)而言,可能并不是個(gè)最好的比喻(嘿嘿,目前為止,Katmai火山還沒(méi)有在我頭上爆發(fā)過(guò))。低調(diào)的Katmai看起來(lái)似乎是Yukon的一個(gè)好的接班人,而Yukon是SQL Server 2005的開發(fā)代號(hào)。
在基于對(duì)SQL Server 2005徹底的、面向企業(yè)的改進(jìn)之后,Katmai為大規(guī)模部署帶來(lái)了非常引人注目的特性,比如數(shù)據(jù)庫(kù)引擎中的數(shù)據(jù)及備份壓縮、稀疏列、壓縮與過(guò)濾索引,這些功能都是為了節(jié)省存儲(chǔ)空間,環(huán)保、綠色;另外,別忘了還有Change Data Capture,其在表中捕捉生成數(shù)據(jù)的差別,以便更新數(shù)據(jù)倉(cāng)庫(kù)。
這些都只不過(guò)是冰山一角(喔,不是冰山是火山),還有許多其他的新特性,如基于策略的管理——這是針對(duì)中小企業(yè)和大型企業(yè)的,不僅這些,SQL Server 2008的各個(gè)方面都讓人留下了深刻的印象。
更多的數(shù)據(jù),更少的存儲(chǔ)空間
一般來(lái)說(shuō),數(shù)據(jù)庫(kù)中有兩種類型的壓縮:行壓縮與頁(yè)壓縮。實(shí)際上,它們以不同的方法壓縮數(shù)據(jù),因此,很有必要理解兩者的優(yōu)勢(shì)所在及它們的工作方式。行壓縮是真正的壓縮,為什么數(shù)據(jù)庫(kù)引擎會(huì)刪除列尾未使用的空間呢?當(dāng)然這是為了節(jié)省空間。這正是SQL Server在vardecimal壓縮中使用的同一技術(shù),微軟只不過(guò)把它擴(kuò)展到其他數(shù)據(jù)類型上了。
而頁(yè)壓縮使用的是眾所皆知的字典壓縮,它把每頁(yè)中的數(shù)據(jù)標(biāo)準(zhǔn)化之后并保留一個(gè)查找指針。這也是Oracle Database 11g所使用的技術(shù),只不過(guò)Oracle稱之為Oracle高級(jí)壓縮。在此,我們無(wú)須對(duì)兩種壓縮方式了解過(guò)多,但必須知道SQL Server的頁(yè)壓縮包括了更低級(jí)的行壓縮,換句話來(lái)說(shuō),如果你打開了頁(yè)壓縮,就自動(dòng)打開了行壓縮。
在SQL Server 2008中,微軟已經(jīng)包含了幾個(gè)存儲(chǔ)過(guò)程,以方便你在開始?jí)嚎s之前,就可以估計(jì)使用哪種壓縮方法之后,兩者的節(jié)省水平,以及解壓數(shù)據(jù)庫(kù)之后,數(shù)據(jù)將會(huì)擴(kuò)展到多大。這是一個(gè)非常重要且體貼的功能,因?yàn)槟悴粌H需要了解是否值得花時(shí)間壓縮,而且還要知道磁盤是否處理得了還原后未壓縮的數(shù)據(jù)。但要緊記的是,這些存儲(chǔ)過(guò)程是基于小范圍的統(tǒng)計(jì)上的隨機(jī)數(shù)據(jù)采樣,如果碰巧遇到一個(gè)數(shù)據(jù)上的采樣失誤,那么就會(huì)得到錯(cuò)誤的估計(jì)結(jié)果。
另外,微軟實(shí)現(xiàn)壓縮的方法,節(jié)約的不僅僅是存儲(chǔ)資源,數(shù)據(jù)還可以在內(nèi)存中保持壓縮狀態(tài),只在讀取時(shí)才解壓,這意味著你可以把更多的數(shù)據(jù)頁(yè)裝入內(nèi)存中,由此減少磁盤讀取次數(shù),而CPU用于解壓的時(shí)間,也遠(yuǎn)遠(yuǎn)少于磁盤尋道的時(shí)間。
稀疏列允許你存儲(chǔ)空值而無(wú)須占用物理空間,如果在一張“巨大”的表中,列有許多空值,可能會(huì)浪費(fèi)大量的磁盤空間來(lái)跟蹤這些空值。而把空值存儲(chǔ)在稀疏列中則不會(huì)占用任何空間,存儲(chǔ)需求也會(huì)隨之降低。
在使用稀疏列時(shí)要非常留意一點(diǎn),它們與壓縮不兼容,坦白地說(shuō),這是微軟的一大失誤。希望本著為用戶著想的原則,在某個(gè)Service Pack中就能更正這個(gè)問(wèn)題,而不是要等到下個(gè)版本。同時(shí),如果你在表中也定義了稀疏列,那么也不要指望會(huì)壓縮表中的數(shù)據(jù),真是不知道微軟是怎么搞的,這些本不應(yīng)該出現(xiàn)在正式產(chǎn)品中的。如果非要說(shuō)稀疏列與壓縮他倆是一對(duì)完美的組合,那“如花”可能也配得上金城武了。
壓縮索引還像碼事,至少名符其實(shí),這又是節(jié)省存儲(chǔ)空間的另一個(gè)方法。過(guò)濾索引可以在索引上放置一個(gè)where子句(如某條查詢),以便只有表的一部分被索引。聽上去似乎不太妥當(dāng),但在某些情況下你可能就會(huì)想要過(guò)濾某些索引了,舉個(gè)例子來(lái)說(shuō),在使用稀疏列時(shí),有了過(guò)濾索引就無(wú)須保持一個(gè)包含了主要是空值的索引,你可在稀疏列上放置一條索引,只取那些非空值就行了。這樣做以后,只有那些帶有實(shí)際值的行會(huì)被索引,而索引的體積也會(huì)相應(yīng)大幅減小。
工作負(fù)荷是好,還是差?
Resource Governor是微軟在SQL Server中真正對(duì)資源管理的一次嘗試,老實(shí)講,根本就比不上Oracle,但仍是一個(gè)好的開始。SQL Server 2008允許你在內(nèi)存和CPU中定義資源限制,但在重負(fù)荷工作情況下仍然差強(qiáng)人意。
微軟對(duì)此的回應(yīng)是,Resource Governor不是旨在滿足重負(fù)荷工作要求,在這第一個(gè)版本中,目標(biāo)僅是管控工作負(fù)荷中的那些資源,以防止它們變成“野”進(jìn)程。當(dāng)然了,這仍未解決過(guò)度占用磁盤或處理器時(shí)間的問(wèn)題。在SQL Server 2008中,如果一個(gè)進(jìn)程開始占用過(guò)多的資源,那么也沒(méi)有辦法自動(dòng)把它挪到一個(gè)定義好的Resource Governor中,也就是說(shuō),一個(gè)進(jìn)程要么在資源上受Resource Governor管控,要么就不受控。
其實(shí)這個(gè)特性最大的受益者是OLTP(在線交易或聯(lián)機(jī)事務(wù)處理)系統(tǒng),其只會(huì)產(chǎn)生一些輕量級(jí)的數(shù)據(jù),如果不想它占用過(guò)多服務(wù)器資源,可把查詢進(jìn)程放入它們自己的Resource Governor中,以管控資源使用量,使服務(wù)器的大部分功率都用于OLTP負(fù)載,賺取真正的“真金白銀”啊。
CDC(Change Data Capture,改變數(shù)據(jù)采集)是一個(gè)非常好的功能,我想對(duì)那些整日與ETL(取出、轉(zhuǎn)換、加載)處理“扭打”的數(shù)據(jù)庫(kù)管理員來(lái)說(shuō),它會(huì)非常受歡迎。 CDC允許SQL Server在定義的列中,捕捉到哪些行列已改變,并把變化的結(jié)果放入到一張可被ETL查詢的單獨(dú)的表中。好處顯而易見,對(duì)哪些行被插入、刪除或更新,就不再需要廣泛地進(jìn)行查詢了。當(dāng)前來(lái)說(shuō),在一張表中發(fā)現(xiàn)這些操作并不容易,經(jīng)常還需要編寫代碼才能找出來(lái)。但有了CDC之后,你就可在數(shù)據(jù)庫(kù)級(jí)別上定義這些審計(jì)策略,不用修改程序代碼,一邊看報(bào)紙喝茶去啰。
SQL Server 2008還帶來(lái)了基于策略的管理(PBM),其是一種可為任何事件定義策略(規(guī)則)的方法,可在服務(wù)器超出策略時(shí),要么強(qiáng)制執(zhí)行,要么發(fā)出警報(bào)。你幾乎可在策略中定義任何事情,甚至像“表名不能以tbl打頭”這樣的策略也可以強(qiáng)制執(zhí)行;還可以定義如“所有數(shù)據(jù)庫(kù)都應(yīng)每天備份,如果某臺(tái)服務(wù)器缺少備份,應(yīng)發(fā)出警報(bào)。”PBM正成為SQL Server發(fā)展中一個(gè)非常強(qiáng)大的工具,至少我也非常喜歡它。
SQL Server 2008的閃光之處
SQL Server 2008帶來(lái)了太多的新功能,片言之間難以表述,筆者甚至都還沒(méi)有試一下完全重寫后的SQL Server Reporting Services,或體驗(yàn)一下SQL Server Integration Services、SQL Server Analysis Services中的全部功能,還有新的數(shù)據(jù)倉(cāng)庫(kù)、交互式Dundas向下搜索報(bào)告、IntelliSense(智能感知)、新的活動(dòng)監(jiān)視器、集成 PowerShell等等。
對(duì)多數(shù)大型企業(yè)來(lái)說(shuō),我認(rèn)為SQL Server 2008最大的亮點(diǎn)在于數(shù)據(jù)壓縮及CDC,因?yàn)閮烧叨紩?huì)影響到企業(yè)的預(yù)算。Resource Governor是一個(gè)非常好的功能,但目前它還比較“稚嫩”,局限太多,還未達(dá)到微軟期望的水平,相信再經(jīng)過(guò)幾個(gè)版本,它定會(huì)不負(fù)眾望。
壓縮及過(guò)濾索引這次想必給大家?guī)?lái)了不一樣的感覺,雖然過(guò)濾索引存在上面提到的一些小問(wèn)題,但如果你把它們用對(duì)地方,也能看到所期望的性能提升。另外,在其他工具方面也有了一些重大的改進(jìn),但對(duì)數(shù)據(jù)庫(kù)管理員來(lái)說(shuō),他們可能要失望了,因?yàn)檫@些改進(jìn)都是針對(duì)開發(fā)人員的。
關(guān)鍵字:SQL server、企業(yè)、數(shù)據(jù)庫(kù)
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解