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)