启嘟渡科技商贸有限公司
SEARCH

与我们合作

我们专注提供互联网一站式服务,助力企业品牌宣传多平台多途径导流量。
主营业务:网站建设、移动端微信小程序开发、营销推广、基础网络、品牌形象策划等

您也可通过下列途径与我们取得联系:

微 信: wxyunyingzhe

手 机: 15624122141

邮 箱:

mysql 垂直分表 设计_水平分表和垂直分表

更新时间:2024-12-23 08:01:25

一、数据库瓶颈

数据库遇到瓶颈,主要源于IO瓶颈和CPU瓶颈,这两种瓶颈最终会导致数据库活跃连接数增加,逼近甚至达到数据库可承载的阈值。这可能导致并发量、吞吐量下降,甚至系统崩溃。具体来说:

1、IO瓶颈:包括磁盘读IO瓶颈和网络IO瓶颈。磁盘读IO瓶颈发生在热点数据太多时,数据库缓存无法容纳,每次查询产生大量IO,降低查询速度;网络IO瓶颈则因请求数据过多,网络带宽不足。解决方案分别是分库和垂直分表。

2、CPU瓶颈:可能源于SQL问题或单表数据量过大。SQL问题包括join、group by、order by等操作或非索引字段查询,增加CPU运算;单表数据量太大,查询时扫描行数多,SQL效率低。解决方案是水平分表。

二、分库分表

1、水平分库:依据字段和策略(如hash、range)将一个库中的数据拆分至多个库,每个库结构相同,数据不交集,形成全量数据集合。适用于并发量上来的场景,通过增加库数量,缓解IO和CPU压力。

2、水平分表:依据字段和策略将一个表中的数据拆分至多个表,每个表结构相同,数据不交集,形成全量数据集合。适用于单表数据量过大,影响SQL效率和CPU负担的场景。

3、垂直分库:依据业务归属不同,将不同表拆分至不同库,每个库结构和数据均不相同,形成全量数据集合。适用于并发量大且可抽象出单独业务模块的场景。

4、垂直分表:依据字段活跃性,将表中的字段拆分至主表和扩展表,每个表结构不同,数据不完全交集,形成全量数据集合。适用于字段多、数据量小但单行存储空间大,导致查询效率低的场景。

三、分库分表工具

常用工具包括sharding-sphere、TDDL和Mycat。sharding-sphere前身是sharding-jdbc,TDDL是Taobao Distribute Data Layer,Mycat为中间件,选择工具时应考虑其利弊,并优先参考官网和社区信息。

四、分库分表步骤

评估当前容量和增长量,选择合适的分库或分表个数,选择均匀的key,设定分表规则(如hash或range),执行分表(一般采用双写),处理扩容问题,尽量减少数据移动。

五、分库分表问题与总结

分库分表需明确瓶颈,合理选择分库或分表方式,考虑均匀的key选择、非partition key的查询以及拆分规则的简化。只要能满足需求,尽量选择简单易行的拆分规则。

多重随机标签

猜你喜欢文章

QQ客服 电话咨询