数据库分区分库分表其实就这么简单

随着业务数据量增加,单表性能下降,分库分表成为必要。本文讲解了分区表、垂直分表、垂直分库、水平分库和分表的概念与实践,强调了各种方法的优缺点,如垂直分表能减少IO竞争,水平分库解决单机性能瓶颈,但带来跨库事务和查询复杂性问题。数据分片规则包括Hash取模、数值Range和一致性Hash。面对分布式事务和跨节点查询,可以采取全局表、字段冗余和数据组装等策略。
摘要由CSDN通过智能技术生成

背景:随着业务发展,数据量越来越大,MySQL中单表数据量达到1000w时性能就变得非常差。分库分表技术应运而生。
这些技术看似很高深,其实不难,其核心就是对数据库数据进行划分,将数据放到不同的表、不同数据库中。具体如何划分则需要根据实际业务操作。


讲一讲分区表

分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个相同的索引,从存储引擎的角度来看,底层表和一个普通表没有任何不同,存储引擎也无须知道这是一个普通表还是一个分区表的一部分。
事实上,这个方案也不错,它对用户屏蔽了sharding的细节,即使查询条件没有sharding column,它也能正常工作(只是这时候性能一般)。
不过它的缺点很明显:很多的资源都受到单机的限制,例如连接数,网络吞吐等!虽然每个分区可以独立存储,但是分区表的总入口还是一个MySQL示例。从而导致它的并发能力非常一般,远远达不到互联网高并发的要求!


分库分表

分库分表是为了解决数据量过大而导致数据库性能下降的问题,一般而言当单表的数据量达到1000w行或100G以后,由于查询维度较多,即使添加从库和索引,很多操作性能性能仍然下降严重。

分库分表:

  • 垂直分库
  • 垂直
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值