更新时间:2024-01-12 GMT+08:00
分享

函数/存储过程设计规范

  • 避免使用存储过程、触发器等实现业务逻辑,应该将这些逻辑都放到业务服务器上处理,避免对数据库产生逻辑依赖。
  • 业务的数据库升级脚本中,禁止使用存储过程实现升级逻辑。
  • 仅创建对固定入参有固定返回值的函数,函数必须设为IMMUTABLE和SHIPPABLE类型。

    目前数据库支持三种类型的函数,分别是IMMUTABLE, STABLE, VOLATILE。

    对于IMMUTABLE函数且设置为SHIPPABLE的函数,会允许函数在DN上执行。在大部分场景下,该函数的执行效率较高。

    但是此类函数要求对于固定的入参得到固定的返回值,来保证函数在DN上执行的正确性。如果函数的结果依赖对数据表的扫描结果(例如获取某个表中列的max值)或依赖时间(如获取当前时间),那么函数应设置为STABLE或者VOLATILE,且NOT SHIPPABLE,以保证函数执行的正确性。在此种场景下,所有DN上的数据将发送至某一个CN上进行计算,导致查询执行效率低下。

分享:

    相关文档

    相关产品