前言

生产环境中,当单表数据达到一定的量级的时候,查询性能的瓶颈迟早会暴露出来,这个时候,解决思路可以考虑两种,一是从架构上对当前应用进行优化,比如使用es或mongodb等非关系型数据库进行配合使用,当然这种方式需要考虑一定的改造成本和团队开发人员的学习成本,另一种就是分库分表

我们常说分库分表,但是具体怎么分?为什么要分?以及使用什么样的技术进行分?这些都是需要提前考虑的问题,下面介绍一个行业中应用比较成熟的分库分表的中间件sharding-jdbc,由当当网开源的一款用于实现分库分表、读写分离等功能的中间件

基本概念

数据表切分方式

  • 水平切分
  • 垂直切分

考虑在应用中有一张这样的表,t_order表,即用于保存订单数据的表,当数据量比较小,可以直观的认为数据量在100万以下的时候,查询的时候,对于5.7以上的mysql引擎来说问题不是很大,但是当量级达到1000万甚至更大的时候,单表的读写性能会因为数据量过大带来的IO性能瓶颈越来越严重

这时候单纯从优化查询的性能考虑,可以有2种思路

第一,降低查询表的数据量,比如单表1000万数据和单表100万数据,这样的查询性能谁更快一目了然,因此方案一可以考虑进行分表,将单表拆分成多表,这种方式可以认为是水平拆分;

springboot整合sharding-jdbc相关推荐

  1. SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源

    SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源 上篇文章我们讲到了如何配置整合JDBC的基础环境,这篇文章我们讲解一下如何去配置服务的DataSource数据库数据源,方便其对 ...

  2. Springboot整合JDBC和DBUtils,实现简单的增删改查.

    Springboot整合JDBC和DBUtils,实现简单的增删改查. 一.pom.xml文件 <?xml version="1.0" encoding="UTF- ...

  3. SpringBoot整合JDBC数据库操作第七弹-自定义RowMapper

    SpringBoot整合JDBC数据库操作第七弹-自定义RowMapper 上篇文章我们讲到了怎么对数据的查询操作,每次查询数据都会在返回中构建一个匿名类去封装返回结果,这样的话导致我们有大量的冗余代 ...

  4. SpringBoot 整合 Sharding-JDBC

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.sharding-jdbc简介 二.使用步骤 1.新建项目.引入依赖 2.代码实战 总结 前言 SpringBoo ...

  5. 【MySQL 读写分离】Sharding JDBC + Spring boot 实现数据库读写分离的登录 Demo

    上篇文章我们搭建了 MySQL 数据库主从复制集群 MySQL 搭建主从复制集群~~~ 本篇文章我们利用搭建好的主从复制集群,使用 SpringBoot 结合 Sharding-JDBC 搭建一个小的 ...

  6. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程

    springboot整合MySQL很简单,多数据源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一个yml文件 先配置MySQL,代码如下 spring: datasour ...

  7. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

  8. SpringBoot整合RabbitMQ-整合演示

    本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客. 学习路径:https://www.imooc. ...

  9. 【Spring框架家族】SpringBoot整合第三方

    SpringBoot整合Junit 搭建SpringBoot工程 引入starter-test起步依赖 <dependencies><dependency><groupI ...

  10. SpringBoot整合RabbitMQ-消息可靠性投递

    本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客. 学习路径:https://www.imooc. ...

最新文章

  1. 详细讲解MFS分布式文件系统搭建(内含源码包)
  2. java和python的web自动化有什么区别-Python和Java哪个更适合做自动化测试?
  3. javalibrary 线上_线上的少儿口才培训班-1V1精品课程【演讲与口才吧】
  4. 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)...
  5. Android 取得 ListView中每一个Item项目的值
  6. 风控模型师面试准备--技术篇(逻辑回归、决策树、集成学习)
  7. 如何低格台式计算机的硬盘,硬盘怎样低级格式化
  8. 【译】理解JavaScript闭包——新手指南
  9. onchange 与 onblur
  10. 利用sender的Parent获取GridView中的当前行
  11. origin使用指导。pdf_获取所有的最高法指导性案例并保存为pdf
  12. 【20211208】【Python】UCI数据集的简单介绍和使用Python保存UCI数据集为.mat文件
  13. Ubuntu文件目录结构详解
  14. 数字电路实验(三)——加法器、运算器
  15. 百度API接口+图灵机器人=语音助手
  16. LaTeX常用数学符号表示方法
  17. 常见的设计模式有哪些?实际开发中你用了什么设计模式?
  18. EMC首款企业级SaaS产品亮相 产品策略初见端倪
  19. 浅谈:智能化变电站在线监测系统
  20. 如何使用微信公众号做营销

热门文章

  1. Codeforces Round #311 (Div. 2)B. Pasha and Tea 水题
  2. Java从零开始学十四(包和访问控制)
  3. 网站被DDOS***怎么防御,推荐网站CDN防御
  4. Bone collector//动态规划
  5. SpringBoot如何使用拦截器
  6. Dameware Mini Remote Control 连接记录恢复
  7. 压力测试以及编译安装httpd2.4
  8. 《音乐达人秀:Adobe Audition CC实战222例》——1.3 数字录音记录生活越来越便捷...
  9. osip2 代码分析
  10. #if、#ifdef、#if defined之间的区别【转】