springboot整合sharding-jdbc
前言
生产环境中,当单表数据达到一定的量级的时候,查询性能的瓶颈迟早会暴露出来,这个时候,解决思路可以考虑两种,一是从架构上对当前应用进行优化,比如使用es或mongodb等非关系型数据库进行配合使用,当然这种方式需要考虑一定的改造成本和团队开发人员的学习成本,另一种就是分库分表
我们常说分库分表,但是具体怎么分?为什么要分?以及使用什么样的技术进行分?这些都是需要提前考虑的问题,下面介绍一个行业中应用比较成熟的分库分表的中间件sharding-jdbc,由当当网开源的一款用于实现分库分表、读写分离等功能的中间件
基本概念
数据表切分方式
- 水平切分
- 垂直切分
考虑在应用中有一张这样的表,t_order表,即用于保存订单数据的表,当数据量比较小,可以直观的认为数据量在100万以下的时候,查询的时候,对于5.7以上的mysql引擎来说问题不是很大,但是当量级达到1000万甚至更大的时候,单表的读写性能会因为数据量过大带来的IO性能瓶颈越来越严重
这时候单纯从优化查询的性能考虑,可以有2种思路
第一,降低查询表的数据量,比如单表1000万数据和单表100万数据,这样的查询性能谁更快一目了然,因此方案一可以考虑进行分表,将单表拆分成多表,这种方式可以认为是水平拆分;
springboot整合sharding-jdbc相关推荐
- SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源
SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源 上篇文章我们讲到了如何配置整合JDBC的基础环境,这篇文章我们讲解一下如何去配置服务的DataSource数据库数据源,方便其对 ...
- Springboot整合JDBC和DBUtils,实现简单的增删改查.
Springboot整合JDBC和DBUtils,实现简单的增删改查. 一.pom.xml文件 <?xml version="1.0" encoding="UTF- ...
- SpringBoot整合JDBC数据库操作第七弹-自定义RowMapper
SpringBoot整合JDBC数据库操作第七弹-自定义RowMapper 上篇文章我们讲到了怎么对数据的查询操作,每次查询数据都会在返回中构建一个匿名类去封装返回结果,这样的话导致我们有大量的冗余代 ...
- SpringBoot 整合 Sharding-JDBC
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.sharding-jdbc简介 二.使用步骤 1.新建项目.引入依赖 2.代码实战 总结 前言 SpringBoo ...
- 【MySQL 读写分离】Sharding JDBC + Spring boot 实现数据库读写分离的登录 Demo
上篇文章我们搭建了 MySQL 数据库主从复制集群 MySQL 搭建主从复制集群~~~ 本篇文章我们利用搭建好的主从复制集群,使用 SpringBoot 结合 Sharding-JDBC 搭建一个小的 ...
- db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程
springboot整合MySQL很简单,多数据源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一个yml文件 先配置MySQL,代码如下 spring: datasour ...
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...
- SpringBoot整合RabbitMQ-整合演示
本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客. 学习路径:https://www.imooc. ...
- 【Spring框架家族】SpringBoot整合第三方
SpringBoot整合Junit 搭建SpringBoot工程 引入starter-test起步依赖 <dependencies><dependency><groupI ...
- SpringBoot整合RabbitMQ-消息可靠性投递
本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客. 学习路径:https://www.imooc. ...
最新文章
- 详细讲解MFS分布式文件系统搭建(内含源码包)
- java和python的web自动化有什么区别-Python和Java哪个更适合做自动化测试?
- javalibrary 线上_线上的少儿口才培训班-1V1精品课程【演讲与口才吧】
- 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)...
- Android 取得 ListView中每一个Item项目的值
- 风控模型师面试准备--技术篇(逻辑回归、决策树、集成学习)
- 如何低格台式计算机的硬盘,硬盘怎样低级格式化
- 【译】理解JavaScript闭包——新手指南
- onchange 与 onblur
- 利用sender的Parent获取GridView中的当前行
- origin使用指导。pdf_获取所有的最高法指导性案例并保存为pdf
- 【20211208】【Python】UCI数据集的简单介绍和使用Python保存UCI数据集为.mat文件
- Ubuntu文件目录结构详解
- 数字电路实验(三)——加法器、运算器
- 百度API接口+图灵机器人=语音助手
- LaTeX常用数学符号表示方法
- 常见的设计模式有哪些?实际开发中你用了什么设计模式?
- EMC首款企业级SaaS产品亮相 产品策略初见端倪
- 浅谈:智能化变电站在线监测系统
- 如何使用微信公众号做营销
热门文章
- Codeforces Round #311 (Div. 2)B. Pasha and Tea 水题
- Java从零开始学十四(包和访问控制)
- 网站被DDOS***怎么防御,推荐网站CDN防御
- Bone collector//动态规划
- SpringBoot如何使用拦截器
- Dameware Mini Remote Control 连接记录恢复
- 压力测试以及编译安装httpd2.4
- 《音乐达人秀:Adobe Audition CC实战222例》——1.3 数字录音记录生活越来越便捷...
- osip2 代码分析
- #if、#ifdef、#if defined之间的区别【转】