【发布时间】:2017-07-08 16:22:01
【问题描述】:
CREATE SEQUENCE 有 CACHE 选项
MSDN 定义为
[ CACHE [<constant> ] | NO CACHE ]通过以下方式提高使用序列对象的应用程序的性能 最小化生成所需的磁盘 IO 数量 序号。默认为缓存。例如,如果缓存大小为 选择 50,SQL Server 不会缓存 50 个单独的值。它 只缓存当前值和剩余的值的数量 缓存。这意味着存储数据所需的内存量 缓存总是序列对象的数据类型的两个实例。
我知道它通过避免从磁盘 IO 读取并在内存中维护一些有助于可靠地生成序列中的下一个数字的信息来提高性能,但我无法想象缓存的简单内存表示会是什么样子MSDN 在示例中描述。
谁能解释一下缓存如何处理这个序列
CREATE SEQUENCE s
AS INT
START WITH 0
INCREMENT BY 25
CACHE 5
描述当以下每个语句独立执行时高速缓存将保存的内容:
SELECT NEXT VALUE FOR s -- returns 0
SELECT NEXT VALUE FOR s -- returns 25
SELECT NEXT VALUE FOR s -- returns 50
SELECT NEXT VALUE FOR s -- returns 75
SELECT NEXT VALUE FOR s -- returns 100
SELECT NEXT VALUE FOR s -- returns 125
【问题讨论】:
标签: sql-server database tsql