分表策略,你真的分对了?

news2024/11/15 0:17:09

垂直分表方案

  • 表的记录并不多,但是字段却很长,表占用空间很大,检索表的时候需要执行大量的IO,严重降低了性能。这时需要把大的字段拆分到另一个表,并且该表与原表是一对一的关系。
为什么垂直拆分之后查询性能就变快了?
  • 由于数据量本身大,需要更长的读取时间。
  • 跨页,页是数据库存储单位,很多查找及定位操作都是以页为单位,单页内的数据行越多数据库整体性能越好,而大字段占用空间大,单页内存储行数少,因此IO效率较低。
  • 数据库以行为单位将数据加载到内存中,这样表中字段长度较短且访问频率较高,内存能加载更多的数据,命中率更高,减少了磁盘IO,从而提升了数据库性能。

水平分表方案

ID取模分表
优点
  • 分表比较简单,并且数据都可以很均匀的分摊到每个分表上。
缺点
  • 如果想要扩展表的个数,比如从2张表变成3张表。那同样还是id=3的数据,以前3和2取模得到1,所以ID=3的数据会放在user1表里,现在3和3取模得到0,那就要存在在user0这张表里,跟原来的user1对不上了,这就需要考数据迁移的问题了。当然也可以在一开始就对数据进行预估建立多张表。

ID范围分表
优点
  • 设置每张表的存放的数据范围,这样就可以很好的解决ID取模时数据扩展的问题。数据少的时候,表也少,随着数据增多,表会慢慢变多。而且这样表还可以无限扩展。
缺点
  • 根据id范围去做分表,因为id是递增的,那新写入的数据一般都会落到某一张表上,如果你的业务场景写数据特别频繁,那这张表就会出现写热点的问题。

ID取模分表+ID范围分表
  • 可以在ID范围分表后再增加几张表进行ID取模分表。比如通过ID范围分表后得到user1表,此时可以增加user1-1、user1-2、user1-3等三张表来进行ID取模,以此减少单表的读写压力。

什么是读扩散问题?
  • 理想情况下我们已知一个id,不管是根据哪种规则,我们都能很快定位到该读哪个分表。但很多情况下,我们的查询又不是只查主键,如果我的数据库表有一列name,并且加了个普通索引。由于name并不是分片键,我们我们没法定位到具体要到哪个分表上去执行sql,于是就会对所有分表进行查询,随着我的表越来越多,次数会越来越多,这就是所谓的读扩散问题。
如何解决读扩散问题?
  • 我们可以单独建个新的分片表,这个新表里的列就只有旧表的主键id和普通索引列,而这次换普通索引列来做分片键。
  • 当我们要查询普通索引列时,先到这个新的分片表里做一次查询,就能迅速定位到对应的主键ID,然后再拿主键ID去旧的分片表里再查一次数据,这个做法的缺点就是需要维护两套表,并且普通索引列更新时,要两张表同时进行更改。也可以使用es+mysql来实现。

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

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

相关文章

ROG CETRA II 降临2代RGB版 使用体验!

现在Type-C接口的设备越来越多,不仅是台式机开始普及,像NUC、笔记本、Switch、安卓手机等也都是Type-C接口了,所以游戏耳机方面也开始迭代。Type-C还有一个好处就是供电足以撑起降噪处理和RGB灯效,你懂的。今天跟大家分享的就是RO…

基于yolov5s的垃圾桶满溢检测 (附数据集与Coovally操作步骤)

本文主要内容:详细介绍了垃圾桶满溢检测整个过程,从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式,请先看检测效果 现状 在当今城市化高速发展的背景下,随着人口密度的增加和垃圾产生量的急剧攀升&#xff…

linux线程的同步与互斥

前面我们讲了线程的概念以及如何创建与控制线程,接下来我们来对线程的细节与线程之间的问题进行一些讲解; 1.线程的互斥 互斥就是相互排斥,我们可以理解为对立竞争不相容;线程的互斥则是线程之间在对于临界资源竞争时相互排斥的…

Unity | Shader基础知识(番外:了解内置Shader-Standard<一>)

前言 有粉丝给我说,感觉自己内部自带的Shader都还不知道怎么用,希望我讲一下内置Shader。 那我们就从Standard开始吧!~ 一、什么是Standard standard是标准着色器,但标准着色器是什么意思? 官方解释:U…

推荐系统三十六式学习笔记:原理篇.内容推荐06|超越标签的内容推荐系统

目录 为什么要做好内容推荐?内容源内容分析和用户分析内容推荐算法总结: 基于内容的推荐系统,有个误区,衡量其性能优劣,评判标准是标签数量够不够。其实标签只是很小一部分。而且即便是标签,衡量质量的方式…

现在有一个生产计划,甲乙丙3个品类共16个产品,生产时间6天,每天甲品类可以生产1张单,乙3张,丙1张,请用MySQL写出H列的效果

现在有一个生产计划,甲乙丙3个品类共16个产品,生产时间6天,每天甲品类可以生产1张单,乙3张,丙1张,请用MySQL写出H列的效果吗? 最终展示结果要求为: 品类产品生产时间开始生产时间…

