溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

為什么在MySQL中幾乎不使用分區(qū)表

發(fā)布時(shí)間:2021-07-16 09:19:04 來源:億速云 閱讀:266 作者:chen 欄目:數(shù)據(jù)庫

這篇文章主要介紹“為什么在MySQL中幾乎不使用分區(qū)表”,在日常操作中,相信很多人在為什么在MySQL中幾乎不使用分區(qū)表問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”為什么在MySQL中幾乎不使用分區(qū)表”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

在Oracle中,使用分區(qū)表是一種很自然的事情,數(shù)據(jù)庫容量基本都是500G起,大小在5T以上都是很常見的。

但是在MySQL的使用中,我們幾乎不使用分區(qū)表,今天有同學(xué)在群里一起溝通,我就按照我的理解做了梳理。整體來說從功能上來說,Oracle有的大部分功能在MySQL分區(qū)表中基本存在,包括一些分區(qū)的細(xì)粒度管理。

所以如果單純從功能入手,確實(shí)難以找到很直接的理由來拒絕分區(qū)表。

我覺得主要是使用模式的差異,我們不使用的主要原因是避免單庫存儲過大,而且分區(qū)表變更相對會比較麻煩,在MySQL側(cè),我們的目標(biāo)是讓數(shù)據(jù)庫更小巧輕量一些,可能更偏TP一些,我們目前是排除了分區(qū)表的設(shè)計(jì),而且也明確寫進(jìn)了開發(fā)規(guī)范,如果按照數(shù)據(jù)類型來說,狀態(tài)表,流水表和配置表,這三種類型中也就只有流水日志表的數(shù)據(jù)都是建議使用周期表的形式進(jìn)行存儲,方便隨時(shí)擴(kuò)展,表結(jié)構(gòu)變更也方便T+1的變更模式

在這個(gè)基礎(chǔ)上,可以把這個(gè)問題轉(zhuǎn)化為,是使用分區(qū)表還是單表來存儲數(shù)據(jù)?這個(gè)問題我們調(diào)研過,目前來看,查詢復(fù)雜度的一些變更業(yè)務(wù)基本都能夠接受,而且風(fēng)險(xiǎn)覆蓋度要小一些(程序側(cè)也不能完全保證SQL一定好使不走全表掃描)目前我們實(shí)現(xiàn)周期表(日表,月表,周表,年表,季表)中的日表和月表的自動擴(kuò)展,已經(jīng)接管了300多個(gè)周期表的自動管理。

此外,數(shù)據(jù)流轉(zhuǎn)體系中,分區(qū)表的模式對于數(shù)倉體系也不夠友好,如果ETL直接抽數(shù)據(jù),基本需要在過濾條件的部分做一些取舍,影響還是相對很大的。

問題1:為啥Oracle分區(qū)表用的很常見 MySQL卻不推薦呢 挺疑問的。

因?yàn)槭莾煞N不同的數(shù)據(jù)庫,拿MySQL當(dāng)Oracle用,會有很多不如意的地方。Oracle單庫過T很正常,TP+AP很強(qiáng),原生的HTAP的支持,MySQL的AP相對要弱很多,單庫過T是不建議,我們的容量規(guī)劃目前是按照300G的容量規(guī)格設(shè)計(jì)的,基本上從設(shè)計(jì)層面能夠做到冷熱數(shù)據(jù)分離和規(guī)避數(shù)據(jù)過度增長。

問題2:日表和月表什么關(guān)系呢?月表是日表的聯(lián)合查詢還是數(shù)據(jù)鏡像?

日表和月表目前沒有直接的關(guān)聯(lián),就是按照業(yè)務(wù)維度包括數(shù)據(jù)量進(jìn)行綜合評估選定的,如果有的業(yè)務(wù)數(shù)據(jù)量不大,范圍查詢多一些,就推薦月表,如果數(shù)據(jù)量抖動大,數(shù)據(jù)量大,而且還會有變更操作,一般建議是日表,我們?nèi)毡砗驮卤淼谋壤畈欢嗍?0:1

問題3:這些都是前期系統(tǒng)架構(gòu)設(shè)計(jì)時(shí)規(guī)劃好的?有沒有后期改造的案例?如何去推動研發(fā)難度會不會很大

這個(gè)我認(rèn)為不算前期規(guī)劃,算是迭代改進(jìn),我們提供的一個(gè)福利就是改造成日表后,日表的擴(kuò)展和數(shù)據(jù)清理都是我們來干了,業(yè)務(wù)很happy,而在以前,可能還會有手工維護(hù)Excel列表或者一些元數(shù)據(jù)配置的模式來記錄不同業(yè)務(wù)的表的擴(kuò)展情況,有種手工記賬的感覺,如果DBA或者業(yè)務(wù)同學(xué)忘記了,基本碰上就是一次數(shù)據(jù)故障。

所以我們寫了自動管理的服務(wù),包括單機(jī)和集群中間件的周期表管理,基本上我們就不用手工干預(yù)了。

對于業(yè)務(wù)來說很大的痛點(diǎn)就是表如何擴(kuò)展(有時(shí)候忘記了后果挺嚴(yán)重的),數(shù)據(jù)清理(如果不拆表,按照delete模式很痛苦)和表變更(T+1的模式對于業(yè)務(wù)來說是可用接受的,對于DBA完全可控)

小結(jié):

我們不使用分區(qū)表,一方面是業(yè)務(wù)所需,另一方面我們提供了周期表解決了業(yè)務(wù)痛點(diǎn),所以也算是一拍即合的一種策略。

到此,關(guān)于“為什么在MySQL中幾乎不使用分區(qū)表”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI