文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式 Letter) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  FEDERATED 儲存引擎概觀

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() 一次擷取一列。