mysql udf介绍_MySQL UDF 用户自定义函数

MySQL 数据库除了系统提供的内置函数外,还提供了用户自定义函数的功能UDF(User defined Function)。

MySQL 服务已经提供了很多内置函数供用户使用。如果您还是有建立新函数的需求的话,可以使用UDF。

一、添加新函数的方法

1、通过用户定义的函数(UDF)接口添加函数。用户定义的函数被编译为库文件,然后使用CREATE FUNCTION和DROP FUNCTION语句动态地添加到服务器并从服务器中删除。

2、将函数添加为本地(内置)MySQL函数。原生函数被编译到 mysqld服务器中并永久可用。

3、创建存储函数。这些是使用SQL语句编写的,而不是编译目标代码。

二、用户定义函数

MySQL本身支持很多内建的函数,此外还可以通过创建存储方法来定义函数。UDF为用户提供了一种更高效的方式来创建函数。

UDF与普通函数类似,有参数,也有输出。分为两种类型:单次调用型和聚集函数。前者能够针对每一行数据进行处理,后者则用于处理Group By这样的情况。

三、为什么用UDF

既然MySQL本身提供了大量的函数,并且也支持定义函数,为什么我们还需要UDF呢?这主要基于以下几点:

1、UDF的兼容性很好,这得益于MySQL的UDF基本上没有变动

2、比存储方法具有更高的执行效率,并支持聚集函数

3、相比修改代码增加函数,更加方便简单

当然UDF也是有缺点的,这是因为UDF也处于mysqld的内存空间中,不谨慎的内存使用很容易导致mysqld crash掉。

四、编写UDF的几个API接口

UDF的部分API如下:

name_init()

在执行SQL之前会被调用,主要做一些初始化的工作,比如分配后续用到的内存、初始化变量、检查参数是否合法等。

name_deinit()

在执行完SQL后调用,大多用于内存清理等工作。init和deinit这两个函数都是可选的

name()

UDF的主要处理函数,当为单次调用型时,可以处理每一行的数据;当为聚集函数时,则返回Group by后的聚集结果。

name_add()

在每个分组中每行调用

name_clear()

在每个分组之后调用

两种UDF类型的API调用图:51b830294edb2d3a93361bc4ce0600e1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值