MySQL中的FEDERATED引擎

2022-07-05 00:00:11 字數 1263 閱讀 5418

首先說明》

federated儲存引擎訪問在遠端資料庫的表中的資料,而不是本地的表。這個特性給某些開發應用帶來了便利,你可以直接在本地構建乙個federated表來連線遠端資料表,配置好了之後本地表的資料可以直接跟遠端資料表同步。實際上這個引擎裡面是不真實存放資料的,所需要的資料都是連線到其他mysql伺服器上。

使用操作》

首先修正mysql的my.ini檔案,開啟federated引擎

接著,在建表的時候,新增如下sql語句即可

engine=federated 和 connection='mysql://[username]:[password]@192.168.84.73:3306/kmsong/km_tbl_companycffsong';

操作其上步驟,新建出來的表就是鏈結到了192.168.84.73:3306/kmsong/km_tbl_companycffsong這個表,本身只是乙個空殼,只能進行資料的增刪改查操作,不能改變鏈結到的表的表結構,如果改變自身的表結構會出現意想不到的錯誤。

一些注意事項》

1. 對本地虛擬表的結構修改,並不會修改遠端表的結構 

2.truncate 命令,會清除遠端表資料 

3.  drop命令只會刪除虛擬表,並不會刪除遠端表

4.  不支援 alter table 命令 

目前使用federated 最大的缺點: 

1. select count(*), select * from limit m, n 等語句執行效率非常低,資料量較大時存在很嚴重的問題,但是按主鍵或索引列查詢,則很快,如以下查詢就非常慢(假設 id 為主索引) 

select id from db.tablea where id >100 limit 10 ;

而以下查詢就很快: 

select id from db.tablea where id >100 and id<150

2.  如果虛擬虛擬表中字段未建立索引,而實體表中為此字段建立了索引,此種情況下,效能也相當差。但是當給虛擬表建立索引後,效能恢復正常。

3. 類似 where name like "str%" limit 1 的查詢,即使在 name 列上建立了索引,也會導致查詢過慢,是因為

federated引擎會將所有滿足條件的記錄讀取到本,再進行 limit 處理。

這幾個問題已經嚴重影響了federated 在實際環境中的應用,所以這個引擎很冷門,不過在一些特定環境還是能用用的。

mysql中的編碼 mysql中的編碼

一 mysql中的編碼 mysql show variables like collation mysql show variables like character set 預設是latin1編碼,會導致中文亂碼。修改庫的編碼 mysql alter database db name charac...

mysql中 變數 mysql中的變數

toc 變數 mysql本質是一種程式語言,需要很多變數來儲存資料。mysql中很多的屬性控制都是通過mysql中固有的變數來實現的。系統變數 系統內部定義的變數,系統變數針對所有使用者 mysql客戶端 有效。檢視系統所有變數 show variables like pattern mysql允許...

mysql中的函式名 MySQL中的函式

一 數學函式 數學函式主要用於處理數字,包括整型 浮點數等。abs x 返回x的絕對值 select abs 1 返回1 ceil x ceiling x 返回大於或等於x的最小整數 select ceil 1.5 返回2 floor x 返回小於或等於x的最大整數 select floor 1.5...