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、锁定序列对象的系统表行,新缓存的最后一个值写入系统 表。
参考: