記憶體資料庫,指的是將資料庫的資料放在記憶體中直接操作。相對於存放在磁碟上,記憶體的資料讀寫速度要高出很多,故可以提高應用的效能。微軟的sql server 2014已於2023年4月1日正式發布,sql 2014乙個主要的功能即為記憶體資料庫。
目前來說,資料庫映象和複製是無法與記憶體優化表相容的,但alwayson,日誌傳送,備份還原是完整支援。
由於記憶體表資料的存放機制和普通表(基於磁碟的表)完全不同,因此記憶體表的資料需要乙個特別的資料夾(注意不是檔案哦)來存放
use [master]對於每個資料庫,只能建立乙個記憶體優化檔案組(memory-optimized filegroup),而對於每個記憶體優化檔案組,可以建立多個關聯的資料夾。--建立資料庫
create database [testdb]
on primary
( name = n'testdb', filename = n'd:\sql2104\sqldata\testdb.mdf' ,
size = 204800kb , maxsize = unlimited, filegrowth = 204800kb )
log on
( name = n'testdb_log', filename = n'd:\sql2104\sqldata\testdb_log.ldf' ,
size = 204800kb , maxsize = 2048gb , filegrowth = 204800kb )
go--建立記憶體表使用的檔案組
alter database [testdb] add filegroup [testdb_mfg1] contains memory_optimized_data
go--建立記憶體表使用的資料夾
alter database [testdb]
add file ( name = n'testdb_mdir1', filename = n'd:\sql2104\sqldata\testdb_mdir1')
to filegroup [testdb_mfg1]
go
ps:記憶體優化檔案組基與filestream檔案組,但是無需為記憶體優化檔案組來啟用filestream。
建立記憶體表
建立記憶體表限制比較多:
1. 支援的資料型別:
2. 記憶體優化表支援自增,但唯一允許用於 seed 和 increment 的值為 1;(1,1) 是 seed 和 increment 的預設值;
3. 記憶體優化表不支援check約束,在非hash索引列上也不行;
4. 記憶體優化表不支援使用的排序規則所具有的**頁並非 1252 的資料型別 char(n) 和 varchar(n);
5. 記憶體優化表不支援nvarchar(max)或varchar(max)
6. 記憶體優化表索引不支援未使用 *_bin2 排序規則的字元列上的索引,在非hash索引列上也不行;
7. 記憶體優化表上的索引不支援索引鍵中有可為 null 的列,在非hash索引列上也不行;
8. 記憶體優化表必須有至少乙個索引或主鍵
建立記憶體優化表demo
create table [dbo].[tb1_im]關於資料持續性( [c1] [int] not null identity(1,1) primary key
nonclustered hash with (bucket_count=1000000),
[c2] [nchar](200) collate chinese_prc_stroke_90_bin2 not null
index ix_c2 nonclustered hash with (bucket_count=1000000),
[c3] [nvarchar](200) collate chinese_prc_stroke_90_bin2 not null,
[c4] [nvarchar](200) collate chinese_prc_stroke_90_bin2 not null,
index ix_c3_c4 nonclustered hash(c3,c4) with(bucket_count=1000000),
index ix_c2_c3 nonclustered (c2,c3)
)with ( memory_optimized = on , durability = schema_and_data )
對於記憶體優化表,有兩種持續性可以選擇:schema_only(非持久表)和schema_and_data(持久表),schema_only 選項會導致資料在例項重啟後丟失;而對於schema_and_data(持久表),又可以設定完全持久行還是延遲持續性,延遲持續性選項允許在事務提交時可以不立即將日誌寫入磁碟,從而提公升效能,當然代價就是發生故障時可能丟失資料。
學習筆記 SQL SERVER2014記憶體資料庫
sql server2014支援記憶體資料庫功能。記憶體可以說是資料庫效能的生命線。理論上,如果記憶體足夠,sql server可以將所有的資料都裝載到記憶體裡,訪問 修改什麼的,都在記憶體中進行,只有在checkpoint的時候才寫回硬碟。只有記憶體不夠,資料庫才會被迫經常lazy write,換...
學習筆記 SQL SERVER2014記憶體資料庫
sql server2014支援記憶體資料庫功能。記憶體可以說是資料庫效能的生命線。理論上,如果記憶體足夠,sql server可以將所有的資料都裝載到記憶體裡,訪問 修改什麼的,都在記憶體中進行,只有在checkpoint的時候才寫回硬碟。只有記憶體不夠,資料庫才會被迫經常lazy write,換...
SQL Server 2014 安裝小記
一 寫在前面 由於想體驗下微軟的windows azure在sql server資料庫方面的使用,筆者花了點時間安裝了一下sql server 2014,安裝很簡單,基本就是稍微做些配置即可,筆者在此記錄一下安裝過程。一 安裝記錄 注意 此處之所以選擇自己命名例項 mssqlserver2014 是...