绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
水平分区
2023-04-20 15:36:16

保持数据表结构不变,通过某种策略存储数据分片,重要每一片数据分散到不同的表或者库中,达到了分布式的目的。水平拆分可以支撑非常大的数据量。

水平拆分是指数据表行的拆分,表的行数超过200万行时,就会变慢,这时可以把一张的表的数据拆成多张表来存储。比如可以将用户信息表拆分成多个用户信息表,这样就能避免单一表数据量过大对性能造成的影响。

水平拆分可以支持非常大的数据量。需要注意:分表仅仅是解决了单一数据过大的问题,但由于表的数据还是在同一台机器上,其实对提升MySQL并发性能没有什么意义,所以水平拆分好分库。

水平拆分能支持非常大的数据量存储,应用端改造也少,但分片事务难以解决,跨节点join性能较差,逻辑复杂。尽量不要对数据进行分片,因为拆分会带来逻辑、部署、运维的各种复杂度,一般的数据表在优化得当的情况下支撑千万以下的数据量是没太大问题的。如果实在要分片,尽量选择客户端分片架构,这样可以减少一次和中间件的网络IO。

常见数据库分片的两种方案:

(1)客户端代理:分片逻辑在应用端,封装在jar包中,通过修改或者封装JDBC层来实现。当当网的sharding-JDBC、阿里的TDDL是两种比较常见的实现。

(2)中间件代理:在应用和数据中间加了一个代理层。分片逻辑统一维护在中间件服务中。现在的mycat、360的Atlas、网易的DDB等都是这种架构的实现。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

数据库开发
创建时间:2020-06-17 14:33:07
数据库开发是数据库管理系统(DBMS)和数据库应用软件设计研发的总称,主要是数据运维、参与数据库生产环境的问题优化和解决等方面的事宜
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~