Nvidia 目前的市值为 3.01 万亿美元,超过苹果Apple

人工智能的繁荣将英伟达的市值推高到足以使其成为全球第二大最有价值的公司。 英伟达已成为全球第二大最有价值的公司。周三下午,这家芯片制造巨头的市值达到 3.01 万亿美元,领先于苹果公司的 3 万亿美元。 喜好儿网AIGC专区:https://heehe…

一文了解UVLED线光源的应用

在机器视觉系统中,光源作为不可或缺的一部分,能够提高目标成像效果,增强检测效果。光源的选择至关重要,选到不合适的会影响成像及检测效果。针对不同的检测对象,不同的形状光源应运而生。我们来看看最UVLED线光源。 下面以CCS的光…

Linux 36.3 + JetPack v6.0@jetson-inference之目标检测

Linux 36.3 JetPack v6.0jetson-inference之目标检测 1. 源由2. detectnet2.1 命令选项2.2 下载模型2.3 操作示例2.3.1 单张照片2.3.2 多张照片2.3.3 视频 3. 代码3.1 Python3.2 C 4. 参考资料 1. 源由 从应用角度来说,目标检测是计算机视觉里面第二个重要环节。之…

【python/pytorch】已解决ModuleNotFoundError: No module named ‘torch‘

【PyTorch】成功解决ModuleNotFoundError: No module named torch 一、引言 在深度学习领域,PyTorch作为一款强大的开源机器学习库,受到了众多研究者和开发者的青睐。然而,在安装和使用PyTorch的过程中,有时会遇到一些问题和挑战…

安全测试 之 安全漏洞: ClickHiJacking

1. ClickHiJacking 定义 点击劫持(Click Jacking)是一种视觉上的欺骗手段,攻击者通过使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,通过调整iframe页面的位置,可以使…

通用高电子迁移率晶体管(HEMT)的差分微变解算方案及分析型模型

来源:A Difference-Microvariation Solution and Analytical Model for Generic HEMTs(TED 22年) 摘要 这篇论文提出了一种AlGaN/GaN和AlGaAs/GaAs基高电子迁移率晶体管(HEMT)的分析型直流模型。该模型考虑了高栅偏压下势垒层中积累的电荷。…

Nat Commun|直捣黄龙!空间单细胞组学发现外周血靶细胞亚群的组织落脚点

溃疡性结肠炎(Ulcerative colitis,UC)是一种慢性炎症性肠道疾病,其特征是免疫介导的黏膜炎症和上皮损伤。目前UC的治疗策略已经从单纯的症状缓解转变为更精准的靶向治疗。Vedolizumab(VDZ)作为一种抗整合素…

短剧系统源码:打造多平台互动娱乐体验

随着科技的不断进步,多平台互动娱乐体验逐渐成为人们日常生活的一部分。短剧系统源码便是在这样的背景下应运而生,它为开发者提供了一套完整的解决方案,以实现PC端、移动端APP、H5网页以及小程序平台的无缝对接和内容共享。本文将详细介绍短剧…

在iPhone上恢复已删除的Safari历史记录的最佳方法

您是否正在寻找恢复 iPhone 上已删除的 Safari 历史记录的最佳方法?好吧,这篇文章提供了 4 种在有/无备份的情况下恢复 iPhone 上已删除的 Safari 历史记录的最佳方法。现在按照分步指南进行操作。 iPhone 上的 Safari 历史记录会被永久删除吗&#xff1…

开关管的导通损耗和开关损耗及MOS管驱动

导通损耗和开关损耗 开关管的损耗带来的问题 ★使得开关管发热,为了降低温度,需要增大散热面积,从而增大了体积和成本。 ★降低了开关电源的效率。 开关管的损耗分为导通损耗和开关损耗 ★导通损耗:在开关管导通时候&#xf…

重庆耶非凡科技揭秘:海外拼多多选品师岗位真相解析

在当今数字化、全球化的浪潮中,跨境电商行业蓬勃发展,越来越多的企业开始寻求拓展海外市场的新机遇。其中,重庆耶非凡科技有限公司作为一家在软件开发和技术服务领域具有深厚实力的企业,其海外拼多多选品师这一职位引发了广泛关注…

计算机网络学习记录 应用层 Day6

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner 🌹 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 想看更多 那就点个关注吧 我…

如何将AndroidStudio和IDEA的包名改为分层级目录

新版UIAndroidStudio 1、点击项目目录右上角如图所示的三个点点。 2、然后依次取消Hide empty middle package ,Flatten package的勾选 3、注意:一定要先取消hide的勾选,不然目录不会完全分级(做错了可以反过来重新设置&#x…

[leetcode hot 150]第七十题,爬楼梯(动态规划)

题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 爬到第 n 阶楼梯的方法数量等于爬到第 n-1 阶和第 n-2 阶的方法数量之和,即: f(n) f(n-1) f(n-2) 边界条件 还需要考虑边界…