Database
- 课程目标
- 环境准备:
- 一.二八原则
- 二.数据库读写分离
- 好处:
- 绝大部分的企业内部应用,可能不需要上图那么庞大的架构,一台主数据库服务器和一台查询服务器通常能满足读写分离的要求。而且应用程序调整起来非常方便:
- 适用场景:
- 三.SqlServer多种读写分离
- 快照发布:
- 事务发布:
- 对等发布:
- 合并发布:
- 读写分离以后,其实是把查询动作分摊到不同的数据库中去了;提高性能
- 四.分库
- 五.分表
- 六.分库分表注意事项
课程目标
1 数据库使用规则
2 二八原则
3 数据库查询集群–数据库读写分离多种实现
4.数据库配置读写分离
环境准备:
Microsoft SQL Server Management Studio 18 2012以上;
一.二八原则
- 通常,我们的(添加、修改、删除)操作,在数据库中,只占有百分之二十的一部分。而剩下百分之80的操作,都是进行查询。
- 我们根据这个原则,可以对我们数据库进行读写分离。
二.数据库读写分离
好处:
- 数据是网站的生命,读写分离通过主从备份数据,保证了系统的冗余,保护了珍贵的数据。 通过将
“读”操作和“写”操作分离到不同的数据库服务器上,降低对主服务器的CPU、内存、存储、网络资源的争
用; - 主服务器的增删改进行时,不影响查询服务器的查询,降低阻塞的发生,提高了并发性;
- 在应用程序提交了报表请求、不合理的查询请求时,不会导致长时间的锁表;
- 建立容灾副本甚至实现异地容灾,在发生灾难时,可以减少数据的损失;
绝大部分的企业内部应用,可能不需要上图那么庞大的架构,一台主数据库服务器和一台查询服务器通常能满足读写分离的要求。而且应用程序调整起来非常方便:
- 在应用程序的配置文件中设置两个数据库连接字符串,一个指向主服务器,一个指向查询服务器;
- 增删改或者实时性查询使用指向主服务器的连接字符串;
- 允许非实时的查询及报表请求使用指向查询服务器的连接字符串。
适用场景:
- 网站初期想要缓解数据负载最简单可行的方案。
- 服务器面对的是读远大于写的场景,并且业务能够允许时间上一些延迟。
主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;
二是可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能;
当一个从服务器连接主服务器时,它通知主服务器从日志中读取最后一次成功更新的位置。
从服务器接收从那时起发生的任何更新,并在本机上执行相同的更新。然后封锁并等待主服务器通知新
的更新。
从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新
三.SqlServer多种读写分离
快照发布:
介绍:数据库快照就想象成相机就可以了,就是将数据库拍下来,拍摄个一模一样的。做一次备份
优势:类似一个人成长,有很多张照片,例如你每年拍一张,那么以后查看起来是非常方便的。
劣势:这个无法做到实时备份,只能是某一刻的一个备份,很多需求会不满足,而且如果数据量非常
大,那么对性能也有一定的的消耗
事务发布:
介绍:也是两个库,一个主库一个从库,主从库之间是一种发布订阅的关系,就是我修改了通知你,
或者你时时来读取我,看看我是否修改了,就这么简单
优势:他是读取的日志文件,根据日志文件达到同步的,所以基本可以满足同步,并且我粗略的测试
了一下,除非服务器堵塞,否则性能还是很高的,百万数据同步几秒钟就可以完成,足见其效率了。
劣势:发布者和订阅者之间并非实时同步的,所以经常会有延时,这个就属于不定性因素的,而且消
耗>数据库镜像 .
详细操作地址
https://blog.csdn.net/hello_mr_anan/article/details/118093045
对等发布:
介绍:
合并发布:
介绍:合并发布是相当于两台都是主服务器,都可以对数据进行更新修改等操作,然后定时将发布服
务器上的内容与订阅服务器上的内容进行合并,并根据配置保留相应内容,此种很少用。
图片总结:
读写分离以后,其实是把查询动作分摊到不同的数据库中去了;提高性能
本质是通过增加硬件+数据的读写法分离机制;如何通过纯技术手段来解决数据库性能瓶颈呢?
四.分库
场景:应用于海量数据;数据一旦太多,基本上性能优化的套路都失效;
把数据分摊:把数据库切分:
- 垂直拆分:按照需求拆分:电商系统----一个数据====多个数据库,每个数据库负责一个模块;拆分以后,每个数据库的数量减少了,数据操作来说提高性能;
特点:每个数据库的表结构都不同;
局限:拆分后关联查询复杂----建议如果遇到关联查询比较多,就不要拆开—根据具体场景来做; - 水平拆分
特点:每个数据库的结构都一致,数据不一致;(区域/时间/类别/随机(定义一套规则----存入数据的时
候确定是哪个数据库,查询数据的时候,还是通过这个规则确定是哪个数据))
劣势:数据操作的时候,不方便,需要程序来支持;
五.分表
- 垂直分:
表和表示一对一的关系;
一个表存在字段,用多个表成列(建议大家把常用的字段分在一个表);
文章表:20字段+很长的文章内容字段==垂直拆分,20个字段一个表,文章内容+外键一个表 - 水平分:
表结构一致,数据不一致;
拆分建议:时间/类别/区域
六.分库分表注意事项
- 程序需要支持;
建议:大家一定要按照场景需求来,
房产----城市拆分
电商:时间来拆分
追求平均:保存数据的时候,如果有ID ,如果来十个表存储;通过Id/10 取余数确定到哪个表,定
义规则,保存需要按照规则保存,查询自然要要按照规则查询; - 更多的也是建议,如果大家有自己的想法,有更好的方案,也欢迎大家提出来
- 如果频繁使用,频繁关联的内容,尽量聚在一起个表(一个数据库)