• 服务器架构

  1. 一般公司的数据库架构图

首先,主服务器所组成的一个集群中,只存在一个master服务器,也就是只有一个主数据库服务器,没有任何的主从复制的高可用的组件。

也就是说,一旦这个主服务器出现了故障,很难得自动地进行故障切换,我们必须的,从更多的从服务器中选择出一台,数据最新的从服务器,手动的把他提升成主服务器,对这个新主再进行同步,这个操作过程那是相当耗时的,如果在服务器比较多的情况下,完成一次切换可能要耗费半个小时左右的时间;

而且,这么多从服务器,在业务量大的时候呢,对主服务器的网卡容量也是一个挑战。

并发量和同时连接数区别?

并发量:数据库在同一时间所处理的请求的数量;

同时连接数:在一个繁忙的服务服务器中,同一时间可以有上千甚至更多的连接,但是这其中只有一小部分请求在处理,通常大部分出于sleep状态。

  • 对数据库影响的因素

1、超高的QPS和TPS

风险:效率低下的SQL

随着访问量的增长,就会有超高的QPS和TPS的产生,那么这个时候每处理一个sql的时间就尤为重要,在当前的sql版本中,它还不支持多cpu并发运算,也就是说每一个sql只能用到一个CPU,我们通常用QPS和TPS作为sql的处理效率!

QPS:每秒钟处理的查询量。

假如服务器只有一个CPU的情况下:

2、大量的并发和超高的CPU使用率

大量的并发,可能会使我们的这个连接数被占满,同时段超高的CPU使用率,可能会因为CPU资源的耗尽的,而出现宕机;

这里有一个时常被人们混淆的概念,我们刚才也提到过,就是并发量跟连接量这两个概念。

在这里的我们所说的并发量是同一时刻,所需要的数据库服务器所处理的请求的数量,而连接量往往要比并发量,要大的多得多。

现在的系统中,每一个前端服务器ngnix  tomcat apache,都会对数据库建立多个连接。在这众多连接中的通常只有几个是在请求数据库处理,其他的大多数连接都处于sleep状态。

对于数据库来说,所能建立的连接数那是有限的,在MYSQL中这个通常是max_connections这个参数来决定的,这个参数的默认值只有一百,所以在生产服务器,我们要将这个参数改的稍微大一些,但是如果连接数超过了这个参数的限制,其他真正有用的服务器就会连接不上数据库,其他服务器从而出现500错误提示。

3、磁盘IO

4、网卡流量

结构图中的我没看到,这个服务器在双11当天的网卡流量有几次都被跑满了。这时候如果他有新的连接,要查询数据库,会出现无法连接数据库的情况,从而影响正常业务访问,那么我们怎么样做避免这种情况发生?

减少从服务器的数量,因为每一个从服务器都会去主服务器复制日志,从服务器越多网络流量越大;

缓存一定要进行分级,一定要避免前端大量的缓存突然间失效,对数据库流量的冲击;

尽量避免“select *”查询,特别是访问量过多的情况,查询出不必要的列,对于网络流量来说也是一种浪费;

最后我们可以将业务网络和服务器网络进行分离,这样就可以避免由于主从同步或者网络备份作业的影响,影响网络的性能。

5、还有什么会影响数据库性能

首先,

这个其实是相对而言的,对于不同的存储引擎会有不同的限制,目前的InnoDB当然并没有定义表最大行是多少?至少说存储空间允许,我们就将数据放置到mysql数据表中。

-----------------------------------------------------------------------------------------------------

大表对查询的影响

慢查询:很难在一定时间内过滤出所需要的数据

如果数据库数据存在上亿条,然后对其中一个类型进行筛选,那么就会产生大量的磁盘io,同时产生的效率也会很低,降低磁盘效率,产生大量慢查询,严重影响用户体验。

大表对DDL操作的影响

  • 如何处理数据库中的大表

sss另外一种处理大表的方式,这是对大表进行历史历史数据归档,特别是对于那些日志类、订单类业务类型表也可以进行历史数据归档

