百亿级数据分表后怎么分页查呢?

2023-11-05

当业务规模达到一定规模之后,像淘宝日订单量在5000万单以上,美团3000万单以上。数据库面对海量的数据压力,分库分表就是必须进行的操作了。而分库分表之后一些常规的查询可能都会产生问题,最常见的就是比如分页查询的问题。一般我们把分表的字段称作shardingkey,比如订单表按照用户ID作为shardingkey,那么如果查询条件中不带用户ID查询怎么做分页?又比如更多的多维度的查询都没有shardingkey又怎么查询?

唯一主键

通常我们数据库的主键都是自增的,那么分表之后主键冲突的问题就是一个无法避免的问题,最简单的办法就是以一个唯一的业务字段作为唯一的主键,比如订单表的订单号肯定是全局唯一的。

常见的分布式生成唯一ID的方式很多,最常见的雪花算法Snowflake、滴滴Tinyid、美团Leaf。以雪花算法举例来说,一毫秒可以生成4194304多个ID。

第一位不使用,默认都是0,41位时间戳精确到毫秒,可以容纳69年的时间,10位工作机器ID高5位是数据中心ID,低5位是节点ID,12位序列号每个节点每毫秒累加,累计可以达到2^12 4096个ID。

分表

第一步,分表后要怎么保证订单号的唯一搞定了,现在考虑下分表的问题。首先根据自身的业务量和增量来考虑分表的大小。

举个例子,现在我们日单量是10万单&

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百亿级数据分表后怎么分页查呢? 的相关文章

随机推荐

  • IDEA 使用技巧

    1 idea展开折叠类中所有方法 展开 ctrl shift 折叠 ctrl shift 2 Idea中设置注释位置 自动缩进到合适位置
  • 【PID控制算法】

    PID控制小解 比例环节 P 成比例的反映偏差信号 偏差一旦产生 控制器立即产生控制作用 较小误差 积分环节 I 主要用于消除静态误差 提高系统得无差度 积分作用的强弱取决于积分时间常数 Ti Ti越 大 积分作用越弱 反之越强 微分环节
  • 如何改进研发项目文档内容质量?

    书接上回 研发项目文档重要吗 个人以为 改进研发项目文档内容质量 需要深入研发流程 梳理研发流程中的信息需求和依赖关系 完善相关的内容规范 模板 和评审规范 从系统上保障研发文档的质量 所以这段时间 协调痛点场景作为改进试点 参与到研发设计
  • 从控制理论的根轨迹法和稳定性分析谈到舵机PD控制代码实现

    在上一次谈到基于MPU6050的基于一阶互补滤波算法实现后 本来想接着就自适应一阶互补滤波和卡尔曼滤波再写一篇的 但是卡尔曼滤波算法我自己写出来并进行姿态解算后发现效果不很好 才疏学浅 等我调好了再写吧 昨天花了半下午做了一个基于MPU60
  • Visual Studio 2017 设置透明背景图

    一 前言 给大家分享一下 如何为VS2017设置透明背景图 下面是一张设置前和设置后的图片 设置前 设置后 二 设置背景图片的扩展程序 我们打开VS的扩展安装界面 工具 gt 扩展和更新 gt 联机 输入 Background 可以看到有两
  • Mysql偶尔连接失败的问题

    在项目中 偶尔会出现获取jdbc连接失败的报错 其中有一种因为连接失效的报错 The last packet successfully received from the server was 1 312 227 milliseconds
  • 时序预测:从两篇高影响力的论文谈起

    未来可以预测吗 本文从两篇高影响力的时序预测文章谈起 其中一篇是18年放在arXiv上的文章 文中总结性地提出了时序卷积网络 TCN Temporal Convolutional Network 短短两三年引用数已经破千 TCN作为一种基准
  • java常用集合之Map

    目录 Map集合基本内容 特点 扩容 遍历 Map集合实现 1 HashMap 基本原理 Table数组中的的Node 2 HashTable 3 ConcurrentHashMap 4 TreeMap 5 LinkedHashMap Ma
  • 关于启动fabric网络错误:cryptogen tool not found. exiting

    在启动fabric中first network网络时 需要执行一个自动化脚本 byfn sh m generate 该脚本需要自动生成相关证书信息 fabric官方提供了两款工具 configtxgen cryptogen 在脚本执行中会从
  • JUnit5学习之六:参数化测试(Parameterized Tests)基础

    项目主页 https github com zq2599 blog demos 该项目在GitHub上的主页 git仓库地址 https https github com zq2599 blog demos git 该项目源码的仓库地址 h
  • 断言(assert)的用法

    我一直以为 assert 仅仅是个报错函数 事实上 它居然是个宏 并且作用并非 报错 在经过对其进行一定了解之后 对其作用及用法有了一定的了解 assert 的用法像是一种 契约式编程 在我的理解中 其表达的意思就是 程序在我的假设条件下
  • MySQL8.0.26安装配置教程(windows 64位)

    目录 一 进入MySQL官网下载安装 二 配置并初始化MySQL 三 配置环境变量 四 检验安装 一 进入MySQL官网下载安装 进入Mysql官网MySQL 点击DOWNLOADS下拉页面点击红框内容 跳转页面后点击红框 下载后并解压到目
  • 8个Python免费网站,一周熟练Python,知道就是赚到!

    前言 Python 已经成为一种再主流不过的编程语言了 许多同学开始学习它 又不知道该如何入手 希望在一周内学习最强大和最流行的编程语言之一 是的 你读得对 如果你有奉献精神 你可以在一周内学习Python 今天呢 我给大家推荐八个免费学习
  • 教你如何有效防止DDos攻击?

    DDos又称分布式拒绝服务 DDos是利用大量合理的请求造成资源过载 导致服务不可用 就比如一个餐馆总共有100个座位 突然有一天某个商家恶意竞争 雇佣了200个人来到这个餐馆坐着不吃不喝 门口还排着长长的队 导致餐馆无法正常营业 这就是D
  • 【Flutter 2-7】Flutter手把手教程UI布局和Widget——垂直布局控件Column

    Column Column是在Flutter中常见的布局控件 它负责垂直方向布局 Row负责水平方向布局 二者都是继承于Flex 类似于iOS里面的UIScrollView 但是又有很多不同 先来看一下Column的构造函数 Column
  • 初级unity开发的重难点知识总结

    生命周期函数 10个 Awake gt OnEnable gt Start gt FixedUpdate gt Update gt LateUpdate gt OnGUI gt Reset gt OnDisable gt OnDestroy
  • 原来的控件delphi7里何处寻?

    经常有朋友提这样的问题 我原来在delphi5或者delphi6中用的很熟的控件到哪里去了 是不是在delphi7中没有了呢 这是不是意味着我以前写的代码全都不能够移植到delphi7中来了呢 是不是我必须学习适应这些新的控件呢 现在我就对
  • 最全的中文编码

    GB18030
  • PTA L2-010 排座位 (25 分)

    include
  • 百亿级数据分表后怎么分页查呢?

    当业务规模达到一定规模之后 像淘宝日订单量在5000万单以上 美团3000万单以上 数据库面对海量的数据压力 分库分表就是必须进行的操作了 而分库分表之后一些常规的查询可能都会产生问题 最常见的就是比如分页查询的问题 一般我们把分表的字段称