MySQL 分表有什么壞處和改進(jìn)意見?
問題描述
如果一張表數(shù)據(jù)很大,將分表拆分?jǐn)?shù)據(jù),或者預(yù)估數(shù)據(jù)量很大,會(huì)預(yù)先生成很多分表,那么,日后要改字段,豈不是每張表都是執(zhí)行同樣的 sql 改字段?
MySQL 還有分區(qū)的概念,就是解決一張表數(shù)據(jù)量過大的,為什么現(xiàn)實(shí)開發(fā)中還是普遍使用分表的方式?
問題解答
回答1:我認(rèn)為不管是數(shù)據(jù)庫還是編程的各種模式,并不是說0耦合就是最好的。適當(dāng)?shù)娜哂嗫梢蕴岣咝阅?,和可讀、維護(hù)性。
回答2:個(gè)人愚見,分區(qū)是你指定規(guī)則進(jìn)行分表,比較死板。分表可以在業(yè)務(wù)邏輯層上進(jìn)行靈活的熱點(diǎn)數(shù)據(jù)分表。
回答3:一個(gè)表的容量還是有限的,數(shù)據(jù)越多插入性能就會(huì)受影響,每次插入都要去尋找對(duì)應(yīng)分區(qū),還有索引,都會(huì)大大降低插入速度。
至于分表的壞處,當(dāng)然就是你說的如果需要修改字段,那就要每張表都去執(zhí)行,但這種可能性小,況且之前的數(shù)據(jù)都已成為歷史數(shù)據(jù)了,而如果你把數(shù)據(jù)都放一張表里,改表結(jié)構(gòu)不就把表鎖住了?從這個(gè)方面來看,分表還可以做到讀寫分離。另一個(gè)壞處就是查詢需要union分表,需要用while去拼接sql,這是有點(diǎn)繁瑣的,恰恰分區(qū)不用拼接。。。
因此實(shí)際中,分表和分區(qū)常常是結(jié)合的,各自互補(bǔ)。
相關(guān)文章:
1. debian - docker依賴的aufs-tools源碼哪里可以找到?。?/a>2. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.3. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?4. docker-compose 為何找不到配置文件?5. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””6. angular.js - angular內(nèi)容過長展開收起效果7. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????8. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。9. macos - mac下docker如何設(shè)置代理10. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?

網(wǎng)公網(wǎng)安備