MySQL 本机驱动插件 API

目录

MySQL 本机驱动插件 API 是 MySQL 本机驱动程序,或 mysqlnd 的一项功能。 Mysqlnd 插件在 PHP 应用程序和 MySQL 服务器之间的层中运行。这与 MySQL Proxy 相似。MySQL Proxy 在任何 MySQL 客户端应用程序(例如 PHP 应用程序)和 MySQL 服务器之间的一层上运行。 Mysqlnd 插件可以执行典型的 MySQL Proxy 任务,例如负载平衡、监控和性能优化。由于架构和位置不同,mysqlnd 插件不具有 MySQL Proxy 的一些缺点。例如,使用插件,没有单点故障,没有专用的代理服务器要部署,也不需要学习新的编程语言(Lua)。

可以将 mysqlnd 插件视为 mysqlnd 的扩展。插件可以拦截大多数 mysqlnd 函数。 mysqlnd 函数由 PHP MySQL 扩展调用,例如 ext/mysqlext/mysqliPDO_MYSQL。因此,mysqlnd 插件可以拦截来自客户端应用程序对这些扩展的所有调用。

也可以拦截或替换内部 mysqlnd 函数调用。对操作 mysqlnd 内部函数表没有限制。可以设置使其能够在使用 mysqlnd 的扩展调用某些 mysqlnd 函数时,将调用定向到 mysqlnd 插件中的相应函数。能够以这种方式操作 mysqlnd 内部函数表,可以为插件提供最大的灵活性。

Mysqlnd 插件实际上是用 C 编写的 PHP 扩展,它们使用 mysqlnd 插件 API(它内置在 MySQL 本机驱动程序 mysqlnd 中)。插件可以对 PHP 应用程序完全透明。不需要进行任何应用程序更改,因为插件在不同的层上运行。可以将 mysqlnd 插件视为在 mysqlnd 下方的一层运行。

以下列表代表了 mysqlnd 插件的一些可能的应用。

  • 负载平衡

    • 读/写分离。一个例子是 PECL/mysqlnd_ms(主从)扩展。此扩展为复制设置拆分读/写查询。

    • 故障转移

    • 循环、负载最低

  • 监控

    • 查询日志记录

    • 查询分析

    • 查询审计。一个例子是 PECL/mysqlnd_sip(SQL 注入保护)扩展。此扩展检查查询,只执行根据规则集允许的查询。

  • 性能

    • 缓存。一个例子是 PECL/mysqlnd_qc(查询缓存)扩展。

    • 节流

    • 分片。一个例子是 PECL/mysqlnd_mc(多连接)扩展。此扩展将尝试将 SELECT 语句拆分为 n 部分,使用 SELECT ... LIMIT part_1、SELECT LIMIT part_n。它将查询发送到不同的 MySQL 服务器,并在客户端合并结果。

可用的 MySQL 本机驱动程序插件

已经提供了一些 mysqlnd 插件。这些包括

  • PECL/mysqlnd_mc - 多连接插件。

  • PECL/mysqlnd_ms - 主从插件。

  • PECL/mysqlnd_qc - 查询缓存插件。

  • PECL/mysqlnd_pscache - 预准备语句句柄缓存插件。

  • PECL/mysqlnd_sip - SQL 注入保护插件。

  • PECL/mysqlnd_uh - 用户处理程序插件。

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top