返回顶部
首页 > 资讯 > 数据库 >SQL中怎么实现分库分表
  • 614
分享到

SQL中怎么实现分库分表

2024-04-02 19:04:59 614人浏览 独家记忆
摘要

本篇文章为大家展示了sql中怎么实现分库分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SQL怎样进行分库分表  方案1:  通过提升服务器硬件能力来提高数据处理

本篇文章为大家展示了sql中怎么实现分库分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

SQL怎样进行分库分表

  方案1:

  通过提升服务器硬件能力来提高数据处理能力,比如增加存储容量、CPU等,这种方案成本很高,并且如果瓶颈在

  Mysql本身那么提高硬件也是有很的。

  方案2:

  把数据分散在不同的数据库中,使得单一数据库的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的,如下图:将电商数据库拆分为若干独立的数据库,并且对于大表也拆分为若干小表,通过这种数据库拆分的方法来解决数据库的性能问题。

  分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成,将数据大表分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。

分库分表的方式

  分库分表包括分库和分表两个部分,在生产中通常包括:垂直分库、水平分库、垂直分表、水平分表四种方式。

  垂直分表

  下边通过一个商品查询的案例来垂直分表:

  通常在商品列表中是不是显示商品详情信息的。

  用户在浏览商品列表时,只有对某商品感兴趣时才会查看商品的详细描述。因此,商品信息中商品描述字段访问频次较低,且该字段存储占用空间较大,访问单个数据io时间较长;商品信息中商品名称、商品图片、商品价格等其他字段数据访问频次较高。

  由于这两种数据的特性不一样,因此他考虑将商品信息表拆分如下:

  将访问频次低的商品描述信息单独存放在一张表中,访问频次较高的商品基本信息单独放在一张表中。

  商品列表可采用以下sql:

  SELECTp.*,r.[地理区域名称],s.[店铺名称],s.[信誉]FROM[商品信息]p

  LEFTJOIN[地理区域]rONp.[产地]=r.[地理区域编码]LEFTJOIN[店铺信息]sONp.id=s.[所属店铺]WHERE...ORDERBY...LIMIT...

  需要获取商品描述时,再通过以下sql获取:

  SELECT*

  FROM[商品描述]WHERE[商品ID]=?

  小明进行的这一步优化,就叫垂直分表。

  垂直分表定义:将一个表按照字段分成多表,每个表存储其中一部分字段。

  它带来的提升是:

  1.为了避免IO争抢并减少表的几率,查看详情的用户与商品信息浏览互不影响。

  2.充分发挥热门数据的操作效率,商品信息的操作的高效率不会被商品描述的低效率所拖累。

  注意:

  为什么大字段IO效率低:

  第一是由于数据量本身大,需要更长的读取时间;

  第二是跨页,页是数据库存储单位,很多查找及定位操作都是以页为单位,单页内的数据行越多数据库整体性能越好,而大字段占用空间大,单页内存储行数少,因此IO效率较低。

  第三,数据库以行为单位将数据加载到内存中,这样表中字段长度较短且访问频率较高,内存能加载更多的数据,命中率更高,减少来磁盘IO,从而提升来数据库性能。

  一般来说,某业务实体中的各个数据项的访问频次是不一样的,部分数据项可能是占用存储空间比较大的BLOB或是TEXT。例如上例中的商品描述。所以,当表数据量很大时,可以将表按字段切开,将热门字段、冷门字段分开放置在不同库中,这些库可以放在不同的存储设置上,避免IO争抢。垂直切分带来的性能提升主要集中在热门数据的操作效率上,而且磁盘争用情况减少。

  通常我们按以下原则进行垂直拆分:

  1、把不常用的字段单独放在一张表;

  2、把text,blob等大字段拆分出来放在附表中;

  3、经常组合查询的列放在一张表中;

上述内容就是SQL中怎么实现分库分表,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: SQL中怎么实现分库分表

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

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

