日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
幾千萬記錄,數(shù)據(jù)庫表結(jié)構(gòu)如何平滑變更?

繼續(xù)回答知識(shí)星球水友提問。

創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元金水做網(wǎng)站,已為上家服務(wù),為金水各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

問題域:數(shù)據(jù)量大、并發(fā)量高場(chǎng)景,如何在流量低峰期,平滑實(shí)施表結(jié)構(gòu)變更?

畫外音,一般來說,是指增加表的屬性,因?yàn)椋?/p>

  • 如果是減column,升級(jí)程序不使用即可;
  • 如果是修改column,程序兼容性容易出問題;

首先,一起看下有哪些常見方案。

(1) 方案一:在線修改表結(jié)構(gòu)。

畫外音:alter table add column

數(shù)據(jù)量大的情況下,鎖表時(shí)間會(huì)較長(zhǎng),造成拒絕服務(wù),一般不可行。

(2) 方案二:通過增加表的方式擴(kuò)展屬性,通過外鍵join來查詢。

舉個(gè)例子,對(duì):

 
 
 
 
  1. t_user(uid, c1, c2, c3) 

想要擴(kuò)展屬性,可以通過增加一個(gè)表實(shí)現(xiàn):

 
 
 
 
  1. t_user_ex(uid, c4, c5, c6) 

數(shù)據(jù)量大的情況下,join性能較差,一般不可行。

(3) 方案三,通過增加表的方式擴(kuò)展,通過視圖來屏蔽底層復(fù)雜性。

同上,視圖效率較低,一般不使用視圖。

畫外音:至少58到家禁止使用視圖。

(4) 方案四,揍產(chǎn)品經(jīng)理,阻止她修改需求。...

(5) 方案五,提前預(yù)留一些reserved字段,加列可復(fù)用這些字段。

這個(gè)方案可行,但如果預(yù)留過多,會(huì)造成空間浪費(fèi)。

(6) 方案六,pt-online-schema-change

對(duì)于MySQL而言,這是目前比較成熟的方案,被廣大公司所使用。

畫外音:我呆過的互聯(lián)網(wǎng)公司,數(shù)據(jù)庫均使用MySQL。

下面仍以用戶表擴(kuò)展為例,說下這個(gè)工具內(nèi)部的原理與步驟。

假設(shè):

 
 
 
 
  1. user(uid, name, passwd) 

要擴(kuò)展到:

 
 
 
 
  1. user(uid, name, passwd, age, sex) 

第一步,先創(chuàng)建一個(gè)擴(kuò)充字段后的新表:

 
 
 
 
  1. user_new(uid, name, passwd, age, sex) 

畫外音:就是被擴(kuò)展后的表。

第二步,在原表user上創(chuàng)建三個(gè)觸發(fā)器,對(duì)原表user進(jìn)行的所有insert/delete/update操作,都會(huì)對(duì)新表user_new進(jìn)行相同的操作;

第三步,分批將原表user中的數(shù)據(jù)insert到新表user_new,直至數(shù)據(jù)遷移完成;

第四步,刪掉觸發(fā)器,把原表移走(默認(rèn)是drop掉);

第五步,把新表user_new重命名(rename)成原表user;

擴(kuò)充字段完成,整個(gè)過程不需要鎖表,可以持續(xù)對(duì)外提供服務(wù)。

操作過程中需要注意:

  • 變更過程中,最重要的是沖突的處理,一條原則,以觸發(fā)器的新數(shù)據(jù)為準(zhǔn),這就要求被遷移的表必須有主鍵(這個(gè)要求基本都滿足);
  • 變更過程中,寫操作需要建立觸發(fā)器,所以如果原表已經(jīng)有很多觸發(fā)器,方案就不行(互聯(lián)網(wǎng)大數(shù)據(jù)高并發(fā)的在線業(yè)務(wù),一般都禁止使用觸發(fā)器);
  • 觸發(fā)器的建立,會(huì)影響原表的性能,所以這個(gè)操作必須在流量低峰期進(jìn)行;

pt-online-schema-change是DBA必備的利器,比較成熟,在互聯(lián)網(wǎng)公司使用廣泛,要了解更詳細(xì)的細(xì)節(jié),亦可以Google一下。

任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓。

【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文


新聞名稱:幾千萬記錄,數(shù)據(jù)庫表結(jié)構(gòu)如何平滑變更?
分享路徑:http://www.5511xx.com/article/cdoshis.html