热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

17.sqlserver数据库使用规则、二八原则、数据库查询集群数据库读写分离多种实现、数据库配置读写分离(by朝夕)

Database课程目标环境准备:一.二八原则二.数据库读写分离好处:绝大部分的企业内部应用,可能不需要上图那么庞大的架构,

Database

  • 课程目标
  • 环境准备:
  • 一.二八原则
  • 二.数据库读写分离
    • 好处:
    • 绝大部分的企业内部应用,可能不需要上图那么庞大的架构,一台主数据库服务器和一台查询服务器通常能满足读写分离的要求。而且应用程序调整起来非常方便:
    • 适用场景:
  • 三.SqlServer多种读写分离
    • 快照发布:
    • 事务发布:
    • 对等发布:
    • 合并发布:
    • 读写分离以后,其实是把查询动作分摊到不同的数据库中去了;提高性能
  • 四.分库
  • 五.分表
  • 六.分库分表注意事项


课程目标

1 数据库使用规则
2 二八原则
3 数据库查询集群–数据库读写分离多种实现
4.数据库配置读写分离

环境准备:

Microsoft SQL Server Management Studio 18 2012以上;

一.二八原则
  1. 通常,我们的(添加、修改、删除)操作,在数据库中,只占有百分之二十的一部分。而剩下百分之80的操作,都是进行查询。
  2. 我们根据这个原则,可以对我们数据库进行读写分离。

二.数据库读写分离

好处:


  1. 数据是网站的生命,读写分离通过主从备份数据,保证了系统的冗余,保护了珍贵的数据。 通过将
    “读”操作和“写”操作分离到不同的数据库服务器上,降低对主服务器的CPU、内存、存储、网络资源的争
    用;
  2. 主服务器的增删改进行时,不影响查询服务器的查询,降低阻塞的发生,提高了并发性;
  3. 在应用程序提交了报表请求、不合理的查询请求时,不会导致长时间的锁表;
  4. 建立容灾副本甚至实现异地容灾,在发生灾难时,可以减少数据的损失;

绝大部分的企业内部应用,可能不需要上图那么庞大的架构,一台主数据库服务器和一台查询服务器通常能满足读写分离的要求。而且应用程序调整起来非常方便:


  1. 在应用程序的配置文件中设置两个数据库连接字符串,一个指向主服务器,一个指向查询服务器;
  2. 增删改或者实时性查询使用指向主服务器的连接字符串;
  3. 允许非实时的查询及报表请求使用指向查询服务器的连接字符串。

适用场景:


  1. 网站初期想要缓解数据负载最简单可行的方案。
  2. 服务器面对的是读远大于写的场景,并且业务能够允许时间上一些延迟。
    主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;
    二是可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能;
    当一个从服务器连接主服务器时,它通知主服务器从日志中读取最后一次成功更新的位置。
    从服务器接收从那时起发生的任何更新,并在本机上执行相同的更新。然后封锁并等待主服务器通知新
    的更新。
    从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新

三.SqlServer多种读写分离

快照发布:

介绍:数据库快照就想象成相机就可以了,就是将数据库拍下来,拍摄个一模一样的。做一次备份
优势:类似一个人成长,有很多张照片,例如你每年拍一张,那么以后查看起来是非常方便的。
劣势:这个无法做到实时备份,只能是某一刻的一个备份,很多需求会不满足,而且如果数据量非常
大,那么对性能也有一定的的消耗

事务发布:

介绍:也是两个库,一个主库一个从库,主从库之间是一种发布订阅的关系,就是我修改了通知你,
或者你时时来读取我,看看我是否修改了,就这么简单
优势:他是读取的日志文件,根据日志文件达到同步的,所以基本可以满足同步,并且我粗略的测试
了一下,除非服务器堵塞,否则性能还是很高的,百万数据同步几秒钟就可以完成,足见其效率了。
劣势:发布者和订阅者之间并非实时同步的,所以经常会有延时,这个就属于不定性因素的,而且消
耗>数据库镜像 .
详细操作地址
https://blog.csdn.net/hello_mr_anan/article/details/118093045

对等发布:

介绍:

合并发布:

介绍:合并发布是相当于两台都是主服务器,都可以对数据进行更新修改等操作,然后定时将发布服
务器上的内容与订阅服务器上的内容进行合并,并根据配置保留相应内容,此种很少用。
图片总结:
type

读写分离以后,其实是把查询动作分摊到不同的数据库中去了;提高性能

本质是通过增加硬件+数据的读写法分离机制;如何通过纯技术手段来解决数据库性能瓶颈呢?

四.分库

场景:应用于海量数据;数据一旦太多,基本上性能优化的套路都失效;
把数据分摊:把数据库切分:

  1. 垂直拆分:按照需求拆分:电商系统----一个数据====多个数据库,每个数据库负责一个模块;拆分以后,每个数据库的数量减少了,数据操作来说提高性能;
    特点:每个数据库的表结构都不同;
    局限:拆分后关联查询复杂----建议如果遇到关联查询比较多,就不要拆开—根据具体场景来做;
  2. 水平拆分
    特点:每个数据库的结构都一致,数据不一致;(区域/时间/类别/随机(定义一套规则----存入数据的时
    候确定是哪个数据库,查询数据的时候,还是通过这个规则确定是哪个数据))
    劣势:数据操作的时候,不方便,需要程序来支持;

五.分表
  1. 垂直分:
    表和表示一对一的关系;
    一个表存在字段,用多个表成列(建议大家把常用的字段分在一个表);
    文章表:20字段+很长的文章内容字段==垂直拆分,20个字段一个表,文章内容+外键一个表
  2. 水平分:
    表结构一致,数据不一致;
    拆分建议:时间/类别/区域

六.分库分表注意事项
  1. 程序需要支持;
    建议:大家一定要按照场景需求来,
    房产----城市拆分
    电商:时间来拆分
    追求平均:保存数据的时候,如果有ID ,如果来十个表存储;通过Id/10 取余数确定到哪个表,定
    义规则,保存需要按照规则保存,查询自然要要按照规则查询;
  2. 更多的也是建议,如果大家有自己的想法,有更好的方案,也欢迎大家提出来
  3. 如果频繁使用,频繁关联的内容,尽量聚在一起个表(一个数据库)

推荐阅读
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 使用SQL命令创建数据库及其语句解析
    使用 `CREATE DATABASE` 命令可以创建一个新的数据库,并指定其名称。该 SQL 语句用于初始化数据库结构,执行后将生成一个新的数据库实例,用于存储相关的数据对象和表。在本例中,通过执行 `CREATE DATABASE 课程管理1`,系统将创建一个名为“课程管理1”的数据库,以便后续的数据管理和操作。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • MySQL数据库安装图文教程
    本文详细介绍了MySQL数据库的安装步骤。首先,用户需要打开已下载的MySQL安装文件,例如 `mysql-5.5.40-win32.msi`,并双击运行。接下来,在安装向导中选择安装类型,通常推荐选择“典型”安装选项,以确保大多数常用功能都能被正确安装。此外,文章还提供了详细的图文说明,帮助用户顺利完成整个安装过程,确保数据库系统能够稳定运行。 ... [详细]
author-avatar
DZ2017
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有