MySQL解决海量数据和并发性的方案——分库分表

分库分表其实是两个事情,为了解决的东西实际上也是两个,但是一定要注意,不到最后万不得已,不要用分库分表,因为这会对数据查询有极大限制

  1. 数据量太大查询慢的问题。
    这里面我们讲的「查询」其实 主要是事务中的查询和更新操作,因为 只读的查询可以通过缓存和主从分离来解决,这个我们在之前的「MySQL 如何应对高并发」的两节课中都讲过。那我们上节课也讲到过,解决查询慢,只要减少每次查询的数据总量就可以了,也就是说,分表就可以解决问题。
  2. 为了应对高并发的问题。
    应对高并发的思想我们之前也说过,一个数据库实例撑不住,就把并发请求分散到多个实例中去,所以,解决高并发的问题是需要分库的。

那么分库实际上就是把表放到不同数据库上,所以分表才是基础,分表又分为垂直和水平两种:

  1. 垂直分表
    在这里插入图片描述
  2. 水平分表
    但需要注意的是,假设是按照下面这种关键字%的方式,可能恰好大部分数据会被分到同一个表里,没起到分表作用。
    所以要选好按照什么关键字分,比如按照用户id,那我要查我的订单时候,我并不知道我的订单具体信息被放到哪个分片了。
    所以也可以根据时间分,但业务增长趋势初期不一定能预料到,可能后期业务爆炸增长。
    也可以根据大小分,比如每200w就分一下,但这收到场景限制,会有一部分分表成为热点,其他的分表闲着。
    一般来说,订单表都采用更均匀的哈希分片算法,取%就是一种简单的哈希算法。需要注意的一点是,哈希分片算法能够分得足够均匀的前提条件是,用户 ID 后几位数字必须是均匀分布的。
    还有一种分片的方法:查表法。查表法其实就是没有分片算法,决定某个 Sharding Key 落在哪个分片上,全靠人为来分配,分配的结果记录在一张表里面。每次执行查询的时候,先去表里查一下要找的数据在哪个分片中。查表法的好处就是灵活,怎么分都可以,你用上面两种分片算法都没法分均匀的情况下,就可以用查表法,人为地来把数据分均匀了。查表法还有一个特好的地方是,它的分片是可以随时改变的。比如我发现某个分片已经是热点了,那我可以把这个分片再拆成几个分片,或者把这个分片的数据移到其他分片中去,然后修改一下分片映射表,就可以在线完成数据拆分了。
    在这里插入图片描述
    分库可以简单视为把分的表放到不同库里,不多赘述。但实际上分库会带来一些问题,需要我们考虑。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/625173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实现图片压缩

文章目录 1、canvas实现图片压缩2、其他 1、canvas实现图片压缩 canvas 实现图片压缩,主要是使用 canvas 的drawImage 方法 具体思路 拿到用户上传的文件转成base64创建一个 Image,主要是获取到这个图片的宽度和高度创建一个 2D 的画布,画布…

一文搞懂系列——Linux C线程池技术

背景 最近在走读诊断项目代码时,发现其用到了线程池技术,感觉耳目一新。以前基本只是听过线程池,但是并没有实际应用。对它有一丝的好奇,于是趁这个机会深入了解一下线程池的实现原理。 线程池的优点 线程池出现的背景&#xf…

RocketMQ源码阅读-Message拉取与消费-Broker篇

RocketMQ源码阅读-Message拉取与消费-Broker篇 1. ConsumeQueue是什么2. Message重放2.1 从MappedFile文件读取Message到ConsumeQueue2.2 ConsumeQueue持久化 3. Broker提供的拉取接口3.1 请求Header3.2 拉取消息接口3.3 拉取失败处理 4. Broker提供的更新消费进度接口5. Broke…

C++之类的静态成员

C静态成员是指在类中使用static关键字声明的成员变量或成员函数。静态成员属于类本身,而不是类的对象。它们在所有对象之间共享,只有一份内存空间。静态成员在类外初始化,且只能访问一次。 关键字 static 意味着类中只有一个该成员的实例。静…

Redis面试题16

Redis 的主从复制是什么?它有什么作用? 答:主从复制是指 Redis 中的主节点将自己的数据复制给从节点的过程。主从复制为 Redis 提供了数据的冗余备份、读写分离和故障恢复等功能。 主从复制的过程如下: 主节点将自己的数据变更操…

短视频IP运营流程架构SOP模板PPT

