广告
返回顶部
首页 > 资讯 > 数据库 >SQL分库分表
  • 475
分享到

SQL分库分表

SQL分库分表 2017-03-08 12:03:16 475人浏览 才女
摘要

历史背景 MySql性能瓶颈 1.    表数据量过大 2.    Sql查询过于复杂 3.    Sql没走索引 4.    数据库服务器性能低 解决方案 阿里开发手册:单表行数超过500W或者单表容量超过2G 数据库分库分表 分

SQL分库分表

历史背景

MySql性能瓶颈

  1. 1.    表数据量过大
  2. 2.    Sql查询过于复杂
  3. 3.    Sql没走索引
  4. 4.    数据库服务器性能低

解决方案

阿里开发手册:单表行数超过500W或者单表容量超过2G

数据库分库分表

  1. 分库分表
  2. 冷热数据分离
  3. 历史数据分离

数据库分库分表

  1. 1.    垂直拆分
    1. 垂直分表(大表拆成多个小表)

 

 

 

优点

  1. 防止单表字段过多产生页分裂从而导致io次数过多,效率差的问题
  2. 可以达到最大化利用Cache的目的,具体在垂直拆分的时候可以将不常变的字段放一起,将经常改变的放一起

缺点

 1. 主键出现冗余,需要管理冗余例

 2. 会引起表连接JOIN操作(增加CPU开销

 3. sql以及事务处理复杂

  1. 垂直分库(单个库拆成多个库  微服务系统)

 

 

 

优点

       分散单库访问压力

缺点

            分布式事务问题

  1. 2.    水平拆分
    1. 1.    水平分表

 

 

 

优点

单库单表的数据能保持在一定的量级,有助于性能的提高。
2.切分的表结构相同,应用层改造较少,只需要增加路由规则即可。
3.提高了系统的稳定性和负载能力。

缺点

  1. 切分后,数据是分散的,跨库join操作难和性能差
  2. 拆分规则难以抽象
  3. 分片事务的一致性难以解决
  4. 数据扩容的难度和维护量极大
  5. 2.    水平分库

 

 

 

分库分表算法

  1. 1.    哈希取模算法

 

 

 

优点

   算法简单,数据分布相对均匀

缺点

   扩容问题,需要哈希取模全部数据迁移(比如增加user_05,算法变成id%5,01-04里面数据全部需要重新分布)

  1. 2.    一致性哈希算法

 

 

 

 

 

 

当B需要移除时

 

 

 

hash环的偏斜

在实际的映射中,服务器可能会被映射成如下模样。

 

 

 

如果服务器被映射成上图中的模样,那么被缓存的对象很有可能大部分集中缓存在某一台服务器上,如下图所示。

 

 

 

虚拟节点(定义虚拟节点,让哈希环分布均匀)

 

 

 

 

 

  1. 3.    按照范围分片算法(按照不同的数据业务特性定义分片键)
    1. 按照商家
    2. 按照时间月份
    3. 按照地域

案例

用户表

  1. 1.    功能

注册,登录,查询,修改

  1. 2.    使用范围
    1. 1.    用户端(用户登录,修改用户,信息查询)

根据用户ID查询用户信息->90%

根据phone,email查询用户信息->10%

  1. 2.    管理员端
    1. 统计用户信息
    2. 查询条件多变查询

可以根据用户ID进行分片

 

 

 

 

分库分表中间件

  1. 1.    分库分表组件(Sharding-JDBC 代码实现)

 

 

 

  1. 2.    服务端代理(MyCat)

 

 

 

分库分表问题

  1. 1.    历史数据迁移
  2. 2.    复杂SQL联合查询
  3. 3.    分页问题
  4. 4.    事务问题
您可能感兴趣的文档:

--结束END--

本文标题: SQL分库分表

本文链接: https://www.lsjlt.com/news/9034.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL分库分表
    历史背景 MySql性能瓶颈 1.    表数据量过大 2.    Sql查询过于复杂 3.    Sql没走索引 4.    数据库服务器性能低 解决方案 阿里开发手册:单表行数超过500W或者单表容量超过2G 数据库分库分表 分...
    99+
    2017-03-08
    SQL分库分表
  • SQL中怎么实现分库分表
    本篇文章为大家展示了SQL中怎么实现分库分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SQL怎样进行分库分表  方案1:  通过提升服务器硬件能力来提高数据处理...
    99+
    2022-10-18
  • 库表分析-sql语句
    SET FOREIGN_KEY_CHECKS=0; -- ------------------------------ Table structure for car-- ---------------------------- DROP...
    99+
    2016-06-09
    库表分析-sql语句 数据库入门 数据库基础教程 数据库 mysql
  • SQL Server 数据库分区分表(水平分表)详细步骤
    目录1、 需求说明2、实现思路2.1分区原理2.2 水平分区优点2.3 实现思路3、实现步骤 3.1代码创建分区表3.1.1  创建...
    99+
    2022-11-12
  • SQL Server数据库分区分表的示例分析
    这篇文章主要介绍SQL Server数据库分区分表的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、 需求说明将数据库Demo中的表按照日期字段进行水平分区分表。要求数据文件按一年一个文件存储,且...
    99+
    2023-06-14
  • 分库分表
    分库分表前的问题 任何问题都是太大或者太小的问题,我们这里面对的数据量太大的问题。 用户请求量太大 因为单服务器TPS,内存,IO都是有限的。 解决方法:分散请求到多个服务器上; 其实用户请求和执行一个sql查询是本质是一样的,都是请求一个...
    99+
    2022-02-11
    分库分表
  • mysql分库分表
    一、垂直拆分 1、垂直分库:在分布式系统开发中,基本都是按照模块划分,每个业务模块建立一个数据库  特点:业务区分度高,方便维护管理;各个模块独立维护,可以分摊系统的维护成本,提高可用性。  2、垂直分表:单张宽表,根据实际业务场景,...
    99+
    2015-03-08
    mysql分库分表
  • 分库分表怎样分?
    1)分库     业务拆分 - 如顾客,商品,订单各自分独立的库     主备 - 主机做读写,备机只做数据备份     主从(读写分离) - 主机写,从机读     主主 - 任意一台机做写,互相复制     集群 - 一主多备、一主多从...
    99+
    2014-07-22
    分库分表怎样分?
  • (3)SQL Server表分区
    1.简介 当一个表数据量很大时候,很自然我们就会想到将表拆分成很多小表,在执行查询时候就到各个小表去查,最后汇总数据集返回给调用者加快查询速度。比如电商平台订单表,库存表,由于长年累月读写较多,积累数据都是异常庞大的,这时候,我们...
    99+
    2020-05-01
    (3)SQL Server表分区
  • 大表分库分表总结
    本篇内容介绍了“大表分库分表总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.前言为什么需要做分库分表...
    99+
    2022-10-18
  • 分库分表(了解)
    站在架构师的角度来看分库分表  单体应用架构 一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。 优点 便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间...
    99+
    2021-02-06
    分库分表(了解)
  • 分库分表介绍
    目录 一、前言         二、何谓数据切分 三、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 4、拆分需考虑的业务因素 四、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 五、垂直与水平切分的联合使用 六、数据分...
    99+
    2023-09-03
    mysql 分表分库 垂直水平 表分区 切分策略
  • 数据库分库分表思路
    数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。 ...
    99+
    2017-10-27
    数据库分库分表思路
  • MySQL分库分表实例分析
    这篇“MySQL分库分表实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL分库分表实例分析”文章吧。一、为什么...
    99+
    2023-06-30
  • MySQL如何分库分表
    1. 我们为什么需要分库分表 在分库分表之前,就需要考虑为什么需要拆分。我们做一件事,肯定是有充分理由的。所以得想好分库分表的理由是什么。我们现在就从两个维度去思考它,为什么要分库?为什么要分表? 1.1 为什么要分库 如果业务量剧增,数...
    99+
    2023-08-17
    mysql 数据库
  • mysql分库分表备份
    一、单独备份数据库mysqldump -uroot -poldboy oldboy >/opt/oldboy.sql         最简单的备份        1)  mysql基于myisam引擎...
    99+
    2022-10-18
  • MyCat怎么分库分表
    本篇内容介绍了“MyCat怎么分库分表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!项目环境: ...
    99+
    2022-10-18
  • Mycat分表分库原则
    分表分库虽然能解决大表对数据库系统的压力,但它并不是万能的,也有一些不利之处,因此首要问题是,分不分库,分哪些库,什么规则分,分多少分片。  原则一:能不分就不分,1000万以内的表,不建议分片,...
    99+
    2022-10-18
  • MySQL分库分表详情
    一、业务场景介绍 假设目前有一个电商系统使用的是MySQL,要设计大数据量存储、高并发、高性能可扩展的方案,数据库中有用户表。用户会非常多,并且要实现高扩展性,你会怎么去设计? OK...
    99+
    2022-11-12
  • SpringBoot实现分库分表
    目录一、statementHandler对象的定义二、prepare方法1、首先prepare方法是用来编译SQL2、那就是之前说的那几个具体的StatementHandler对象3...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作