### 16.8.1 联合存储引擎概述 当您使用标准存储引擎之一创建表时(例如`MyISAM`,`CSV`要么`InnoDB`),表由表定义和相关数据组成。当你创建一个`联邦`表,表定义相同,但数据的物理存储在远程服务器上处理。 一种`联邦`表由两个元素组成: - 一种*远程服务器*使用数据库表,该表又由表定义(存储在 MySQL 数据字典中)和关联的表组成。远程表的表类型可以是远程支持的任何类型`mysqld`服务器,包括`MyISAM`要么`InnoDB`. - 一种*本地服务器*使用数据库表,其中表定义与远程服务器上相应表的定义匹配。表定义存储在数据字典中。本地服务器上没有数据文件。相反,表定义包含一个指向远程表的连接字符串。 在执行查询和语句时`联邦的`在本地服务器上,通常会从本地数据文件插入、更新或删除信息的操作会被发送到远程服务器执行,在远程服务器上更新数据文件或从远程服务器返回匹配行。 a的基本结构`联邦的`表格设置如所示[图16.2,“联邦表结构”](federated-description.html#figure-se-federated-structure). [](<>) **图16.2联邦表结构** Content is described in the surrounding text. 当客户机发出引用`联邦的`表中,本地服务器(执行SQL语句的地方)和远程服务器(物理存储数据的地方)之间的信息流如下所示: 1. 存储引擎会查看`联邦的`表具有并构造了一个引用远程表的适当SQL语句。 2. 该语句使用MySQL客户端API发送到远程服务器。 3. 远程服务器处理该语句,本地服务器检索该语句生成的任何结果(受影响的行数或结果集)。 4. 如果语句生成一个结果集,则每个列都将转换为`联邦的`引擎期望并可以用于向发出原始语句的客户端显示结果。 本地服务器使用MySQL客户端C API函数与远程服务器通信。它调用[`mysql_real_query()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-real-query.html)发送声明。要读取结果集,它使用[`mysql_存储_结果()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-store-result.html)并使用[`mysql_fetch_row()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-fetch-row.html).