做個(gè)簡(jiǎn)單的接口吧,好像不能直接用數(shù)據(jù)庫(kù)的自帶功能完成這個(gè)需求。

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)宣州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
寫(xiě)個(gè)簡(jiǎn)單的 注冊(cè)接口。
主要完成:
1. 用戶名檢測(cè)(判斷是否已經(jīng)存在用戶名)
2. 同時(shí)將用戶信息寫(xiě)入兩邊的表
3. 更新時(shí),同步更新2個(gè)表
4. 刪除同時(shí)刪除兩個(gè)表相應(yīng)記錄
5. 登錄檢測(cè)倒是用論壇各自的登錄就可以了.
這種架構(gòu)一般用在以下三類(lèi)場(chǎng)景
1. 備份多臺(tái) Server 的數(shù)據(jù)到一臺(tái)如果按照數(shù)據(jù)切分方向來(lái)講,那就是垂直切分。比如圖 2,業(yè)務(wù) A、B、C、D 是之前拆分好的業(yè)務(wù),現(xiàn)在需要把這些拆分好的業(yè)務(wù)匯總起來(lái)備份,那這種需求也很適用于多源復(fù)制架構(gòu)。實(shí)現(xiàn)方法我大概描述下:業(yè)務(wù) A、B、C、D 分別位于 4 臺(tái) Server,每臺(tái) Server 分別有一個(gè)數(shù)據(jù)庫(kù)來(lái)隔離前端的業(yè)務(wù)數(shù)據(jù),那這樣,在從庫(kù)就能把四臺(tái)業(yè)務(wù)的數(shù)據(jù)全部匯總起來(lái),而不需要做額外的操作。那沒(méi)有多源復(fù)制之前,要實(shí)現(xiàn)這類(lèi)需求,只能在匯總機(jī)器上搭建多個(gè) MySQL 實(shí)例,那這樣勢(shì)必會(huì)涉及到跨庫(kù)關(guān)聯(lián)的問(wèn)題,不但性能急劇下降,管理多個(gè)實(shí)例也沒(méi)有單臺(tái)來(lái)的容易。
2. 用來(lái)聚合前端多個(gè) Server 的分片數(shù)據(jù)。
同樣,按照數(shù)據(jù)切分方向來(lái)講,屬于水平切分。比如圖 3,按照年份拆分好的數(shù)據(jù),要做一個(gè)匯總數(shù)據(jù)展現(xiàn),那這種架構(gòu)也非常合適。實(shí)現(xiàn)方法稍微復(fù)雜些:比如所有 Server 共享同一數(shù)據(jù)庫(kù)和表,一般為了開(kāi)發(fā)極端透明,前端配置有分庫(kù)分表的中間件,比如愛(ài)可生的 DBLE。
3. 匯總并合并多個(gè) Server 的數(shù)據(jù)
第三類(lèi)和第一種場(chǎng)景類(lèi)似。不一樣的是不僅僅是數(shù)據(jù)需要匯總到目標(biāo)端,還得合并這些數(shù)據(jù),這就比第一種來(lái)的相對(duì)復(fù)雜些。比如圖 4,那這樣的需求,是不是也適合多源復(fù)制呢?答案是 YES。那具體怎么做呢?
sql
寫(xiě)法
:
insert
into
table
values
($values),($values)...($values);
使用以上(每次insert,插入10
values)將10w個(gè)int
values插入到test表中所需的耗時(shí),耗時(shí)53秒
real
0m53.871s
user
0m19.455s
sys
0m6.285s
這是整整近33倍的時(shí)間提升。這部分性能提升的原因在于以下幾點(diǎn):
1、每次和mysql
server建立連接都需要經(jīng)過(guò)各種初始化、權(quán)限認(rèn)證,語(yǔ)法解析等等多個(gè)步驟,需要消耗一定的資源。
2、更新一個(gè)values和更新n個(gè)values耗時(shí)基本一致。(下面對(duì)比一下insert
單values核insert
10
values的profile耗時(shí))
如果A、B庫(kù)在同一個(gè)mysql實(shí)例下(同一執(zhí)行程序下)可以用A.search,B.room去訪問(wèn):
update A.search s join B.room r on s.room_id=r.room_id
set s.is_online=r.is_online;
不過(guò)你這room如果只有幾條,直接把is_online對(duì)應(yīng)room_id的值寫(xiě)在sql里去更新A.search表不就好了
update A.search set is_online=(case when room_id=x1 then y1 when room_id=x2
then y2 when room_id=x3 then y3 ...... else yn end)
1 直接的話,試試federated能不能滿足。
在1服務(wù)器上開(kāi)啟federated引擎支持,創(chuàng)建一個(gè)federated引擎表bb2表connection到2服務(wù)器的b表
在aa的觸發(fā)器中更新bb2表。
不過(guò)federated有較多的限制,也缺乏錯(cuò)誤檢測(cè),整個(gè)過(guò)程的實(shí)現(xiàn)需要考慮周全。
2 間接的話,只能把a(bǔ)a表數(shù)據(jù)同步過(guò)去,在2服務(wù)器中使用修改后的aa觸發(fā)器更新bb表。
文章標(biāo)題:mysql怎么跨庫(kù)更新 sql跨表更新
本文路徑:http://chinadenli.net/article10/doojogo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、響應(yīng)式網(wǎng)站、企業(yè)網(wǎng)站制作、用戶體驗(yàn)、外貿(mào)網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)