重新加载插件

RELOAD PLUGINS FROM SONAME 'plugin_library'

从给定的库重新加载所有插件(UDF、排序器等)。从某种意义上说,重新加载过程是事务性的,确保:

  1. 所有插件都成功更新到它们的新版本;
  2. 更新是原子的,意味着所有插件同时被替换。此原子性确保使用重新加载库中多个函数的查询永远不会混用旧版本和新版本。

RELOAD 期间,插件集合保证是一致的;它们要么全部是旧的,要么全部是新的。

重新加载过程也是无缝的,因为某个版本的重新加载插件将始终可用于并发查询,没有任何临时中断。这比使用一对 DROPCREATE 语句重新加载要好得多。使用后者,在 DROP 和随后的 CREATE 之间存在一个短暂的窗口期,在此期间查询技术上引用的是未知插件,因此会失败。

如果发生任何失败,RELOAD PLUGINS 不执行任何操作,保留旧插件,并报告错误。

在 Windows 上,覆盖或删除当前正在使用的 DLL 库可能会有问题。但是,您仍然可以重命名它,将新版本放在旧名称下,然后 RELOAD 将起作用。成功重新加载后,您还可以删除重命名的旧库。

mysql> RELOAD PLUGINS FROM SONAME 'udfexample.dll';
Query OK, 0 rows affected (0.00 sec)
Last modified: August 28, 2025