好处是尽量的减少对前后端业务的影响,因为对于前端来说,表结构并没有什么任何的变化,所以一切的程序,可以正常的使用,只是对于订单表这样的业务表,我们要进行归档,则需要在前端多增加一个,历史性的查询入口,可以说已经归档的历史订单,很少有人会去查询,所以说就算归档表很大,但是对业务的影响也是很轻微的。

归档表可以与现在正使用的表放在不同的服务器上,一方面减少热数据所在服务器表容量,同时也减少了核心服务器查询压力,对于后端来说,已经归档的历史数据,是已经完成相关操作和统计的历史数据,所以对于后端的应用也没有什么影响,但是为了不影响现有的前后端业务逻辑,我们在进行数据归档时,同样也面临归档的难点:

前面我们已经说了,归档的数据是已经不会被使用和很少会使用;比如说订单类,我们可以归档一年前或者一个月前的数据,比如说日之类,我们可以归档一周前的数据。

如果我们要进行归档,就要将数据从现有的表中删除,如果数据量过大,轻则会产生数据的延迟,重则会产生大量的阻塞,影响我们正常的业务访问。

  • 大事物带来的问题

什么是事务?

1、事务是关系型数据库系统区别相对于其他一切基于文件的系统的重要特性之一【对于文件系统中,如果药保证两个文件的一致,而在我们修改完一文件后,系统突然崩溃了,在系统恢复后,就很难保证两个文件的一致,数据库系统中,由于使用了事务,通常在数据库服务器突然间崩溃的时候,我们可以恢复数据库中的数据,其数据还是保持一致性】

2、事务是一组具有原子性的sql语句,或是一个独立的工作单元【这个SQL可以说是一条简单的查询,也可以是一组由多个增删改查的SQL所组成的一组SQL语句的集合,但是这一组SQL是具有原子性的,也就是说,要么全部完成,要么全部失败】

从以上两个原则,事务是要求符合以下特性的:

什么是事务

例子:

第一步是检查理财账户中的余额是否高于2000元?第二步就是从理财账户的余额中减去2000元,第三步在活期存款上增加2000元,如果在执行第二步骤时就崩溃了,如果没有事务原子性会发生什么呢?毫无疑问我们会损失2000元,如果说以上三个步骤在一个事务中完成,在执行第二步骤时系统崩溃了,等待系统恢复后,就会在日志中发现,有没有没提交的事务?这时候就会没有执行完的第二步骤进行回滚,这样就避免了用户的损失。所以,事物的首先特性是具有原子性。

-----------------------------------------------------------------------------------------------------

例子:银行

在转账之前和转账之后,我们的总金额应该不发生变化。转账之前在我们的理财账户中有2000余额,转账之后2000余额,过渡到活期存款中,但是账户的总余额还是2000。

-----------------------------------------------------------------------------------------------------

第三个特性

例子:银行

当我们执行完第二步,在理财账户中减去2000元之后,如果说这个时候另外一个事务,需要对银行理财账户中的余额进行汇总,那时候这个我们能在我们的理财账户中看到我们已经转出的2000块钱,这是由于我们第一个事务减去2000块钱,但是还没有提交,对于第二个事务来说是不可见的,这就是事务的隔离型。

-----------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------

  • 什么是大事物

定义:运行时间比较长,操作的数据比较多的事务

-----------------------------------------------------------------------------------------------------

