MySQL 分表有什么壞處和改進意見?
問題描述
如果一張表數(shù)據(jù)很大,將分表拆分?jǐn)?shù)據(jù),或者預(yù)估數(shù)據(jù)量很大,會預(yù)先生成很多分表,那么,日后要改字段,豈不是每張表都是執(zhí)行同樣的 sql 改字段?
MySQL 還有分區(qū)的概念,就是解決一張表數(shù)據(jù)量過大的,為什么現(xiàn)實開發(fā)中還是普遍使用分表的方式?
問題解答
回答1:我認(rèn)為不管是數(shù)據(jù)庫還是編程的各種模式,并不是說0耦合就是最好的。適當(dāng)?shù)娜哂嗫梢蕴岣咝阅埽涂勺x、維護性。
回答2:個人愚見,分區(qū)是你指定規(guī)則進行分表,比較死板。分表可以在業(yè)務(wù)邏輯層上進行靈活的熱點數(shù)據(jù)分表。
回答3:一個表的容量還是有限的,數(shù)據(jù)越多插入性能就會受影響,每次插入都要去尋找對應(yīng)分區(qū),還有索引,都會大大降低插入速度。
至于分表的壞處,當(dāng)然就是你說的如果需要修改字段,那就要每張表都去執(zhí)行,但這種可能性小,況且之前的數(shù)據(jù)都已成為歷史數(shù)據(jù)了,而如果你把數(shù)據(jù)都放一張表里,改表結(jié)構(gòu)不就把表鎖住了?從這個方面來看,分表還可以做到讀寫分離。另一個壞處就是查詢需要union分表,需要用while去拼接sql,這是有點繁瑣的,恰恰分區(qū)不用拼接。。。
因此實際中,分表和分區(qū)常常是結(jié)合的,各自互補。
相關(guān)文章:
1. 關(guān)于nginx location配置的問題,root到底是什么2. docker鏡像push報錯3. angular.js - angular內(nèi)容過長展開收起效果4. 關(guān)于docker下的nginx壓力測試5. angular.js - angularjs的自定義過濾器如何給文字加顏色?6. python 怎樣用pickle保存類的實例?7. 大家好,請問在python腳本中怎么用virtualenv激活指定的環(huán)境?8. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機器學(xué)習(xí)這塊?9. 并發(fā)模型 - python將進程池放在裝飾器里為什么不生效也沒報錯10. python2安裝失敗
