首頁 資料庫 mysql教程 使用mysql federated引擎构建MySQL分布式数据库访问层_MySQL

使用mysql federated引擎构建MySQL分布式数据库访问层_MySQL

Jun 01, 2016 pm 01:30 PM
應用程式 資料庫存取 連接資料庫

bitsCN.com

使用mysql federated引擎构建MySQL分布式数据库访问层

 

本文所描述的 federated属于 MySQL的一种特殊引擎,利用它可将本地数据表映射至远程 MySQL 数据表,从而就可以解决应用程序中繁多的跨机器连接数据库问题,拓扑图如下:

使用mysql federated引擎构建MySQL分布式数据库访问层_MySQL

如此就可以构造出一个统一的数据访问入口,就大大提高了整个数据库系统的可维护性。 Federated引擎是基于表级别的,只能将本地数据表定义为 Federated 引擎并映射至远程实体表,无法实现基于库级别的整体映射。

 

在本文中,我们将启用Federated 引擎的数据库访问入口服务器称为本地数据库,而将本地数据表对应的远程数据表,称之为实体表。

 

本地数据库需要启用Federated 引擎支持,而远程数据表无须 Federated 引擎支持。 Federated 引擎表使用标准的 MySQL 客户端协议与远程数据库建立 TCP 连接。

 

创建Federated 表的过程:

 

 以root 登录远程 MySQL ,上创建合适的访问账号 grant all on DB1.* to 'federated'@'%' identified by 'federated'; flush privileges;

