MySQL优化(6):分表和读写分离[通俗易懂]

MySQL优化(6):分表和读写分离[通俗易懂]分表 通常指:通过应用程序层,将数据划分到不同的表中进行存储 对比分区,分区是在服务器层完成的分区算法 分表会导致客户端明显的改变,在服务器端出现结构相同的多张表,甚至可以把多张表分到不同的服务器上

MySQL优化(6):分表和读写分离

分表

通常指:通过应用程序层,将数据划分到不同的表中进行存储

对比分区,分区是在服务器层完成的分区算法

分表会导致客户端明显的改变,在服务器端出现结构相同的多张表,甚至可以把多张表分到不同的服务器上

 

以账单表为例:数据库可能会有这样的情况

create table bill201710(
id int unsigned auto_increment primary key,
user_ud int unsigned,
amount decimal(10,2),
date int
);

代码100分

代码100分create table bill201711(
id int unsigned auto_increment primary key,
user_ud int unsigned,
amount decimal(10,2),
date int
);

create table bill201712(
id int unsigned auto_increment primary key,
user_ud int unsigned,
amount decimal(10,2),
date int
);

 

而是又Java等代码进行处理,区分应该选择哪一张表,根据传递的时间参数进行划分

实际中,有一个比较麻烦的问题,主键ID的问题,理论上ID是不可以重复的

解决方案:

(1)代码层面,手动做一个自增ID,不稳妥

(2)利用数据库,新建一张独立地表,一张生成ID地表

代码100分create table billid(
id int unsigned auto_increment primary key
)

在插入真正的账单之前,先去ID表取一个ID,这种方式也是常用的方式

 

分表的原因:

(1)为数据库减压

(2)数据库分区算法的局限性,也是最重要的原因

(3)数据的支持不完善,老版本mysql不支持分区

 

分区和分表都称之为水平分割,于是有了垂直分割:

 

垂直分割:

每个表记录数量一直,但是字段不一致

这种方式其实不是太推荐的

无论垂直还是水平分割,本质都是把大的单位划分为小的单位

 

横向扩展MySQL服务器:

由多台MySQL服务器提供数据存储服务器

横向扩展是从根本上提升数据库性能的手段,受限于单台计算机的性能,使用多台计算机完成同一个服务的支持

比较典型的概念是:读写分离,负载均衡

 

读写分离:

由一部分MySQL服务器提供读操作:SELECT

另一些MySQL服务器提供写操作:UPDATE,DELETE,INSERT

 

以前有写过在Java的SSM中如何配置读写分离:

https://www.cnblogs.com/xuyiqing/p/10648103.html

 

以及在Windows中配置MySQL的主从同步:

https://www.cnblogs.com/xuyiqing/p/10647133.html

 

负载均衡:

当存在多台服务器提供一个任务时,需要从其中选择某台完成当前任务,就是选择负载均衡

负载均衡技术有很多,不如Nginx,Zuul等等,不过和MySQL不在一个层次

在mysql架构中,往往采用的是一写多读的架构,这里的多台读服务器就需要做负载均衡

典型的负载均衡算法有:平均轮询,加权轮询,负载分配

负载均衡的实现可以用中间件,也可以在Java代码中实现

比如SpringBoot配置多个数据源,SpringCloud多谢几个DAO层的服务,并且每个服务调用不同的数据源即可解决

 

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

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

相关推荐

  • sysprocesses表_syscolumns

    sysprocesses表_syscolumnssysdatabases表 sysdatabases是在master数据库中的表,是一个只读的表,里面包含所有数据库的信息 在创建数据库是进行存在性检测 use master go if exists

    2023-03-04
    149
  • Cobar提出的一种在分库场景下对Order By / Limit 的优化「终于解决」

    Cobar提出的一种在分库场景下对Order By / Limit 的优化「终于解决」搜索关注微信公众号"捉虫大师",后端技术分享,架构设计、性能优化、源码阅读、问题排查、踩坑实践。 本文已收录 https://github.com/lkxiaolou/lkxiao

    2023-04-24
    156
  • HMS核心服务让应用更智慧

    HMS核心服务让应用更智慧     华为新款旗舰机P40系列全面搭载HMS核心服务为用户带来更智能的应用。作为P40的用户,我想和大家分享一下硬核的HMS核心服务,它为华为P40系列手机用户提供多项基础服务,而HMS核心服务…

    2023-02-21
    156
  • Python工程师的职责与技能

    Python工程师的职责与技能Python是一种高级编程语言,被广泛应用于Web应用程序开发、科学计算、数据分析和人工智能等领域。Python工程师是一种非常受欢迎的职业,因为Python具有简单易学的特点,使得工程师们可以快速开发出高效可靠的软件程序。在这篇文章中,我们将介绍Python工程师的职责与技能,帮助读者更好地了解这一职业以及如何成为一名优秀的Python工程师。

    2024-06-13
    52
  • Linux环境下安装Redis[亲测有效]

    Linux环境下安装Redis[亲测有效]1.Linux环境下安装Redis (1)下载Redis安装包,并解压到安装路径【没有wget就使用yum install wget安装】 [root@localhost ~]#wget http:/

    2023-02-22
    140
  • oracle中wm_concat「终于解决」

    oracle中wm_concat「终于解决」oracle中wm_concat

    2023-02-07
    153
  • Hadoop(一)Hadoop核心架构与安装「建议收藏」

    Hadoop(一)Hadoop核心架构与安装「建议收藏」Hadoop是什么 大白话,Hadoop是个存储数据,计算数据的分布式框架。核心组件是HDFS、MapReduce、Yarn。 HDFS:分布式存储 MapReduce:分布式计算 Yarn:调度Ma

    2023-05-14
    157
  • Python DBF库简介

    Python DBF库简介随着大数据时代的到来,数据处理变得越来越重要。DBF文件格式是一种常见的存储表格数据的文件格式,很多系统或软件使用该文件格式进行数据存储与传输。Python DBF库是一款用于读写DBF文件的工具库,为Python程序员提供了一种方便的文件处理方式。本文将结合代码示例,深入介绍Python DBF库的基本概念、使用方法和在实际开发中的应用场景。

    2024-08-11
    30

发表回复

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