猜你喜欢
  • SQL中怎么实现分库分表
    本篇文章为大家展示了SQL中怎么实现分库分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SQL怎样进行分库分表  方案1:  通过提升服务器硬件能力来提高数据处理...
    99+
    2024-04-02
  • MySQL中怎么实现分库分表
    今天就跟大家聊聊有关MySQL中怎么实现分库分表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Mysql分库分表方案1.为什么要分表:当一张表的数据...
    99+
    2024-04-02
  • MyCat分库分表中怎么实现ER分片
    这篇文章主要介绍“MyCat分库分表中怎么实现ER分片”,在日常操作中,相信很多人在MyCat分库分表中怎么实现ER分片问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyCat分库分表中怎么实现ER分片”的疑...
    99+
    2023-06-01
  • MyCat怎么实现分库分表
    本篇内容介绍了“MyCat怎么实现分库分表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!项目环境: 192.168.8.30 &n...
    99+
    2023-06-01
  • SQL分库分表
    历史背景 MySql性能瓶颈 1.    表数据量过大 2.    Sql查询过于复杂 3.    Sql没走索引 4.    数据库服务器性能低 解决方案 阿里开发手册:单表行数超过500W或者单表容量超过2G 数据库分库分表 分...
    99+
    2017-03-08
    SQL分库分表
  • 怎么在MySQL数据库中实现分表分库操作
    这篇文章将为大家详细讲解有关怎么在MySQL数据库中实现分表分库操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。分表分库垂直拆分垂直拆分就是要把表按模块划...
    99+
    2024-04-02
  • 怎么在springboot中使用shardingjdbc实现分库分表
    这篇文章给大家介绍怎么在springboot中使用shardingjdbc实现分库分表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、概览1.1 简介ShardingSphere-JDBC定位为轻量级 Java 框架...
    99+
    2023-06-15
  • Mycat中怎么实现MySQL单库分表
    Mycat中怎么实现MySQL单库分表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、Mycat安装部署安装环境Linux   目前只有1.6.5版本支持单库...
    99+
    2023-06-19
  • SQL server 2005怎么实现表分区
    本篇内容介绍了“SQL server 2005怎么实现表分区”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • SpringBoot实现分库分表
    目录一、statementHandler对象的定义二、prepare方法1、首先prepare方法是用来编译SQL2、那就是之前说的那几个具体的StatementHandler对象3...
    99+
    2024-04-02
  • PL/SQL中的分区表与分区索引怎么实现
    在 PL/SQL 中实现分区表和分区索引,可以通过以下步骤: 创建分区表:在创建表的时候,使用 PARTITION BY 子句指定...
    99+
    2024-05-08
    PL/SQL
  • MySQL中如何实现分库分表
    本篇文章为大家展示了MySQL中如何实现分库分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、    背景介绍1.大数据...
    99+
    2024-04-02
  • 数据库中如何实现分库分表
    这篇文章将为大家详细讲解有关数据库中如何实现分库分表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 分片是解决数据库存储容量限制的直接途径。分片包括垂直分片与水平分片两...
    99+
    2024-04-02
  • Mysql数据库中的分库分表怎么利用MyBatis来实现
    本篇文章给大家分享的是有关Mysql数据库中的分库分表怎么利用MyBatis来实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MyBatis实现分表最简单步骤我们模拟用户表数...
    99+
    2023-05-31
    mybatis mysql
  • sql server中怎么实现分页
    这篇文章将为大家详细讲解有关sql server中怎么实现分页,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体如下:declare @index...
    99+
    2024-04-02
  • Java如何实现分库分表
    一、为啥要分库分表 在大型互联网系统中,大部分都会选择mysql作为业务数据存储。一般来说,mysql单表行数超过500万行或者单表容量超过2GB,查询效率就会随着数据量的增长而下降。这个时候,就需要对表进行拆分。 那么应该怎么拆分呢? 通...
    99+
    2023-08-31
    java 开发语言
  • mysql分库分表如何实现
    MySQL分库分表可以通过以下几个步骤实现: 水平分库:将原始的单个数据库分成多个独立的数据库。每个数据库可以独立运行在不同的服务...
    99+
    2023-10-27
    mysql
  • 怎么在MySQL中实现分表与分区
    这篇文章将为大家详细讲解有关怎么在MySQL中实现分表与分区,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。分表单表数据量太大时,会严重影响sql执行的性能。一般单表到达几百万的时候,性能就会...
    99+
    2023-06-14
  • MyCat怎么分库分表
    本篇内容介绍了“MyCat怎么分库分表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!项目环境: ...
    99+
    2024-04-02
  • MySQL中怎么实现分区表
    MySQL中怎么实现分区表,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。   MySQL分区的建立 MySQL可以建立四种分区...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作