在远程MySQL 找到对应实体表的创建命令(如果是新表,请先建立好数据表,再执行此命令) 假设在远程mysql 上有库名 DB1, 表名 tag, 执行以下命令找到远程表的结构: show create table DB1.tag 输出: CREATE TABLE tag ( id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(128) NOT NULL, frequency int(10) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (id) ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

 

假设我们要将远程的DB1.tag 映射至本地 DB.TableA 表上。那么我们应该保持本地虚拟表与远程实体表结构一致(结构可以有所差异,但会造成使用,管理上的麻烦)。根据远程实体表的创建命令,创建本地虚拟表 ( 结构部分完全一样,创建表选项有所差异 ) :

 

登录本地Mysql 服务器,创建相应的数据库及表: create database DB; use DB; CREATE TABLE TableA ( id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(128) NOT NULL, frequency int(10) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (id) ) ENGINE=federated connection="mysql://federated:federated@127.0.0.1 :3306/DB1/tag";

 

这时,即建立好了federated 虚拟表,实际上本地 MySQL 只创建了表定义文件 , 而没有数据文件。我们对本地虚拟表的数据修改,均会发送到远程机器上执行。

 

本地虚拟表名与远程表名,可不相同。

 

经过测试,这个引擎的一些额外特点: 1. 本地虚拟表与远程实体表之间是 TCP 长连接,并且是多个客户端利用的。所以不用担心因频繁建立连接带来的网络开销。 2. 本虚拟表表与远程实体表之间的网络连接断开后,当对虚拟表发起查询时,它会尝试重新连接远程实体表,所以我们不用担心网络连接断开造成的永久中断问题。 3. 如果无时间未对本地虚拟表作任何操作,虚拟表与实体表之间的连接将在远程主机的 wait_timeout 秒后自动断开,当对虚拟表发起查询时,连接又会重新建立。

 

一些注意事项: 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

 

如果虚拟虚拟表中字段未建立索引,而实体表中为此字段建立了索引,此种情况下,性能也相当差。但是当给虚拟表建立索引后,性能恢复正常。

 

类似 where name like "str%" limit 1 的查询,即使在 name 列上创建了索引,也会导致查询过慢,是因为 federated引擎会将所有满足条件的记录读取到本,再进行 limit 处理。

 

这几个问题已经严重影响了federated 在实际环境中的应用。

bitsCN.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Windows 11中無法儲存變更照片應用程式錯誤 Windows 11中無法儲存變更照片應用程式錯誤 Mar 04, 2024 am 09:34 AM

如果您在Windows11中使用照片應用程式進行影像編輯時遇到無法儲存變更的錯誤,本文將為您提供解決方案。無法儲存變更。保存時發生錯誤。請稍後再試。通常會出現這種問題的原因包括權限設定不正確、檔案損壞或系統故障。因此,我們經過深入研究,整理出一些最有效的故障排除步驟,以幫助您解決此問題,並確保您可以繼續在Windows11裝置上無縫使用MicrosoftPhotos應用程式。修復Windows11中無法保存更改照片應用程式的錯誤許多用戶在不同的論壇上一直在談論MicrosoftPhotos應用程式錯

掌握在 iPhone 和 iPad 上使用「無邊記」應用程式的技巧 掌握在 iPhone 和 iPad 上使用「無邊記」應用程式的技巧 Nov 18, 2023 pm 01:45 PM

iPhone上的無邊記是什麼?與iOS17日記應用程式一樣,無邊記是一款具有大量創意潛力的生產力應用程式。這是一個將想法變為現實的好地方。您可以安排專案、集思廣益或建立情緒板,這樣您就不會沒有空間來表達自己的想法。該應用程式可讓您在無限畫布上的任何位置添加照片、影片、音訊、文件、PDF、網頁連結、貼紙等。 「無邊記」中的許多工具(如畫筆、形狀等)對於使用iWork應用程式(如Keynote講演或備忘錄)的任何人都很熟悉。與同事、隊友和小組專案成員進行即時協作也很容易,因為Freeform允許透過消

照片無法開啟此文件,因為格式不受支援或文件已損壞 照片無法開啟此文件,因為格式不受支援或文件已損壞 Feb 22, 2024 am 09:49 AM

在Windows系統中,照片應用程式是一個方便的方式來檢視和管理照片和影片。透過這個應用程序,用戶可以輕鬆存取他們的多媒體文件,而無需安裝額外的軟體。然而,有時用戶可能會碰到一些問題,例如在使用照片應用程式時遇到「無法開啟此文件,因為不支援該格式」的錯誤提示,或在嘗試開啟照片或影片時出現文件損壞的問題。這種情況可能會讓使用者感到困惑和不便,需要進行一些調查和修復來解決這些問題。當用戶嘗試在Photos應用程式上開啟照片或影片時,會看到以下錯誤。抱歉,照片無法開啟此文件,因為目前不支援該格式,或該文件

如何將Apple Vision Pro連接到PC 如何將Apple Vision Pro連接到PC Apr 08, 2024 pm 09:01 PM

AppleVisionPro頭戴式裝置本身與電腦不相容,因此您必須將其設定為連接到Windows電腦。自推出以來,AppleVisionPro一直備受追捧,擁有其尖端功能和廣泛的可操作性,很容易理解原因。雖然您可以對其進行一些調整以適應PC,並且其功能在很大程度上取決於AppleOS,因此其功能將受到限制。如何將AppleVisionPro連接到我的電腦? 1.驗證系統要求你需要最新版本的Windows11(不支援自訂電腦和Surface設備)支援64位元2GHZ或更快的快速處理器高效能GPU,最

如何解決應用程式啟動錯誤0xc000012d問題 如何解決應用程式啟動錯誤0xc000012d問題 Jan 02, 2024 pm 12:53 PM

當小夥伴的電腦缺少一定的檔案之後就會出現應用程式無法正常啟動0xc000012d的情況,其實只要重新下載檔案並安裝就可以很好的解決了喲。應用程式無法正常啟動0xc000012d:1、首先使用者需要下載「.netframework」。 2、然後找到下載地址並將其下載到自己的電腦。 3、然後在桌面雙擊開始運作。 4.安裝完成之後傳回先前錯誤的程式位置,再次開啟程式即可。

MS Paint在Windows 11中無法正常運作 MS Paint在Windows 11中無法正常運作 Mar 09, 2024 am 09:52 AM

MicrosoftPaint在Windows11/10中不起作用嗎?嗯,這似乎是一個常見的問題,我們有一些很好的解決方案來解決這個問題。用戶一直抱怨說,當試圖使用MSPaint時,無法工作或打開。應用程式中的捲軸不起作用,貼上圖示沒有顯示,崩潰,等等。幸運的是,我們收集了一些最有效的故障排除方法來幫助您解決MicrosoftPaint應用程式的問題。為什麼MicrosoftPaint不起作用? MSPaint無法在Windows11/10PC上運行的一些可能原因如下:安全標識符已損壞。掛起的系統

修復caa90019 Microsoft團隊錯誤 修復caa90019 Microsoft團隊錯誤 Feb 19, 2024 pm 02:30 PM

許多用戶一直在抱怨,每次嘗試使用MicrosoftTeams登入時都會遇到錯誤代碼caa90019。儘管這是一款方便的溝通應用程序,但這種錯誤卻很普遍。修正MicrosoftTeams錯誤:caa90019在這種情況下,系統顯示的錯誤訊息為:「抱歉,我們目前遇到問題。」我們已準備好終極解決方案清單,可協助您解決MicrosoftTeams錯誤caa90019。初步步驟以管理員身分執行清除MicrosoftTeams應用程式快取刪除settings.json檔案從憑證管理員中清除Microso

C#開發中如何使用多執行緒並發存取資料庫 C#開發中如何使用多執行緒並發存取資料庫 Oct 09, 2023 pm 11:29 PM

C#開發中如何使用多執行緒並發存取資料庫在C#開發中,多執行緒並發存取資料庫是一個常見的需求。使用多執行緒可以提高資料庫操作的效率,但同時也需要注意線程安全性和資料庫連線管理等問題。本文將介紹如何使用多執行緒在C#中並發存取資料庫,並提供具體的程式碼範例。建立資料庫連線在使用多執行緒並發存取資料庫之前,首先需要建立資料庫連線。通常情況下,我們會使用ADO.NET提供的Sql

See all articles