【干货资料持续更新,以防走丢】 短视频IP运营流程架构SOP模板PPT 部分资料预览 资料部分是网络整理,仅供学习参考。 抖音运营资料合集(完整资料包含以下内容) 目录 抖音15秒短视频剧本创作公式 在抖音这个短视频平台上&#…

【FastAPI】路径参数

路径参数 from fastapi import FastAPIapp FastAPI()app.get("/items/{item_id}") async def read_item(item_id):return {"item_id": item_id}其中{item_id}就为路径参数 运行以上程序当访问 :http://127.0.0.1:8000/items/fastapi时候 将会…

SpringBoot集成RabbitMq,RabbitMq消费与生产,消费失败重发机制,发送签收确认机制

RabbitMq消费与生产,消费失败重发机制,发送确认机制,消息发送结果回执 1. RabbitMq集成spring bootRabbitMq集成依赖RabbitMq配置RabbitMq生产者,队列,交换通道配置,消费者示例 2. RabbitMq消息确认机制消息…

力扣labuladong一刷day59天动态规划

力扣labuladong一刷day59天动态规划 文章目录 力扣labuladong一刷day59天动态规划一、509. 斐波那契数二、322. 零钱兑换 一、509. 斐波那契数 题目链接:https://leetcode.cn/problems/fibonacci-number/description/ 思路:这是非常典型的一道题&#x…

【例7.5】 取余运算(mod) 快速幂

1326:【例7.5】 取余运算(mod) 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 输入b,p,k的值,求bpmodk 的值。其中b,p,kk为长整型数。 【输入】 输入b,p&#xf…

Scott用户数据表的分析

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 如果想要知道某个用户所有的数据表: select * from tab; 此时结果中一共返回了四张数据表,分别为部门表(dept) ,员工表(emp&a…

【LV12 DAY20 RTC实验】

编程实现通过LED状态显示当前电压范围,并打印产生低压警报时的时间 注: 电压在1501mv~1800mv时,LED2、LED3、LED4、LED5点亮 电压在1001mv~1500mv时,LED2、LED3、LED4点亮 电压在501mv~1000mv时,LED2、LED3点亮 电压在…

C++算法学习心得六.回溯算法(1)

1.回溯算法理论基础 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案 回溯法解决的问题 组合问题:N个数里面按一定规则找出…

HTML--CSS--浮动布局及定位布局

正常文档布局 块元素独占一行 行内元素在有多个的时候,就是从左到右排在一行 块元素包括:div,p,hr 行内元素:span,i,img 浮动布局 float 属性: left 向左 right 向右 作用我目前看起来就是浮动元素的宽度是由内容决定的&#x…

Doris学习笔记-Java自定义UDAF

项目最近需要做一些数据统计方面的东西,发现数据字段都是很长一串数字的字符串,Doris自带的函数无法对其进行相应的运算操作,需要扩展实现相关的操作运算。 主要参考官方的文档资料完成相关的自定义扩展。需要注意的是在使用Java代码编写UDAF时,有一些必须实现的函数(标记…

网络安全服务

有效防御Cc、API接口、http、tcp、WEB应用扫描/爬虫、SYN、WAF、DDOS、UDP、入侵、渗透、SQL注入、XXS跨站脚本攻击、远程恶意代码执行、session ion fixation、Webshell攻击、恶意请求,恶意扫描、暴击破解、CSRF等各种攻击。不用迁移数据,服务器用哪里…

HDFS和MapReduce综合实训

文章目录 第1关:WordCount词频统计第2关:HDFS文件读写第3关:倒排索引第4关: 网页排序——PageRank算法 第1关:WordCount词频统计 测试说明 以下是测试样例: 测试输入样例数据集:文本文档test1…

Java实战之每日海报

前言 使用java生成每日海报。 项目起因是巧合下遇到了一篇很棒的文档,说的是用程序来实现每日生成一个海报。如果之后加上自动发布的功能,简直就是太棒了啊! 样例图如下: 每日海报 思路 访问某词站的API获取网络图片&#…

GBASE regexp_replace函数 与 db2 translate函数比较

db2 translate函数 以下内容参考自文档: translate 函数 官方示例: 示例1: fn:translate(Test literal,el,om) -- RETURN RESULT: Tost mitoram上述式子的意思为: 对于字符串:‘Test literal’,使用o 替代 e,使用 m…

在线客服系统如何与社交媒体集成?

在线客服系统与社交媒体的集成可以实现以下功能: 直接接入社交媒体平台:通过API集成,客服系统可以与主流社交媒体平台(如微信、微博、Facebook等)直接对接,客户可以直接在社交媒体上发起咨询或投诉&#x…