MySQL中針對不同的功能需求提供了不同的存儲引擎。所謂的存儲引擎也就是MySQL下特定接口的具體實現。
FEDERATED是其中一個專門針對遠程數據庫的實現。一般情況下在本地數據庫中建表會在數據庫目錄中生成相應的表定義文件,並同時生成相應的數據文件。
但通過FEDERATED引擎創建的表只是在本地有表定義文件,數據文件則存在於遠程數據庫中(這一點很重要)。
通過這個引擎可以實現類似Oracle 下DBLINK的遠程數據訪問功能。
使用show engines 命令查看數據庫是否已支持FEDERATED引擎:
Support 的值有以下幾個:
YES |
支持並開啟 |
DEFAULT |
支持並開啟 , 並且為默認引擎 |
NO |
不支持 |
DISABLED |
支持,但未開啟 |
可以看出MyISAM為當前默認的引擎。
使用FEDERATED建表語句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
創建成功后就可直接在本地查詢相應的遠程表了。
需要注意的幾點:
1. 本地的表結構必須與遠程的完全一樣。
2.遠程數據庫目前僅限MySQL
3.不支持事務
4.不支持表結構修改