SQL Server 2014新特性探秘(1)-記憶體資料庫

來源:互聯網
上載者:User
簡介

   SQL Server 2014提供了眾多激動人心的新功能,但其中我想最讓人期待的特性之一就要算記憶體資料庫了。去年我再西雅圖參加SQL PASS Summit 2012的開幕式時,微軟就宣布了將在下一個SQL Server版本中附帶代號為Hekaton的記憶體資料庫引擎。現在隨著2014CTP1的到來,我們終於可以一窺其面貌。

 

記憶體資料庫

    在傳統的資料庫表中,由於磁碟的物理結構限制,表和索引的結構為B-Tree,這就使得該類索引在大並發的OLTP環境中顯得非常乏力,雖然有很多辦法來解決這類問題,比如說開放式並行存取控制,應用程式緩衝,分布式等。但成本依然會略高。而隨著這些年硬體的發展,現在伺服器擁有幾百G記憶體並不罕見,此外由於NUMA架構的成熟,也消除了多CPU訪問記憶體的瓶頸問題,因此記憶體資料庫得以出現。

    記憶體的學名叫做Random Access Memory(RAM),因此如其特性一樣,是隨機訪問的,因此對於記憶體,對應的資料結構也會是Hash-Index,而並發的隔離方式也對應的變成了MVCC,因此記憶體資料庫可以在同樣的硬體資源下,Handle更多的並發和請求,並且不會被鎖阻塞,而SQL Server 2014整合了這個強大的功能,並不像Oracle的TimesTen需要額外付費,因此結合SSD AS Buffer Pool特性,所產生的效果將會非常值得期待。

 

SQL Server記憶體資料庫的表現形式

    在SQL Server的Hekaton引擎由兩部分組成:記憶體最佳化表和本地編譯預存程序。雖然Hekaton整合進了關聯式資料庫引擎,但訪問他們的方法對於用戶端是透明的,這也意味著從用戶端應用程式的角度來看,並不會知道Hekaton引擎的存在。1所示。

圖1.用戶端APP不會感知Hekaton引擎的存在

 

    首先記憶體最佳化表完全不會再存在鎖的概念(雖然之前的版本有快照隔離這個開放式並行存取控制的概念,但快照隔離仍然需要在修改資料的時候加鎖),此外記憶體最佳化表Hash-Index結構使得隨機讀寫的速度大大提高,另外記憶體最佳化表可以設定為非持久記憶體最佳化表,從而也就沒有了日誌(適合於ETL中間結果操作,但存在資料丟失的危險)

    下面我們來看建立一個記憶體最佳化表:

    首先,記憶體最佳化表需要資料庫中存在一個特殊的檔案組,以供儲存記憶體最佳化表的CheckPoint檔案,與傳統的mdf或ldf檔案不同的是,該檔案組是一個目錄而不是一個檔案,因為CheckPoint檔案只會附加,而不會修改,2所示。

圖2.記憶體最佳化表所需的特殊檔案組

 

我們再來看一下記憶體最佳化檔案組的樣子,3所示。

圖3.記憶體最佳化檔案組

 

    有了檔案組之後,接下來我們建立一個記憶體最佳化表,4所示。

圖4.建立記憶體最佳化表

   

   目前SSMS還不支援UI介面建立記憶體最佳化表,因此只能通過T-SQL來建立記憶體最佳化表,5所示。

圖5.使用代碼建立記憶體最佳化表

 

    當表建立好之後,就可以查詢資料了,值得注意的是,查詢記憶體最佳化表需要snapshot隔離等級或者hint,這個隔離等級與快照隔離是不同的,6所示。

圖6.查詢記憶體最佳化表需要加提示

 

    此外,由建立表的語句可以看出,目前SQL Server 2014記憶體最佳化表的Hash Index只支援固定的Bucket大小,不支援動態分配Bucket大小,因此這裡需要注意。

 

與記憶體資料庫不相容的特性

    目前來說,資料庫鏡像和複製是無法與記憶體最佳化表相容的,但AlwaysOn,記錄傳送,備份還原是完整支援。

 

效能測試

   上面扯了一堆理論,大家可能都看鬱悶了。下面我來做一個簡單的效能測試,來比對使用記憶體最佳化表+本地編譯預存程序與傳統的B-Tree表進行對比,B-Tree表7所示,記憶體最佳化表+本地編譯預存程序8所示。

 

圖7.傳統的B-Tree表

 

圖8.記憶體最佳化表+本地編譯預存程序

 

   因此不難看出,記憶體最佳化表+本地編譯預存程序有接近幾十倍的效能提升。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.