加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 为什么Denali序列应该比标识列表现更好?

发布时间:2020-12-24 10:34:34 所属栏目:MsSql教程 来源:网络整理
导读:在他对 Which is better: identity columns or generated unique id values? mrdenny的回答中说: When SQL Denali comes out it will support sequences which will be more efficient than identity,but you can’t create something more efficient yourse

在他对 Which is better: identity columns or generated unique id values? mrdenny的回答中说:

When SQL Denali comes out it will support sequences which will be more efficient than identity,but you can’t create something more efficient yourself.

我不确定.知道了Oracle的序列,我要么为insert创建一个触发器,将每个插入封装到一个存储过程的调用中,或者祈祷我在执行ad-hoc插入时不要忘记正确使用该序列.

我怀疑序列的优点是如此明显.

解决方法

我也会在这里回答.它与IDENTITY和SEQUENCE如何工作的内部有关.

使用IDENTITY,SQL Server将值预先缓存到内存中,以便它们随时可用.有关详细信息,请参阅Martin Smith’s answer.使用值时,后台进程会生成更多值.您可以想象这个池可以很快耗尽,让应用程序受到生成值的后台进程的支配.

使用SEQUENCE,SQL Server允许您定义缓存的大小.虽然SQL Server实际上并未将值保留在缓存中,但它只保留当前值和最高值,这将大大减少创建值所需的IO量.

不要将缓存设置得太高,因为这会减少可以使用的数字的数量:如果SQL Server崩溃,则当前缓存范围中指定的未使用的任何值都将丢失.

对于行插入,只需为列指定默认值,如下所示:

DEFAULT (NEXT VALUE FOR Audit.EventCounter),

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读