MySQL 分表有什么壞處和改進意見?
問題描述
如果一張表數(shù)據(jù)很大,將分表拆分數(shù)據(jù),或者預估數(shù)據(jù)量很大,會預先生成很多分表,那么,日后要改字段,豈不是每張表都是執(zhí)行同樣的 sql 改字段?
MySQL 還有分區(qū)的概念,就是解決一張表數(shù)據(jù)量過大的,為什么現(xiàn)實開發(fā)中還是普遍使用分表的方式?
問題解答
回答1:我認為不管是數(shù)據(jù)庫還是編程的各種模式,并不是說0耦合就是最好的。適當?shù)娜哂嗫梢蕴岣咝阅埽涂勺x、維護性。
回答2:個人愚見,分區(qū)是你指定規(guī)則進行分表,比較死板。分表可以在業(yè)務邏輯層上進行靈活的熱點數(shù)據(jù)分表。
回答3:一個表的容量還是有限的,數(shù)據(jù)越多插入性能就會受影響,每次插入都要去尋找對應分區(qū),還有索引,都會大大降低插入速度。
至于分表的壞處,當然就是你說的如果需要修改字段,那就要每張表都去執(zhí)行,但這種可能性小,況且之前的數(shù)據(jù)都已成為歷史數(shù)據(jù)了,而如果你把數(shù)據(jù)都放一張表里,改表結構不就把表鎖住了?從這個方面來看,分表還可以做到讀寫分離。另一個壞處就是查詢需要union分表,需要用while去拼接sql,這是有點繁瑣的,恰恰分區(qū)不用拼接。。。
因此實際中,分表和分區(qū)常常是結合的,各自互補。
相關文章:
1. Span標簽2. css - 求推薦適用于vue2的框架 像bootstrap這種類型的3. docker-machine添加一個已有的docker主機問題4. css - 關于div自適應問題,大家看圖吧,說不清5. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””6. SessionNotFoundException:會話ID為null。調(diào)用quit()后使用WebDriver嗎?(硒)7. android新手一枚,android使用httclient獲取服務器端數(shù)據(jù)失敗,但是用java工程運行就可以成功獲取。8. angular.js使用$resource服務把數(shù)據(jù)存入mongodb的問題。9. java - Collections類里的swap函數(shù),源碼為什么要新定義一個final的List型變量l指向傳入的list?10. python - django如何每次調(diào)用標簽的時候都取隨機數(shù)據(jù)
