什么是插件以及它在 mysql 中是如何工作的?

Vip*_*ain 5 mysql mariadb

我在MySql官方网站(https://dev.mysql.com/doc/refman/5.1/en/partitioning.html)探索分区。在第一页,我发现plugins.

mysql> show plugins;
+----------------------------+----------+--------------------+---------+---------+
| Name                       | Status   | Type               | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL    | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
+----------------------------+----------+--------------------+---------+---------+
42 rows in set (0.05 sec)
Run Code Online (Sandbox Code Playgroud)

在我心中有一些问题

  1. 什么是plugins
  2. 工作怎么样?
  3. 有多少插件可用MySql
  4. 我可以添加其他plugins吗?
  5. 如果我可以添加那么如何添加?

Vip*_*ain 3

经过对About Plugin的分析,我发现了更多关于它的东西。我深入地解释一下。

什么是插件以及它是如何工作的?

MySQL 支持插件 API,可以创建服务器组件。插件可以在服务器启动时加载,也可以在运行时加载和卸载,而无需重新启动服务器。该 API 是通用的,没有指定插件可以做什么。该接口支持的组件包括但不限于存储引擎、全文解析器插件和服务器扩展。

例如,全文解析器插件可用于替换或增强内置全文解析器。插件可以使用与内置解析器不同的规则将文本解析为单词。如果您需要解析具有与内置解析器预期特征不同的特征的文本,这会很有用。

该插件接口比旧的用户​​定义函数 (UDF) 接口更通用。

MySql 有多少可用的插件?(插件类型)

插件 API 允许创建实现多种功能的插件:

  • 存储引擎
  • 全文解析器
  • 守护进程
  • INFORMATION_SCHEMA 表
  • 半同步复制
  • 审计
  • 验证
  • 密码验证和强度检查
  • 协议追踪
  • 查询重写

我可以添加其他插件吗?/ 如果可以添加那么如何添加?

使用 INSTALL PLUGIN 语句安装的插件:

位于插件库文件中的插件可以在运行时使用 INSTALL PLUGIN 语句加载。该语句还将插件注册到 mysql.plugin 表中,以使服务器在后续重新启动时加载它。因此,INSTALL PLUGIN 需要 mysql.plugin 表的 INSERT 权限。

mysql> INSTALL PLUGIN myplugin SONAME 'somepluglib.so';
Run Code Online (Sandbox Code Playgroud)

卸载插件

在运行时,UNINSTALL PLUGIN 语句会禁用并卸载服务器已知的插件。该语句卸载插件并将其从 mysql.plugin 表中删除(如果它已在那里注册)。因此,UNINSTALL PLUGIN 语句需要 mysql.plugin 表的 DELETE 权限。当插件不再在表中注册时,服务器将不会在后续重新启动时自动加载该插件。