MySQL 分表有什么壞處和改進(jìn)意見(jiàn)?
問(wèn)題描述
如果一張表數(shù)據(jù)很大,將分表拆分?jǐn)?shù)據(jù),或者預(yù)估數(shù)據(jù)量很大,會(huì)預(yù)先生成很多分表,那么,日后要改字段,豈不是每張表都是執(zhí)行同樣的 sql 改字段?
MySQL 還有分區(qū)的概念,就是解決一張表數(shù)據(jù)量過(guò)大的,為什么現(xiàn)實(shí)開(kāi)發(fā)中還是普遍使用分表的方式?
問(wèn)題解答
回答1:我認(rèn)為不管是數(shù)據(jù)庫(kù)還是編程的各種模式,并不是說(shuō)0耦合就是最好的。適當(dāng)?shù)娜哂嗫梢蕴岣咝阅埽涂勺x、維護(hù)性。
回答2:個(gè)人愚見(jiàn),分區(qū)是你指定規(guī)則進(jìn)行分表,比較死板。分表可以在業(yè)務(wù)邏輯層上進(jìn)行靈活的熱點(diǎn)數(shù)據(jù)分表。
回答3:一個(gè)表的容量還是有限的,數(shù)據(jù)越多插入性能就會(huì)受影響,每次插入都要去尋找對(duì)應(yīng)分區(qū),還有索引,都會(huì)大大降低插入速度。
至于分表的壞處,當(dāng)然就是你說(shuō)的如果需要修改字段,那就要每張表都去執(zhí)行,但這種可能性小,況且之前的數(shù)據(jù)都已成為歷史數(shù)據(jù)了,而如果你把數(shù)據(jù)都放一張表里,改表結(jié)構(gòu)不就把表鎖住了?從這個(gè)方面來(lái)看,分表還可以做到讀寫(xiě)分離。另一個(gè)壞處就是查詢需要union分表,需要用while去拼接sql,這是有點(diǎn)繁瑣的,恰恰分區(qū)不用拼接。。。
因此實(shí)際中,分表和分區(qū)常常是結(jié)合的,各自互補(bǔ)。
相關(guān)文章:
1. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境2. css3 - css怎么實(shí)現(xiàn)圖片環(huán)繞的效果3. android - 用textview顯示html時(shí)如何寫(xiě)imagegetter獲取網(wǎng)絡(luò)圖片4. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?5. css - 定位為absolute的父元素中的子元素 如何設(shè)置在父元素的下面?6. JavaScript事件7. javascript - jquery hide()方法無(wú)效8. 網(wǎng)頁(yè)爬蟲(chóng) - 用Python3的requests庫(kù)模擬登陸B(tài)ilibili總是提示驗(yàn)證碼錯(cuò)誤怎么辦?9. 注冊(cè)賬戶文字不能左右分離10. html - vue項(xiàng)目中用到了elementUI問(wèn)題
