数据库架构设计
数据库架构设计
数据库性能测试的目的:
- 发现数据库相关的所有性能瓶颈
数据库性能测试的范围:
- sql语句-慢查询等
- 资源使用率
- 数据库架构合理性
- 数据库性能指标
数据库的常用架构:
- 一主多从 master(主写)
a) master:主要负责数据的写入,和更新
b) 将数据复制到slave上,从库上主要是读数据(优点实现了读写分离,分担了单台服务器的压力; 缺点可能会存在主从延时)
- 双机热备 keepAlived ->VIP(虚拟ip)->master->复制->slave
a) 写入,更新,读取都在master上,同时将数据复制到slave上
b) 优点防止了延时; 当master挂掉的时候虚拟ip会直接指向salve,slave就变成了master 缺点:没有分担服务器压力,当第二台服务器slave挂掉后VIP不会再指向master;
数据库主从同步的工作原理:
- Master(主数据库)将改变记录到二进制日志中(binary log:就是linux中的一个文件,记录了数据库本身的所有操作)中
- Slave(从数据库)将master的binary log events 拷贝到他的中继日志(relay log)
- Slave (从数据库)重做中继日志中的事件,将改变反应它自己的数据
数据库分库分表的设计方法:
- 1. 拆分的原因:
a) 单表或库数据量太大
b) 硬件不能升级或无法升级
- 2. 分库分表方案:
a) 业务拆分 :用户, 商品, 订单
b) 垂直拆分 :商品: 母婴用品, 床上用品, 电子商品
c) 水平拆分(一致性哈西算法) : userid: 拆分为3个表,分别是userid%3==1; userid%3==2; userid%3==3