RELOAD PLUGINS FROM SONAME 'plugin_library'
Перезагружает все плагины (UDF, ранкеры и т.д.) из указанной библиотеки. В некотором смысле процесс перезагрузки является транзакционным, обеспечивая:
- все плагины успешно обновлены до новых версий;
- обновление атомарно, то есть все плагины заменяются одновременно. Эта атомарность гарантирует, что запросы, использующие несколько функций из перезагруженной библиотеки, никогда не будут смешивать старые и новые версии.
Во время RELOAD набор плагинов гарантированно будет консистентным; они будут либо все старыми, либо все новыми.
Процесс перезагрузки также бесшовный, так как какая-то версия перезагруженного плагина всегда будет доступна для одновременных запросов без временных сбоев. Это улучшение по сравнению с использованием пары операторов DROP и CREATE для перезагрузки. При таком подходе существует короткий промежуток между DROP и последующим CREATE, в течение которого запросы технически ссылаются на неизвестный плагин и, следовательно, завершаются с ошибкой.
Если происходит какая-либо ошибка, RELOAD PLUGINS ничего не делает, сохраняет старые плагины и сообщает об ошибке.
В Windows перезапись или удаление DLL-библиотеки, которая в данный момент используется, может быть проблематичной. Однако вы всё ещё можете переименовать её, поместить новую версию под старым именем, и тогда RELOAD сработает. После успешной перезагрузки вы также сможете удалить переименованную старую библиотеку.
mysql> RELOAD PLUGINS FROM SONAME 'udfexample.dll';
Query OK, 0 rows affected (0.00 sec)