在Disk-Base數(shù)據(jù)庫中,由于臨時表和表變量的數(shù)據(jù)存儲在tempdb中,如果系統(tǒng)頻繁地創(chuàng)建和更新臨時表和表變量,大量的IO操作集中在tempdb中,tempdb很可能成為系統(tǒng)性能的瓶頸。在SQL Server 2016的內(nèi)存(Memory-Optimized)數(shù)據(jù)庫中,如果考慮使用內(nèi)存優(yōu)化結(jié)構(gòu)來存儲臨時表,表變量,表值參數(shù)的數(shù)據(jù),那么將完全消除IO操作的負(fù)載消耗,發(fā)揮大內(nèi)存的優(yōu)勢,大幅提高數(shù)據(jù)庫的性能。
在SQL Server 2016中,能夠直接創(chuàng)建內(nèi)存優(yōu)化的表類型,表變量和表值參數(shù)的數(shù)據(jù)只存儲在內(nèi)存中;不能直接在內(nèi)存中創(chuàng)建臨時表,但是,SQL Server提供一個變通方法(Workaround),通過行級安全RLS(Row-Level-Security)控制,指定只有當(dāng)前Session才能訪問特定的數(shù)據(jù),將內(nèi)存優(yōu)化表轉(zhuǎn)換為Session級別的臨時表,間接實現(xiàn)臨時表的局部性和自動清空特性。
一,內(nèi)存優(yōu)化表類型(Memory-Optimized Table Type)
內(nèi)存優(yōu)化表類型定義的表變量,表值參數(shù)能夠大幅提高效率(efficiency),有4個顯著的特點:
數(shù)據(jù)僅存儲在內(nèi)存中,在讀寫數(shù)據(jù)時,不會產(chǎn)生任何的IO消耗,消除了tempdb的競爭和利用率;
必須有一個索引,Hash 或 Nonclustered 都行;每一個內(nèi)存優(yōu)化表必須創(chuàng)建一個索引;
只需要指定啟用內(nèi)存優(yōu)化:MEMORY_OPTIMIZED = ON,只持久化Schema;
必須先創(chuàng)建表類型,后創(chuàng)建表值變量;
1,創(chuàng)建內(nèi)存優(yōu)化表類型
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26