分库分表浅析原理

数据库存放数据大了,查询等操作就会存在瓶颈,怎么办?

1. 如果是单张表数据大了,可以在原有库上新建几张表table_0、table_1、table_2、.....table_n

写程序对数据进行分表:

    --这里提供一种一种分表策略,这里只需维护分片字段与表序号的关系

伪代码:if(主键id % n)= xfor( table:list [table_0、table1、table2、.....table_n ]){if(table.split("_")[1] = x ){//执行sql: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)}}

如果数据还是很大,放在一个库都嫌拥挤,那就新增数据库,与上面的同理,就是维护分片字段与某数据库和某个库里的表

伪代码:假设有n个库,每个库有m张表if(主键id % n)= xif(主键id % m) = y那么  大表里这条数据将落在第x库里的第y张表执行connet = JDBC.connet(x)connet.stamet.excute(inset into y..... ) 

实现技术原理:

根据所使用的技术不同拦截层面有多种,我想到就有

 1. SpringMVC 的拦截器可以在Controller层面实现上述分表策略

 2. 使用Aop 进行拦截,也能实现在Controller或Service层面实现上述分表策略

 3. 单独起一个微服务进行(如网关)进行拦截实现上述分表策略

 4. 使用中间件mycat 、sharding jdbc等原理跟3是差不多的,只不过有更丰富的分表策略和更成熟的方案

当然实际我们会使用定时任务 + 线程池+本地缓存(存limit值,防重复) 去扫描大表数据    分段 select * from big_table limit 1,1000 这样分表

补充:水平切分和垂直切分

 

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

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

相关文章

2024蓝桥杯每日一题(时间日期)

一、第一题:日期差值 解题思路:模拟 写一个计算时间的板子两者相减 【Python程序代码】 mon [0,31,28,31,30,31,30,31,31,30,31,30,31] def pd(x):if x%4000 or (x%40 and x%100!0):return Truereturn False def get_day(y,m,d):res 0for i …

【机器学习】无监督学习算法之:层次聚类

层次聚类 1、引言2、层次聚类2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥, 这周末过的滋润啊。 小鱼:… 每个周末都挺滋润的啊。 小屌丝:啊~ ~ 你这… 小鱼:周末加班&#xf…

C语言实现贪吃蛇

前言:今天给大家详细介绍一下小游戏贪吃蛇的代码。 目录 一 .贪吃蛇实现的功能 二.贪吃蛇游戏设计与分析 1.贪吃蛇以及贪吃蛇所需要维护的数据 (1)贪吃蛇蛇体 (2)数据维护 2.地图设计 (1&#x…

第16章——西瓜书强化学习

在强化学习中,智能体通过与环境的交互来学习如何做出决策。在每个时间步,智能体观察当前的环境状态,并根据其策略选择一个动作。环境会对智能体的动作做出响应,并给出一个奖励信号(reward),该信…

【DH法】——机器人运动学正逆解

描述关节姿态 串联机器人的关节由电机连杆组成,如下图所示: 图1 PUMA560机器人结构模型 图2 PUMA560机器人实物 PUMA 560 robot in the experiment. | Download Scientific Diagram (researchgate.net)

车载诊断协议DoIP系列 —— AL IPv6地址分配通用DoIP报头结构

车载诊断协议DoIP系列 —— AL IPv6地址分配&通用DoIP报头结构 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自…

题目:珠宝的最大交替和(蓝桥OJ 3791)

问题描述: 解题思路:(思路样例从0开始赋值) 注意点:1.S需要开long long 2.需要考虑如果交换的差值(即Aj - Ai)为负数的情况。 题解:(实例代码为从1开始赋值,因此奇偶要与…

来,我们把LangChain了解一下

目录 LangChain简介 LangChain Experssion Language 常见API key申请 LangChain简介 最近要学的东西可太多了,好的,我们先来看看LangChain是什么东西,咱就是说开干吧: pip install langchain Get started吧:Get …

C语言——递归题

对于递归问题,我们一定要想清楚递归的结束条件,每个递归的结束条件,就是思考这个问题的起始点。 题目1: 思路:当k1时,任何数的1次方都是原数,此时返回n,这就是递归的结束条件&#…

Vue3 + antv/x6 实现流程图

新建流程图 // AddDag.vue <template><div class"content-main"><div class"tool-container"><div click"undo" class"command" title"后退"><Icon icon"ant-design:undo-outlined" /…

深耕版本控制、代码质量与安全等领域,龙智荣获“Perforce 2023年度合作伙伴”奖项

在近日举行的Perforce 2024合作伙伴峰会上&#xff0c;龙智被评选为“Perforce 2023年度合作伙伴”。这一奖项不仅是对龙智在中国市场开拓中的进取精神与丰硕成果的高度认可&#xff0c;也是Perforce公司对于龙智持续创新精神及专业技术与服务的表彰。 自2012年成为Perforce中…

PyCharm无代码提示解决

PyCharm无代码提示解决方法 在使用PyCharm工具时&#xff0c;调用方法却无法进行提示&#xff0c;针对PyCharm无代码提示整理下解决方案 1、Python内置语法无智能提示 复现&#xff1a;我这里以urllib库读取网页内容为例&#xff0c;在通过urlopen(&#xff09;之后调用getur…