相关文档 下载此手册
PDF (美国信纸) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  FEDERATED 存储引擎概述

18.8.1 FEDERATED 存储引擎概述

当您使用标准存储引擎(如 MyISAMCSVInnoDB)创建表时,该表由表定义和关联数据组成。当您创建 FEDERATED 表时,表定义保持一致,但数据的物理存储由远程服务器处理。

FEDERATED 表包含两个元素

  • 具有数据库表的远程服务器,该数据库表又包含表定义(存储在 MySQL 数据字典中)和关联表。远程表的表类型可以是远程 mysqld 服务器支持的任何类型,包括 MyISAMInnoDB

  • 具有数据库表的本地服务器,其中表定义与远程服务器上的对应表相同。表定义存储在数据字典中。本地服务器上没有数据文件。相反,表定义包含指向远程表的连接字符串。

当在本地服务器上对 FEDERATED 表执行查询和语句时,通常会从本地数据文件中插入、更新或删除信息的那些操作将改为发送到远程服务器执行,在那里它们更新远程服务器上的数据文件或从远程服务器返回匹配的行。

FEDERATED 表设置的基本结构如图 18.2,“FEDERATED 表结构”所示。

图 18.2 FEDERATED 表结构

Content is described in the surrounding text.

当客户端发出引用 FEDERATED 表的 SQL 语句时,本地服务器(执行 SQL 语句的地方)和远程服务器(物理存储数据的地方)之间的信息流如下

  1. 存储引擎遍历 FEDERATED 表具有的每个列,并构造一个引用远程表的适当 SQL 语句。

  2. 该语句使用 MySQL 客户端 API 发送到远程服务器。

  3. 远程服务器处理该语句,本地服务器检索该语句产生的任何结果(受影响的行数或结果集)。

  4. 如果语句产生一个结果集,则每个列将转换为 FEDERATED 引擎期望的内部存储引擎格式,以便能够用于向发出原始语句的客户端显示结果。

本地服务器使用 MySQL 客户端 C API 函数与远程服务器通信。它调用 mysql_real_query() 发送语句。要读取结果集,它使用 mysql_store_result() 并使用 mysql_fetch_row() 一次获取一行。