简单理解分表分库及其缺点[亲测有效]

简单理解分表分库及其缺点[亲测有效]当我们系统达到瓶颈时候,最影响系统性能的永远是最底层的。例如数据库,所以数据库优化相对重要,当数据库性能由于数据量过大导致达到瓶颈的时候,我们会选择对数据库拆分或者对表拆分,也就是分表分库。分表分库…

简单理解分表分库及其缺点

当我们系统达到瓶颈时候,最影响系统性能的永远是最底层的。例如数据库,所以数据库优化相对重要,当数据库性能由于数据量过大导致达到瓶颈的时候,我们会选择对数据库拆分或者对表拆分,也就是分表分库。分表分库也分为2种拆分方式:水平拆分、垂直拆分

1.水平分表 就是把一个表拆分成多个字段相同的表,把数据分开保存到不同的表上。
    例如一个user表有一亿用户,如果只用一张表储存查询的时候会很慢
    但是如果分成10个表来储存这些用户,则每个表只需要保存1000W数据,这样效率就会大大提高
    那如果分成10个表就需要制定相应的储存规则,例如通过 user 表的 userName字段进行hash取模来存放哪个表

简单理解分表分库及其缺点[亲测有效]

简单理解分表分库及其缺点[亲测有效]

2.垂直分表  如果一个表的字段过多及储存的空间较大则可以进行垂直拆分,就是把一个表的字段拆分开保存。
    例如把user再拆分一个user_detail表,各个表保存不同的字段,然后使用ID关联,避免字段过多导致查询慢

简单理解分表分库及其缺点[亲测有效]

3.水平分库  如果一个数据库实例承受不了目前的压力,则可以使用多个数据库实例,数据库直接存在相同的表。
    因为数据库表都是相同的,与水平分表类似,通过规则把数据保存到不同的数据库

简单理解分表分库及其缺点[亲测有效]
4.垂直分库  现在程序都是分布式或者模块化,一个服务器可能只负责某部分业务,数据库也可以使用类似的操作。
    把不同业务的表分开储存到不同的数据库上
    例如一个电商项目,把订单类的表与商品类的表分开到不同的数据库储存

简单理解分表分库及其缺点[亲测有效]

 

分表分库之后带来的问题:
    1.数据唯一性:即使同库分表或是分库分表都需要解决的一个问题就是ID唯一,保证多个表之间的数据ID是唯一的。
         可以自定义主键生成器,主键生成规则最好符合数据库引擎的一些特性,比较可取的就是通过 时间+机器号+随机数,时间放到最前面是保证数值在递增

    2.横向扩展:上面举例使用的是通过取模方式定位数据储存的库表,如果最开始取模是按10个表取,当我需要再加2个表则变成按12个表取模,这样新数据不会有问题,但是查询旧数据就存在问题。
        当数据库需要进行拆分的时候,或多或少都需要对数据做一定迁移,把旧数据重新分配到不同表中

    3.部分表无法通过join关联:例如把订单表与商品表拆开储存到不同的数据库,如果需要根据订单查询商品信息,则难以通过join关联查询。
        如果可以冗余某些字段避免过多查询
        可以使用FEDERATED引擎远程关联

    4.数据库事务:还是使用订单表与商品表拆开储存到不同的数据库的例子,一个下单操作需要在订单类表添加订单信息,同时需要在商品类表扣除库存之类的,这之间的操作如何保证原子性。
        可以使用某些分布式事务的中间件解决

    5.维护成本更高:当单库单表变成多库多表,其中的关系更复杂,维护成本更高

 

分表分库的优点:
    分表分库的目的永远只有一个: 因为数据库数据量过大导致效率低下,通过把数据拆分提高数据访问性能
    

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6297.html

(0)
上一篇 2023-04-13
下一篇 2023-04-13

相关推荐

  • Python dict_keys详解

    Python dict_keys详解在Python中,字典(dict)是一个非常重要的数据结构,它可以用于存储各种类型的数据,并且以键值对的形式进行操作。当我们创建一个字典类型的数据后,可以使用keys()方法来获取所有的键,它会返回一个dict_keys类型的对象。在本篇文章中,我们将从多个方面来详细阐述dict_keys对象的相关知识。

    2024-04-21
    16
  • win10一键重装系统「建议收藏」

    win10一键重装系统「建议收藏」今天小编要给大家介绍的是云骑士装机大师win10一键重装系统,一键系统重装,无需电脑技术,小白在家也可自己完成安装,三步到位,安全简单!一键系统重装,0费用,0丢包,极加速!一起来看看吧。 1第一步…

    2023-04-12
    113
  • 提高Python编程效率的一些技巧

    提高Python编程效率的一些技巧Python是一种易学易用又功能强大的编程语言,吸引了越来越多的程序员。在Python编程中,人们不仅注重代码的正确性和简洁性,也非常关注代码的效率。在本文中,我将分享一些技巧,帮助你提高Python编程效率。

    2024-03-18
    29
  • 03JDBC_ojdbc14和ojdbc8

    03JDBC_ojdbc14和ojdbc8JDBC JDBC是Java访问数据库的标准规范,具体操作具体由数据库厂商实现,相当于一个数据库驱动。我们只需要会JDBC接口中的方法即可,数据库驱动(jar包)由数据库厂商提供。 导入驱动jar包…

    2023-04-01
    106
  • Python Numbers: 数学计算的基本工具

    Python Numbers: 数学计算的基本工具Python是一种广泛使用的高级编程语言,因为其简单易学和功能强大而受到广泛欢迎。Python支持许多类型的数据,包括数字、字符串、列表和元组等。Python的数字类型包括整数、浮点数和复数。 在这篇文章中,我们将主要探讨Python数字类型的用法和功能。

    2024-02-18
    41
  • Pgpool-II常用命令[通俗易懂]

    Pgpool-II常用命令[通俗易懂]启动pgpool:如果加-D,表示忽略上一次每个节点的状态 pgpool -n -d -D 从虚拟IP连接数据库: psql -h 192.168.119.200 -p 9999 查看postgre…

    2022-12-15
    98
  • 库表分析-sql语句

    库表分析-sql语句 /*Navicat MySQL Data Transfer Source Server : 本地连接Source Server Version : 80015Source Host : lo…

    2023-03-21
    104
  • 大数据赋能企业数字化转型_数字化转型对企业管理模式的影响

    大数据赋能企业数字化转型_数字化转型对企业管理模式的影响原文链接:数据资产为王,解析企业数字化转型与数据资产管理的关系 视频回顾:点击这里 课件获取:点击这里 一、数据资产背景介绍 随着企业数字化转型的深入,数据体量爆炸式增长,如何控制数据生产成本、发现有

    2023-05-24
    102

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注