BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SQL Server 2016 —— 本机编译的函数

| 作者 Jonathan Allen 关注 610 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2015年6月11日. 估计阅读时间: 1 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

在SQL Server 2014中引入了本机编译的存储过程这一特性,而在SQL Server 2016中,我们将能够实现标量用户自定义函数(Scalar UDF)的本机编译(Natively Compilation)。

SQL Sever会将标准的T-SQL语句编译为一种专有的中间语言,并在运行时对此中间语言进行解释。而在本机编译的情况下,存储过程将转换为C代码并编译到一个DLL中,SQL Server会在运行时使用这个DLL文件。

现在,Scalar UDF也能够以类似的方式编译为机器代码了。对于简单的操作来说,这一过程会极大地改善它的性能。只要是普通的Scalar UDF能够使用的场合,都可以转为使用本机编译的Scalar UDF。不仅如此,它还能够在本机编译的存储过程中使用,这一点对于代码重用来说是个巨大的胜利,因为在SQL Server中,这种方式之前总是被认为意味着糟糕的性能。

与本机编译的存储过程一样,本机编译的Scalar UDF也必须被定义为绑定到架构(schema bound)。在存储过程中,WITH SCHEMABINDING选项表示本机编译是所期望的方式。目前还不清楚这一选项将如何作用于UDF,不过就像你已经看到的一样,它必然代表绑定到架构的函数。或许它能够自动检测到某个绑定到架构的UDF可否进行本机编译,根据结果不同进行相应的举措。

查看英文原文:SQL Server 2016: Natively Compiled Functions

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

不够彻底 by 江天 皓月

都用上了中间语言,还不如直接将C#作为存储过程和触发器的编程脚本不是更好?

Re: 不够彻底 by wang yi

这个早有了,2005就支持了,不过性能是个问题,所以才有了现在这个东西

Re: 不够彻底 by Shao Tony

正因为中间语言性能不行,才转为使用本机编译的方式的。而且如果使用C#,对于DBA来说又是一道门槛。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT