SQL Server ->> Sequence(序列對象)

序列是一個對象,作用類似於數據庫表的自增列性質,用於獲取序列值。它的特點是:

1、不與特定表相關聯,只能在INSERT語句通過調用NEXT VALUE FOR 函數來獲取新的序列值

2、全局性

3、調用sp_sequence_get_range一次性獲取一個序列範圍(多個序列值)

4、可以升序或降序生成

5、可以定義最大值、最小值和數值間隔,超過最大值可以決定要不要從最小值開始循環

6、最重要一點,可以緩存,這點對於繁忙的應用程序太重要了。緩存序列值範圍到內存,減少對磁盤IO的頻繁訪問。CACHE選項指定了緩存中緩存的序列數值多少個。緩存的情況下如果發生斷電或者重啓,緩存中的序列將丟失,重啓後從下一個沒有緩存的序列開始重新進入緩存。

 

緩存 vs 沒有緩存

沒有啓用緩存的情況下,請求下一個序列值時:

1、計算下一個序列值。

2、將序列對象的新當前值寫入系統表。

2、將計算的值返回給調用語句。

 

啓用緩存的情況下,請求下一個序列值時:

1、計算下一個序列值

2、在內存中更新該序列對象的新當前值

3、將計算的值返回給調用語句

 

緩存用完時:

1、計算序列對象的下一個值。

2、計算新緩存的最後一個值。

3、鎖定序列對象的系統錶行,新緩存的最後一個值寫入系統 表。 

 

 

參考:

CREATE SEQUENCE (Transact-SQL)

NEXT VALUE FOR (Transact-SQL)

sp_sequence_get_range (Transact-SQL)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章