日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SQLServer2014新特性探秘(1):內(nèi)存數(shù)據(jù)庫

內(nèi)存數(shù)據(jù)庫

在傳統(tǒng)的數(shù)據(jù)庫表中,由于磁盤的物理結(jié)構(gòu)限制,表和索引的結(jié)構(gòu)為B-Tree,這就使得該類索引在大并發(fā)的OLTP環(huán)境中顯得非常乏力,雖然有很多辦法來解決這類問題,比如說樂觀并發(fā)控制,應(yīng)用程序緩存,分布式等。但成本依然會(huì)略高。而隨著這些年硬件的發(fā)展,現(xiàn)在服務(wù)器擁有幾百G內(nèi)存并不罕見,此外由于NUMA架構(gòu)的成熟,也消除了多CPU訪問內(nèi)存的瓶頸問題,因此內(nèi)存數(shù)據(jù)庫得以出現(xiàn)。

內(nèi)存的學(xué)名叫做Random Access Memory(RAM),因此如其特性一樣,是隨機(jī)訪問的,因此對(duì)于內(nèi)存,對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)也會(huì)是Hash-Index,而并發(fā)的隔離方式也對(duì)應(yīng)的變成了MVCC,因此內(nèi)存數(shù)據(jù)庫可以在同樣的硬件資源下,Handle更多的并發(fā)和請(qǐng)求,并且不會(huì)被鎖阻塞,而SQL Server 2014集成了這個(gè)強(qiáng)大的功能,并不像Oracle的TimesTen需要額外付費(fèi),因此結(jié)合SSD AS Buffer Pool特性,所產(chǎn)生的效果將會(huì)非常值得期待。

SQL Server內(nèi)存數(shù)據(jù)庫的表現(xiàn)形式

在SQL Server的Hekaton引擎由兩部分組成:內(nèi)存優(yōu)化表和本地編譯存儲(chǔ)過程。雖然Hekaton集成進(jìn)了關(guān)系數(shù)據(jù)庫引擎,但訪問他們的方法對(duì)于客戶端是透明的,這也意味著從客戶端應(yīng)用程序的角度來看,并不會(huì)知道Hekaton引擎的存在。如圖1所示。

圖1.客戶端APP不會(huì)感知Hekaton引擎的存在

首先內(nèi)存優(yōu)化表完全不會(huì)再存在鎖的概念(雖然之前的版本有快照隔離這個(gè)樂觀并發(fā)控制的概念,但快照隔離仍然需要在修改數(shù)據(jù)的時(shí)候加鎖),此外內(nèi)存優(yōu)化表Hash-Index結(jié)構(gòu)使得隨機(jī)讀寫的速度大大提高,另外內(nèi)存優(yōu)化表可以設(shè)置為非持久內(nèi)存優(yōu)化表,從而也就沒有了日志(適合于ETL中間結(jié)果操作,但存在數(shù)據(jù)丟失的危險(xiǎn))

下面我們來看創(chuàng)建一個(gè)內(nèi)存優(yōu)化表:

首先,內(nèi)存優(yōu)化表需要數(shù)據(jù)庫中存在一個(gè)特殊的文件組,以供存儲(chǔ)內(nèi)存優(yōu)化表的CheckPoint文件,與傳統(tǒng)的mdf或ldf文件不同的是,該文件組是一個(gè)目錄而不是一個(gè)文件,因?yàn)镃heckPoint文件只會(huì)附加,而不會(huì)修改,如圖2所示。

圖2.內(nèi)存優(yōu)化表所需的特殊文件組

我們?cè)賮砜匆幌聝?nèi)存優(yōu)化文件組的樣子,如圖3所示。

圖3.內(nèi)存優(yōu)化文件組

有了文件組之后,接下來我們創(chuàng)建一個(gè)內(nèi)存優(yōu)化表,如圖4所示。

圖4.創(chuàng)建內(nèi)存優(yōu)化表

目前SSMS還不支持UI界面創(chuàng)建內(nèi)存優(yōu)化表,因此只能通過T-SQL來創(chuàng)建內(nèi)存優(yōu)化表,如圖5所示。

圖5.使用代碼創(chuàng)建內(nèi)存優(yōu)化表

當(dāng)表創(chuàng)建好之后,就可以查詢數(shù)據(jù)了,值得注意的是,查詢內(nèi)存優(yōu)化表需要snapshot隔離等級(jí)或者h(yuǎn)int,這個(gè)隔離等級(jí)與快照隔離是不同的,如圖6所示。

圖6.查詢內(nèi)存優(yōu)化表需要加提示

此外,由創(chuàng)建表的語句可以看出,目前SQL Server 2014內(nèi)存優(yōu)化表的Hash Index只支持固定的Bucket大小,不支持動(dòng)態(tài)分配Bucket大小,因此這里需要注意。

與內(nèi)存數(shù)據(jù)庫不兼容的特性

目前來說,數(shù)據(jù)庫鏡像和復(fù)制是無法與內(nèi)存優(yōu)化表兼容的,但AlwaysOn,日志傳送,備份還原是完整支持。

性能測(cè)試

   上面扯了一堆理論,大家可能都看郁悶了。下面我來做一個(gè)簡(jiǎn)單的性能測(cè)試,來比對(duì)使用內(nèi)存優(yōu)化表+本地編譯存儲(chǔ)過程與傳統(tǒng)的B-Tree表進(jìn)行對(duì)比,B-Tree表如圖7所示,內(nèi)存優(yōu)化表+本地編譯存儲(chǔ)過程如圖8所示。

圖7.傳統(tǒng)的B-Tree表

圖8.內(nèi)存優(yōu)化表+本地編譯存儲(chǔ)過程

   因此不難看出,內(nèi)存優(yōu)化表+本地編譯存儲(chǔ)過程有接近幾十倍的性能提升。


名稱欄目:SQLServer2014新特性探秘(1):內(nèi)存數(shù)據(jù)庫
文章來源:http://www.5511xx.com/article/cogohdg.html