性能测试之数据库架构设计

数据库架构设计

数据库性能测试的目的与范围

主要内容:

  • 数据库主从同步的工作原理
  • 数据库分库分表的设计方法

当数据库存有大量数据的时候,就要考虑分库分表,因为单表存储数据量过大的时候,数据的操作,写入,更新速度都是非常慢的

目的

发现数据库相关的所有性能瓶颈

范围

  • Sql语句-慢查询等
  • 资源使用率
  • 数据库架构的合理性
  • 数据库的性能指标

数据库常用架构

一主多从

在这里插入图片描述

就是我们常说的读写分离
Master主要复制数据的写入,其实是写入和更新,所有对磁盘产生影响的数据,为什么没有说删除,因为在项目实际应用中,基本不会有物理删除,一般来说会用update delete,表里边设计一个deleted字段,来标记是否删除,所以主库主要承担写入和更新操作,通过主从复制,把数据复制到所有的从库上,从库成都那的工作就是读取数据,就是我们说的select,从这我们也就能看出主从分离的优点
优点-读写分离分担了我们单台服务器的压力情况,因为所有的读操作都分担到不通的服务器上Master只承担了数据写入和更新的操作,那我们从这里便看到,一主多从的确定缺点,就是可能存在-主从延时

主从延时
当我们主数据库Master上进行了数据写入,由于多种原因,比如说网络情况,延迟10秒,那这10秒在从库上是没有在主库上写入的这条数据的,那么此时发生了读的操作,用户就看不到写入的数据,有时候在某些网站上会碰到这种情况,刚提交的订单,却查找不到,过一会就有了,其实这就可能发生了主从延时,这就是一主多从的缺点

双机热备

在这里插入图片描述

双机热备避免了主从延时的这种情况,其实就是读写都在一台服务器上,这时候就没有了这些延时,KeepAlived下有一个虚拟VIP,这个虚拟vip会指向第一台数据库服务器上,指向这个用户访问的时候,所有的更新,写入,读取的操作,都会在Master上,这就避免了主从延时,数据写入,马上读取,就会有,然后把数据复制到Slave(从库)上,那么双机热备背身自己的缺点是什么呢?恰恰也是一主多从的优点,就是我们在这个服务器上的压力没有被分担,就靠硬件资源网上扛,双机热备的优点除了没有主从延时,还有一个好处就是当我们的Master挂掉之后,马上虚拟VIP就是只项Slave上,这时候这个Slave就会变身Master,它变成了Master后,所有的读写都会在第二胎服务器上,对于前端用户来说是没感觉的

总结

一主多从:优点在于Master和Slave部在多台服务器上,Master负责写入更新,操作与磁盘有关的数据,Slave负责读取数据,这样分担了压力,但是不在同一台服务器上就会出现主从延时的问题,也就是写了,没读到,一会才能读到的问题,还有如果master挂了,那么用户就失去了写的功能,只能读

双机热备:特点是Master和Slave在同一台服务器上,在KeepAlived下有一个虚拟VIP,那么这样优点之一在于解决的一主多从的主从延时问题,其二如果master挂掉,Vip会只项Slave,slave担任master,这样前端用户依然可以读写,无感知,缺点一是在于不能向一主多从那样堕胎服务器分担压力,二是Master挂了,虽然虚拟VIP会指向Slave,但是如果Slave也挂了,不会重新指向Master,且在Slave上写入的数据,Master上并没有,我们必须进行手动的数据恢复

综上我们介绍了两种架构,都有自己的优缺点,需要看实际场景下拉选择架构,如果项目中数据读取非常之多,数据写入没有很多,那么一主多从是比较好的选择,反之,如果写入操作多于读的操作之时双机热备会更好一些,只有使用我们业务的架构才是最后的架构

主从同步的工作原理

  • Master将改变记录到二进制日志(binary log)中
  • Slave将master的binary log events拷贝到它的中继日志(relay log)
  • Slave重做中继日志中的事件,将改变反应它自己的数据

这里多说一个场景,当做mysql数据库性能测试的时候,insert数据和select数据的时候,一定要配好数据源,当生产的架构是什么样的,脚本的对应访问就应该是什么样的

数据库分库分表设计方法

拆分的原因

  • 单表活单库数据量太大
  • 硬件不能升级或无法升级

分录分表方案

业务拆分

在这里插入图片描述

按业务模块来进行拆分,用户单独放在一个数据库上,部署在不同的服务器上,商品的量也很大,单独拿出来,放在另外的服务器上,这样在单台服务器上数据量就没那么大了

垂直拆分

在这里插入图片描述

我们那商品举例,我们有个商品表,里边包含很多商品,床上用品,母婴用品,电子商品,这个商品表已经足够大了,商品非常多,我们把它拆成不同的表,这杨我们单表的字段就少了,意味着单表写入的文件大小小了,数据量小了,写入读取速度就快了

水平拆分-一致性哈西算法

在这里插入图片描述

比如我们用户表单中的用户id,然后我们把用户表拆分成3个表,为什么交水平拆分,就是横着切一下,每个表的字段都一样,用userid对3来进行计算,这个计算方法,我们叫做一致性哈西算法,用户拆成3个表,所有用户必须在这3个表中有包含,用userid取模,拆成几个模几,最后会等于一个数,标志着在那个表里,就去那个表里去取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值