首页 > 数据库技术 > 详细

工作笔记----数据库分表

时间:2018-08-02 18:54:10      阅读:166      评论:0      收藏:0      [点我收藏+]
  1. 背景
    用于存储用户签到数据表中的数据量超过1500万条,在进行查询时相对缓慢决定对其进行分表。
  2. 步骤

    a. 分析业务场景
    该表的使用者为签到用户和运营人员。
    签到用户进行签到时在表中记录的相关信息:uid、时间、ip等。签到用户侧对数据库使用的基本特点是:单条记录写入,访问量大,服务要求高可用。
    运营人员在前端通过uid查询用户的签到信息,业务场景如:用户投诉某天的签到没有统计。运营人员侧需求的基本特点是:大量的批量分页查询需求,或许需要增加多种查询方式。

    b. 明确属性查询范围
    该表的属性查询内容主要为uid,即运营人员查询用户的uid。

    c. 方案设计:
    采用水平分表的方式,按照时间或uid进行分表。
    按照时间:比如半年
    优势:1.扩容简单,只需按照时间增加表即可;2. 查询的数据为近期数据,只需在一个表中按照近期时间查询即可;3.切分策略简单;4.需要修改部分写入和查询的代码:写入操作需要按照时间更新,查询操作需要根据查询数据量进行多表查询。
    劣势:1.请求量不均,总是在新表写入数据;2.当需要查询用户所有签到数据时需要访问所有表;3.数据量不均,新增的表数据量会非常少。

    按照uid:
    哈希法
    优势:1. 数据量均衡;2.请求量均衡。
    劣势:1.扩容麻烦,若增加新表则需重新哈希,可能会导致数据迁移;2. 写入操作需要更新按照uid哈希结果进行写入,查询操作需要按照uid哈希结果进行查询。若增加新表则需修改代码。
    范围法
    优势:1.策略简单;2.扩容简单。
    劣势:1.数据量不均;2.

    最终结果:

    d. 执行方案

工作笔记----数据库分表

原文:https://www.cnblogs.com/tf-Y/p/9408536.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!