更新時(shí)間:2023-03-09 來(lái)源:黑馬程序員 瀏覽量:
分庫(kù)分表的優(yōu)點(diǎn)非常明顯,如:將大表拆分成小表,單表數(shù)據(jù)量控制在 5000 萬(wàn)行以內(nèi),使 MySQL 性能穩(wěn)定可控。將單張大表拆分成小表后,能水平擴(kuò)展,通過(guò)部署到多臺(tái)服務(wù)器,提升整個(gè)集群的 QPS、TPS、Latency 等數(shù)據(jù)庫(kù)服務(wù)指標(biāo)。
但是,此方案的缺點(diǎn)也非常明顯:
分表跨實(shí)例后,產(chǎn)生分布式事務(wù)管理難題,一旦數(shù)據(jù)庫(kù)服務(wù)器宕機(jī),有事務(wù)不一致風(fēng)險(xiǎn)。
分表后,對(duì) SQL 語(yǔ)句有一定限制,對(duì)業(yè)務(wù)方功能需求大打折扣。尤其對(duì)于實(shí)時(shí)報(bào)表統(tǒng)計(jì)類需求,限制非常之大。事實(shí)上,報(bào)表大多都是提供給高層領(lǐng)導(dǎo)使用的,其重要性不言而喻。
分表后,需要維護(hù)的對(duì)象呈指數(shù)增長(zhǎng)(MySQL實(shí)例數(shù)、需要執(zhí)行的 SQL 變更數(shù)量等)。