的时候应该注意以下几点联邦
存储引擎:
联邦
表可以复制到其他副本,但必须确保副本服务器能够使用在连接
对象中的行mysql.servers
表)连接到远程服务器。
的特性联邦
存储引擎支持和不支持:
远程服务器必须是MySQL服务器。
a的远程表
联邦
表指向必须方法访问表之前存在联邦
表格这是有可能的
联邦
表指向另一个表,但必须注意不要创建循环。一个
联邦
Table不支持通常意义上的索引;因为对表数据的访问是远程处理的,所以实际上是远程表使用了索引。这意味着,对于不能使用任何索引因而需要全表扫描的查询,服务器将从远程表获取所有行并在本地筛选它们。不管发生什么在哪里
或限制
与this连用选择
声明;这些子句在本地应用于返回的行。因此,未能使用索引的查询可能导致性能差和网络过载。此外,由于返回的行必须存储在内存中,这样的查询还可能导致本地服务器交换,甚至挂起。
创建
联邦
表中自定义的索引等价MyISAM
或者可能不支持其他表。例如,创建一个联邦
如果表在任意上使用索引前缀,则表失败VARCHAR
,文本
或团
列。以下定义使用MyISAM
是有效的:创建表' t1 ' (' a ' varchar(100),唯一键(' a ' (30))) = myisam;
此示例中的密钥前缀与
联邦
引擎,等价语句失败:创建表' t1 ' (' a ' varchar(100),唯一键(' a '(30))) =联邦连接=' mysql://127.0.0.1:3306/ test / t1 ';
如果可能,在远程服务器和本地服务器上创建表时,应该尝试分离列和索引定义,以避免这些索引问题。
的
联邦
存储引擎支持选择
,插入
,更新
,删除
,截断表
、索引。它不支持ALTER TABLE
,或直接影响表结构的任何数据定义语言语句,而不是删除表
.当前实现不使用预处理语句。联邦
接受插入……重复密钥更新
语句,但如果发生重复键违反,则语句失败并出现错误。不支持事务。
联邦
执行大容量插入处理,以便以批处理的方式将多个行发送到远程表,从而提高性能。另外,如果远程表是事务性的,它允许远程存储引擎在发生错误时正确地执行语句回滚。该功能有以下局限性:插入的大小不能超过服务器之间的最大包大小。如果插入超过这个大小,它就会被分解成多个包,就会出现回滚问题。
不发生大容量插入处理
插入……重复密钥更新
.
没有办法
联邦
引擎以了解远程表是否已更改。这样做的原因是,这个表必须像一个数据文件一样工作,它永远不会被数据库系统以外的任何东西写入。如果远程数据库有任何更改,则可能破坏本地表中数据的完整性。当使用
连接
字符串,不能在密码中使用“@”字符。方法可以绕过此限制创建服务器
语句来创建服务器连接。任何
删除表
针对联邦
表只删除本地表,而不删除远程表。不支持用户定义分区
联邦
表。