# ПЕРЕЗАГРУЗКА ПЛАГИНОВ

```sql
RELOAD PLUGINS FROM SONAME 'plugin_library'
```

Перезагружает все плагины (UDF, ранкеры и т.д.) из указанной библиотеки. В определённом смысле процесс перезагрузки является транзакционным, обеспечивая следующее:
1. все плагины успешно обновлены до своих новых версий;
2. обновление атомарно, то есть все плагины заменяются одновременно. Эта атомарность гарантирует, что запросы, использующие несколько функций из перезагруженной библиотеки, никогда не смешивают старые и новые версии.

Во время `RELOAD` набор плагинов гарантированно согласован; они либо все старые, либо все новые.

Процесс перезагрузки также бесшовный, так как какая-то версия перезагруженного плагина всегда будет доступна для параллельных запросов, без каких-либо временных сбоев. Это улучшение по сравнению с использованием последовательных операторов `DROP` и `CREATE` для перезагрузки. При таком подходе существует краткий промежуток между `DROP` и последующим `CREATE`, в течение которого запросы технически ссылаются на неизвестный плагин и потому будут завершаться с ошибкой.

Если возникнет какая-либо ошибка, `RELOAD PLUGINS` не делает ничего, сохраняет старые плагины и сообщает об ошибке.

В Windows перезаписывать или удалять DLL-библиотеку, которая в данный момент используется, может быть проблематично. Тем не менее, вы всё равно можете переименовать её, разместить новую версию под старым именем, а затем `RELOAD` сработает. После успешной перезагрузки вы также сможете удалить переименованную старую библиотеку.

```sql
mysql> RELOAD PLUGINS FROM SONAME 'udfexample.dll';
Query OK, 0 rows affected (0.00 sec)
```
<!-- proofread -->

