Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  FEDERATED Storage Engine Overview

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().