sql server 2014記憶體表

2021-09-07 22:36:39 字數 2372 閱讀 5634

記憶體資料庫,指的是將資料庫的資料放在記憶體中直接操作。相對於存放在磁碟上,記憶體的資料讀寫速度要高出很多,故可以提高應用的效能。微軟的sql server 2014已於2023年4月1日正式發布,sql 2014乙個主要的功能即為記憶體資料庫。

目前來說,資料庫映象和複製是無法與記憶體優化表相容的,但alwayson,日誌傳送,備份還原是完整支援。

由於記憶體表資料的存放機制和普通表(基於磁碟的表)完全不同,因此記憶體表的資料需要乙個特別的資料夾(注意不是檔案哦)來存放

use [master]

--建立資料庫

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

對於每個資料庫,只能建立乙個記憶體優化檔案組(memory-optimized filegroup),而對於每個記憶體優化檔案組,可以建立多個關聯的資料夾。

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 是...