数据库分库分表

为什么要分库分表?
1、单点数据库性能瓶颈的问题 ① 资源面临不足(物理资源)② 性能的问题
2、解决连接数的问题 并发度有限

分库分表方案:
1、分库不分表: 网站存储容器不满足,表的查询效率还行。
2、分表不分库: 服务器存储容量足够,只是某些表中数据量比较大
3、分库分表:
① 数据量过大 某些表数据也比较多
② 数据量增长过快
③ 针对网站的可用性及安全性
4、分库分表的手段“:
① 垂直分表:根据网站之中的功能模块、业务关系划分。部署到不同的库中。(比如用户表和订单表放在不同的库中)
② 水平分表:当一个表中数据量过大,就可以将表的数据按照规则来划分,然后存储到多个结构相同的表中。(方法有根据数值范围和跟据数值取模)
数据范围区分(比如id1-10000在第一个库,10001-20000在第二个库)特点:
优点:1) 单表大小可控
2) 天然便于水平扩展,后期如果想对整个分片集群扩容时,只需添加节点即可,无需对其他分片的数据进行迁移。
3) 使用分片字段进行范围查找时,连续分片可快速定位分片进行快速查询,有效避免跨分片查询的问题。
缺点:热点数据成为性能瓶颈。连续分片可能存在数据热点,例如按时间字段分片,有些分片存储最近时间段内的数据,可能会被频繁的读写,而有些分片存储的历史数据,则很少被查询
取模区分(比如订单表,根据用户id%5 取余,分成5个表)特点:
优点: 数据分片相对比较均匀,不容易出现热点和并发访问的瓶颈
缺点: 1) 后期分片集群扩容时,需要迁移旧的数据(使用一致性hash算法能较好的避免这个问题)
2) 容易面临跨分片查询的复杂问题。比如上例中,如果频繁用到的查询条件中不带cusno时,将会导致无法定位数据库,从而需要同时向4个库发起查询,再在内存中合并数据,取最小集返回给应用,分库反而成为拖累。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值