MySQL 学习篇(一) 到底是什么影响了MYSQL性能相关推荐

  1. Mysql学习篇之---Windows环境下安装 (修改密码)

    Mysql学习篇之---Windows环境下安装 (修改密码) 前言: 自己瞎鼓捣本机上的Mysql,结果导致mysql密码用那个都登录不进去了. 解决方案: 首先把mysql重新删除掉,重新解压了一 ...

  2. MySQL学习笔记——尚硅谷李玉婷经典版MySQL基础笔记(一)

    MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) MySQL学习笔记目录 MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) 一.基础知识 1.MySQL的语法规范 2. ...

  3. MySQL学习篇(一 安装)

    软件版本 MySQL版本:MySQL 8.0.19(我的是免安装版) 下载链接: https://dev.mysql.com/downloads/ Windows版本:Windows 10 专业版 打 ...

  4. 打造扛得住的MySQL数据库架构-第2章 什么影响了MySQL性能

    第2章 什么影响了MySQL性能 1操作系统 2硬件 3配置参数 4服务器系统优化参数配置 5mysql存储引擎的选择 6数据库参数配置:数百个参数优化 7数据库结构设计和SQL语句 造成慢查询 SQ ...

  5. MySQL学习之路(一):Windows平台下MySQL安装、启动、连接

    MySQL安装.启动.连接. 一.MySQL的基本介绍: (更好的阅读体验,请移步我的个人博客) MySQL是一款优秀的关系型数据库系统(数学模型基于关系代数),以其优秀的性能和开放源代码的许可而广泛 ...

  6. Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾

    1.1 数据库简介 数据库,简而言之可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作.所谓"数据库"系以一定方式储存在一起.能予多 ...

  7. Mysql学习总结(13)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  8. solr学习篇(三) solr7.4 连接MySQL数据库

    目录 导入相关jar包 配置连接信息 将数据库导入到solr中 验证是否成功 创建一个Core,创建Core的方法之前已经很详细的讲解过了,如果还是不清楚请参考 solr7.4 安装配置篇: 1.导入 ...

  9. MySQL 学习篇(四)数据库结构设计目的、基本字段类型介绍和实战内容

    目录 数据库优化的目的 数据库结构设计的步骤 数据库设计范式 数据库第一范式 数据库第二范式 数据库第三范式 数据库设计的目的 实战 需求说明 需求分析及逻辑设计 需求分析及逻辑设计-反范式化设计 反 ...

最新文章

  1. 智能车竞赛技术报告 | 智能车视觉 - 宜宾学院- 平头哥1组
  2. python语言介绍-00-python语言介绍
  3. 《Python Cookbook(第3版)中文版》——1.9 在两个字典中寻找相同点
  4. Kotlin实战指南十九:use 函数魔法
  5. 【拔刀吧少年】之awk文本和数据处理编程语言
  6. UVa 10375 - Choose and divide(唯一分解定理)
  7. SVM和感知机的区别(转载+自己笔记)
  8. java jpa saveall方法优化_JPA批量插入(saveAll)
  9. linux用户一个用户只能一个用户组,为什么linux用户可以属于多个用户组,文件只能属于一个用户组?...
  10. npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead.
  11. 高级编程技术,第三周
  12. 巨潮资讯网-多层次资本市场信息披露平台
  13. 红酒百科知识(二)_manok_新浪博客
  14. 2021-09-15如何把一个字符串的大小写取反(大写变小写小写变大写),例如 ’AbC‘ 变成 ‘aBc‘
  15. 虚拟机上部署Envoy Gateway:(一)创建虚拟机
  16. 莫纳什大学计算机申请案例,莫纳什大学计算机系统工程学士申请.pdf
  17. 如何炒股,炒股的最简单方法
  18. SQL笔试:Student学生表,Course 课程表,Sc选课表
  19. win10如何查看显卡配置
  20. 51单片机 | 外部中断实验

热门文章

  1. 【国自然】SCI论文攥写常用文献检索数据库
  2. JavaScript原生代码编写选项卡Tab页跳转功能
  3. latex 表格添加注释
  4. Web3中文|微软:黑客通过Telegram侵害加密公司
  5. java毕业设计民宿管理平台mybatis+源码+调试部署+系统+数据库+lw
  6. shiro 多realm报错could not be authenticated by any configured realms. Please ensure that at least o
  7. 恶搞小程序--鼠标乱飞
  8. 银行卡认证接口,银行卡实名核验接口
  9. Java安全编程规范总结
  10. 华为服务器安装esxi找不到硬盘,Vmware Esxi 6.7设置阵列卡直通后找不到存储踩坑总结...