mysql 垂直分表 设计_水平分表和垂直分表
一、数据库瓶颈
数据库遇到瓶颈,主要源于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的查询以及拆分规则的简化。只要能满足需求,尽量选择简单易行的拆分规则。
多重随机标签
商丘市的辖区调整 贵州省粮食局直属事业单位有哪些 愚人节怎样捉弄网络好友 广西未来的发展机遇在哪里 网络开发是做什么的 ae47pr电影级调色插件looks 插件支持ae47pr cc 20142018 mac47win 请问大家觉得涿州这个城市怎么样啊 耗费了大量的人力和金钱修建长城的目的是什么 上海信息技术学校专业介绍 巴多还能抓吗 沁水县龙港镇秀平日化店怎么样 我是邯郸电信4m玩qq三国卡的不能玩有什么好办法 大众中国怎么样 肖生克的救赎影评 最好是自己写的 或者把网上的综合一下 不要全抄网上的 没看过 不知道怎么组织语言 谢了 咖啡易融国家认可吗 海南一亿科技有限公司怎么样 建设工程项目总承包和施工总承包的区别 在工业帮培训考上工程师有用吗 武汉哪个玩具店有卖mp34黄豹勇士 成都市双流区人才招聘会在哪呀 怎么样可以在网上发布公司信息 扎染的方法和步骤 在深圳龙岗哪里有滴滴网约车 tdlte dwpts占用ofdm符号数问题 品牌设计口号 山东临朐属于哪个城市 太原众智创新电子商务有限公司怎么样 考古学魔兽世界950怎么冲 小鲤鱼历险记什么时候出的 学术poster海报墙报壁报精美英文案例分享