我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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
);
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

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

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

下载Word文档

猜你喜欢

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

分表通常指:通过应用程序层,将数据划分到不同的表中进行存储对比分区,分区是在服务器层完成的分区算法分表会导致客户端明显的改变,在服务器端出现结构相同的多张表,甚至可以把多张表分到不同的服务器上 以账单表为例:数据库可能会有这样的情况create table b
MySQL优化(6):分表和读写分离
2019-09-15

MySQL INSERT锁与数据库读写分离优化

在MySQL中,INSERT操作会涉及到行级锁和表级锁。当使用INSERT语句向某个表中插入数据时,会对表或者索引进行加锁,以确保数据的一致性和完整性。在插入大量数据时,可能会出现锁竞争和性能瓶颈的情况。为了优化数据库的性能,可以考虑使用
MySQL INSERT锁与数据库读写分离优化
2024-08-19

MySQL-mycat读写分离

Mycat 需要安装JDK 1.7 或者以上版本第一步:下载jdk-8u131-linux-x64.tar.gz文件 http://haixi.sfkcn.com:8080/201704/tools/jdk-linux-x64.tar.gz第二步:新建/usr
MySQL-mycat读写分离
2021-04-03

mysql如何读写分离

mysql 读写分离是一种数据库架构,将数据库分为主库和从库,主库负责写入操作,从库负责读操作,以降低主库负载和提高并发读能力。实现 mysql 读写分离需要:搭建主从复制环境、修改应用程序配置、使用代理或中间件。读写分离的优势包括:降低主
mysql如何读写分离
2024-04-14

mysql读写分离原理

mysql 读写分离通过将读取和写入操作分离到不同的服务器组来提高性能和可用性,包括主服务器处理写入操作,从服务器处理读取操作,这可以减轻主服务器负载,提高写入性能,确保读取持续可用,增强可扩展性,降低成本。MySQL 读写分离原理MyS
mysql读写分离原理
2024-08-02

MySQL/MariaDB读写分离配置

实现数据库读写分离技术是有很多方法的,在这里我就用一个比较简单的mysql-proxy这个中间件来实现数据库的读写分离; 使用mysql-proxy实现mysql的读写分离,mysql-proxy实际上是作为后端mysql主从服务器的代理,它直接接受客户端的请
MySQL/MariaDB读写分离配置
2021-01-12

Oracle Index与数据库的读写分离优化

Oracle Index是数据库中一种重要的数据结构,用于加快数据库的查询速度。通过创建合适的Index,可以大大减少查询的时间,提高数据库的性能。但是在实际应用中,Index也会带来一些问题,比如Index的更新会增加写操作的开销。为了解
Oracle Index与数据库的读写分离优化
2024-08-14

编程热搜

目录