# 16.8.1 联合存储引擎概述

当您使用标准存储引擎之一创建表时(例如MyISAM,CSV要么InnoDB),表由表定义和相关数据组成。当你创建一个联邦表,表定义相同,但数据的物理存储在远程服务器上处理。

一种联邦表由两个元素组成:

  • 一种远程服务器使用数据库表,该表又由表定义(存储在 MySQL 数据字典中)和关联的表组成。远程表的表类型可以是远程支持的任何类型mysqld服务器,包括MyISAM要么InnoDB.

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

    在执行查询和语句时联邦的在本地服务器上,通常会从本地数据文件插入、更新或删除信息的操作会被发送到远程服务器执行,在远程服务器上更新数据文件或从远程服务器返回匹配行。

    a的基本结构联邦的表格设置如所示图16.2,“联邦表结构”.

图16.2联邦表结构

Content is described in the surrounding text.

当客户机发出引用联邦的表中,本地服务器(执行SQL语句的地方)和远程服务器(物理存储数据的地方)之间的信息流如下所示:

  1. 存储引擎会查看联邦的表具有并构造了一个引用远程表的适当SQL语句。

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

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

  4. 如果语句生成一个结果集,则每个列都将转换为联邦的引擎期望并可以用于向发出原始语句的客户端显示结果。

    本地服务器使用MySQL客户端C API函数与远程服务器通信。它调用mysql_real_query() (opens new window)发送声明。要读取结果集,它使用mysql_存储_结果() (opens new window)并使用mysql_fetch_row() (opens new window).