在Disk-Base數(shù)據(jù)庫中,由于臨時(shí)表和表變量的數(shù)據(jù)存儲(chǔ)在tempdb中,如果系統(tǒng)頻繁地創(chuàng)建和更新臨時(shí)表和表變量,大量的IO操作集中在tempdb中,tempdb很可能成為系統(tǒng)性能的瓶頸。在SQL Server 2016的內(nèi)存(Memory-Optimized)數(shù)據(jù)庫中,如果考慮使用內(nèi)存優(yōu)化結(jié)構(gòu)來存儲(chǔ)臨時(shí)表,表變量,表值參數(shù)的數(shù)據(jù),那么將完全消除IO操作的負(fù)載消耗,發(fā)揮大內(nèi)存的優(yōu)勢,大幅提高數(shù)據(jù)庫的性能。

在SQL Server 2016中,能夠直接創(chuàng)建內(nèi)存優(yōu)化的表類型,表變量和表值參數(shù)的數(shù)據(jù)只存儲(chǔ)在內(nèi)存中;不能直接在內(nèi)存中創(chuàng)建臨時(shí)表,但是,SQL Server提供一個(gè)變通方法(Workaround),通過行級(jí)安全RLS(Row-Level-Security)控制,指定只有當(dāng)前Session才能訪問特定的數(shù)據(jù),將內(nèi)存優(yōu)化表轉(zhuǎn)換為Session級(jí)別的臨時(shí)表,間接實(shí)現(xiàn)臨時(shí)表的局部性和自動(dòng)清空特性。

一,內(nèi)存優(yōu)化表類型(Memory-Optimized Table Type)

內(nèi)存優(yōu)化表類型定義的表變量,表值參數(shù)能夠大幅提高效率(efficiency),有4個(gè)顯著的特點(diǎn):

  • 數(shù)據(jù)僅存儲(chǔ)在內(nèi)存中,在讀寫數(shù)據(jù)時(shí),不會(huì)產(chǎn)生任何的IO消耗,消除了tempdb的競爭和利用率;

  • 必須有一個(gè)索引,Hash 或 Nonclustered 都行;每一個(gè)內(nèi)存優(yōu)化表必須創(chuàng)建一個(gè)索引;

  • 只需要指定啟用內(nèi)存優(yōu)化:MEMORY_OPTIMIZED = ON,只持久化Schema;

  • 必須先創(chuàng)建表類型,后創(chuàng)建表值變量;

1,創(chuàng)建內(nèi)存優(yōu)化表類型

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

        		

網(wǎng)友評(píng)論