# 16.8.1 联合存储引擎概述
当您使用标准存储引擎之一创建表时(例如MyISAM
,CSV
要么InnoDB
),表由表定义和相关数据组成。当你创建一个联邦
表,表定义相同,但数据的物理存储在远程服务器上处理。
一种联邦
表由两个元素组成:
一种远程服务器使用数据库表,该表又由表定义(存储在 MySQL 数据字典中)和关联的表组成。远程表的表类型可以是远程支持的任何类型
mysqld
服务器,包括MyISAM
要么InnoDB
.一种本地服务器使用数据库表,其中表定义与远程服务器上相应表的定义匹配。表定义存储在数据字典中。本地服务器上没有数据文件。相反,表定义包含一个指向远程表的连接字符串。
在执行查询和语句时
联邦的
在本地服务器上,通常会从本地数据文件插入、更新或删除信息的操作会被发送到远程服务器执行,在远程服务器上更新数据文件或从远程服务器返回匹配行。a的基本结构
联邦的
表格设置如所示图16.2,“联邦表结构”.
图16.2联邦表结构

当客户机发出引用联邦的
表中,本地服务器(执行SQL语句的地方)和远程服务器(物理存储数据的地方)之间的信息流如下所示:
存储引擎会查看
联邦的
表具有并构造了一个引用远程表的适当SQL语句。该语句使用MySQL客户端API发送到远程服务器。
远程服务器处理该语句,本地服务器检索该语句生成的任何结果(受影响的行数或结果集)。
如果语句生成一个结果集,则每个列都将转换为
联邦的
引擎期望并可以用于向发出原始语句的客户端显示结果。本地服务器使用MySQL客户端C API函数与远程服务器通信。它调用
mysql_real_query()
(opens new window)发送声明。要读取结果集,它使用mysql_存储_结果()
(opens new window)并使用mysql_fetch_row()
(opens new window).