文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2019-09-15 09:15

关注

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

分表

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

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

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

 

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

create table bill201710(
id int unsigned auto_increment primary key,
user_ud int unsigned,
amount decimal(10,2),
date int
);
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地表

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层的服务,并且每个服务调用不同的数据源即可解决

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