分库分表策略选择

分库分表概念

       顾名思义,即把原本存放在一个库中的数据分块存储到多个库中,把原本存放在一张表中的数据分块存放到多张表上。

分库分表的实施策略

   垂直切分

         将表按功能模块、关系密切程度进行划分,部署到不同的库中。如产品库productDB,订单库orderDB, 用户库userDB,日志库logDB等。

   水平切分

         当一个表中的数据量过大时,就需要将表中数据按照某种规则(userid区间划分或者散列),存储到不同库中的相同结构的表中。如userTable表中数据可以切分到不同数据库的多个结构相同的userTable0、userTable1、userTable2等表中。

分库分表的策略选择

       1)数据库中表太多(门票订单系统已有30个表)而造成海量数据,且各项业务逻辑划分清晰、低耦合,则首选垂直划分。

       2)数据库中表不多,但单个表中数据量很大或数据热度很高则需要考虑进行水平切分。

       3)多数情况下,为达到最佳效果,往往采取垂直切分和水平切分共同进行的方式。

水平切分方式和规则

          要想做到水平切分,在每一个表中都要有冗余字段作为切分依据和标识字段,通常选用userid作为区分字段。

         1)按区间划分,比如1~1000的对应到DB1 , 1001~2000的对应到DB2,以此类推。

                优点:可部分迁移。

                 缺点:数据分布不均(老用户活跃度肯定没有新用户高)。

          2)hash取余运算, 对userid进行hash运算,一般取512或1024,视具体数据量大小。比如userid%512, 结果为1的对应到DB1,结果为2的对应到DB2,以此类推。

                优点:数据分布均匀。

                缺点:数据迁移的时候麻烦,不能按照机器性能进行分摊数据。

         3)采用映射表进行映射的方式,存储到DB或者ES

              单独建立一个DB,用于映射userid到DB的映射关系。

               优点:灵活性强,一对一的关系

               缺点:多一次RPC查询。

           

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Mycat是一种服务器端的数据库中间件,它提供了分库的功能。在Mycat中,分库策略可以通过配置文件进行设置。常见的分库策略有垂直分库、水平分库、垂直分和水平分。垂直分库是指将不同的按照业务逻辑划分到不同的数据库中,每个数据库负责一部分的数据。水平分库是指将同一个的数据按照某种规则划分到不同的数据库中,每个数据库负责一部分数据。垂直分是指将同一个的不同列划分到不同的中,每个负责一部分列的数据。水平分是指将同一个的数据按照某种规则划分到不同的中,每个负责一部分数据。这些分库策略可以根据具体的业务需求进行选择和配置。\[1\] #### 引用[.reference_title] - *1* *2* [分库神器MyCat和ShardingSphere](https://blog.csdn.net/QQ727338622/article/details/127224609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MySQL使用MyCat实现分库](https://blog.csdn.net/JFENG14/article/details/128380336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值