系统慢查询的思考

系统慢查询的思考

在一个系统中发现慢查询的功能或很卡的现象。你是怎么思考的?从哪几个方面去思考?会用什么工具?

一个系统使用了几年后都可能会出现这样的问题。原因可能有以下几点。

  1. 数据量的增加。系统中平时的使用中数据量是有一个累计的过程的。单表的数据量达到一定数量后就会出现原来执行性能还不错的SQL变慢了。
  2. 用户量的增加。 公司业务的不断扩展,系统的用户量也会跟着增长。用户量增长了,系统的访问量也会同步增加的。这时系统的压力就会增加。原先的服务器可能就无法承担现有的压力了。现在去服务器的使用很多,使用去服务的用户还要考虑流量带宽是否够不够用了。
  3. 系统功能设计不合理。业务功能太复杂而没有进行接口性能考虑。
  4. 系统耦合高。对外依赖高受外部接口性能影响。
  5. 代码质量差。未考虑接口性能。Sql未合理设计索引。
  6. 系统架构不合理。

  

我们先从整合上来想一想有哪里节点可能会影响系统性能问题?

一个请求从用户端发出要经过很多节,简单的说会先到应用服务器进行业务逻辑处理,在进行业务处理时会用到数据库数据。

小型系统如果没有较大的用户量的增加时更多的是考虑单表数据量的增加导致的查询慢。

  1. 数据库慢SQL监控分析日志:用于找到查询慢的SQL,分析是否要进行优化或加索引。
  2. 接口性能日志:记录接口的处理用时,请求时间。分析接口高峰时间段,处理时长等。找到影响最大的接口,再进行代码分析,最后结合慢SQL日志一起分析,找到慢的原因,再确定解决方案。
  3. 前端请求接口日志:这里可以更直观的看到用户等待的时间。一个用户请求要经过公网->DNS服务器->负载均衡服务器->应用服务器->数据库。要经过这么多个节点。服务端只能监控到接口处理用时。而无法监控每个节点的等待时间,如大量用户请求在到达了应用服务器后在对列中等待了多久这是接口性能日志无法记录到的。
  4. 用户操作日志。这个日志不是很重要,如果有也可以进行一些用户操作行为分析。提高

有了这些数据就不难发现问题点了。

  1. 接口性能数据差。那就找到要优化的接口进行代码。这时可以先考虑优化代码和SQL。再进行业务解耦,如果有对外部接口依赖的可进行解耦异步设计,如果数据库读操作多,可以增加缓存服务器,减少数据库压力,提高接口性能。
  2. 接口性能数据都很好的情况下,但前端请求接口日志性能差。说明可能是应用服务器的等待对列太长了。说明访问量较大,原有的服务器处理不过来了,且接口性能已没有性能提升的可能时,才是进行增加服务器增加负载均衡的设计。如果服务器的性能不错的话,也可以增加IIS站点的方式解决等待对列长的问题。

对于超大访问量的应用来说。就要用到更高级的架构了。数据库的读写分离,数据库集群,应用服务器集群,缓存集群,消息对列等。根据应用的发展增加相应的组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/293003.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AXIS】AXI-Stream FIFO设计实现(四)——异步时钟

前文介绍了几种同步时钟情况下的AXI Stream FIFO实现方式,一般来说,FIFO也需要承担异步时钟域模块间数据传输的功能,本文介绍异步AXIS FIFO的实现方式。 如前文所说,AXI-Stream FIFO十分类似于FWFT异步FIFO,推荐参考前…

MIPI CSI-2 Low Level Protocol解读

一、Low Level Protocol介绍 LLP 是一种面向字节的基于数据包的协议,支持使用短数据包和长数据包格式传输任意数据。为简单起见,本节中的所有示例均为单通道配置。 LLP特性: 传输任意数据(与有效载荷无关) 8 位字大…

Chatgpt掘金之旅—有爱AI商业实战篇(二)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、前言: 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代,作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…

MSPF5438数据卫星透传

最近在网上找了个项目来做,实现功能简单描述就是通过Lora模块E30-170T27D接收上位机发送的数据包,并对接收数据包进行正确性校验,若数据包校验成功则将其储存在W25Q125FV 中,待上位机发送数据包传输完毕指令后,单片机启…

Docker配置Mysql

1.首页搜索mysql镜像 2.选择对应版本的MySQL,点击pull 3.pull完成以后,点击images,这里可以看到刚刚pull完成的mysql版本 4.打开命令界面,运行命令 docker images ,查看当前已经pull的images 5.运行命令设置mysql docker run -it…

【有芯职说】数字芯片BES工程师

一、 数字芯片BES工程师简介 今天来聊聊数字芯片BES工程师,其中BES是Back End Support的缩写,就是后端支持的意思。其实这个岗位是数字IC前端设计和数字IC后端设计之间的一座桥,完成从寄存器传输级设计到具体工艺的mapping和实现。这个岗位在…

Linux文件(系统)IO(含动静态库的链接操作)

文章目录 Linux文件(系统)IO(含动静态库的链接操作)1、C语言文件IO操作2、三个数据流stdin、stdout、stderr3、系统文件IO3.1、相关系统调用接口的使用3.2、文件描述符fd3.3、文件描述符的分配规则3.3、重定向3.4、自制shell加入重…

HCIP【GRE VPN、MGRE VPN与PPP验证综合实验】

目录 实验要求: 实验拓扑图: 实验思路: 实验步骤: 一、配IP地址 (1)配置所有设备接口的IP地址: (2)配置私网与公网接口的缺省路由使得公网可通: 二、P…

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗?为什么 原因:当使用const声明一个对象或数组时,实际上是保证了对象或数组的引用不会被修改,但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…

操作教程|在MeterSphere中通过SSH登录服务器的两种方法

MeterSphere开源持续测试平台拥有非常强大的插件集成机制,用户可以通过插件实现平台能力的拓展,借助插件或脚本实现多种功能。在测试过程中,测试人员有时需要通过SSH协议登录至服务器,以获取某些配置文件和日志文件,或…

ES学习日记(四)-------插件head安装和一些配套插件下载

前言 接上节,第三方插件选择了时间久,功能丰富,长得丑的head,head 插件在ES 5版本以前开箱即用非常简单,ES 5版本以后需要运行在node环境下,所以我们要先准备一下环境 一.安装Git yum -y install git 二.安装node 安装包位置node for linux下载 解压…

CaT论文翻译

CaT: Balanced Continual Graph Learning with Graph Condensation CaT:通过图压缩实现平衡的连续图学习 Abstract 持续图学习(CGL)的目的是通过以流方式输入图数据来持续更新图模型。由于模型在使用新数据进行训练时很容易忘记以前学到的知识,因此灾…

什么是检索增强生成(Retrieval-Augmented Generation,RAG)

什么是RAG? 检索增强生成(Retrieval-Augmented Generation,RAG),是指为大模型提供外部知识源的概念。能够让大模型生成准确且符合上下文的答案,同时能够减少模型幻觉。 用最通俗的语言描述:在已…

向量点乘有哪些作用呢

如下: 1.找到两个向量之间的夹角(不用多说) 2.求一个向量投影在另一个向量的投影: 我们把图中b的在a上的投影向量称作b1吧,因为b1就在a上,所以只需要求出b1的大小,然后乘以a的单位向量,我们就得到向量b1了…

Unity 渲染

渲染的三个阶段 1:应用阶段 1.1 数据的准备 遮挡剔除,层级剔除。 渲染顺序,UI在Herachy窗口按照层级渲染,其余物体由大概按照先近后远。 打包渲染数据发送给显存,主要包括有模型信息,变换矩阵&#xff0c…

归并排序---分治法

1、算法的概念 归并排序:是创建在归并操作上的一种有效的排序算法。算法是采用分治法的一个非常典型的应用,且各层分治递归可以同时进行。归并排序的思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序&…

MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索

宗喆和张正分别给我们带了 KCL 相关的最新进展,由蚂蚁集团开发的 Rust 编写的开源 DSL,目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念,解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…

[Windows]服务注册工具(nssm)

文章目录 官网下载地址百度云下载地址NSSM常用命令 使用场景:例如现在我们想开启自动启动一个Java服务,nginx,node等。 官网下载地址 https://nssm.cc/download 百度云下载地址 链接:https://pan.baidu.com/s/111fkBWIS7CTlWIj80Kc8Sg?pwdanan 提取码…

python_2

文章目录 题目一运行结果 题目二运行结果 题目一 代码如下: def merge():ls_0 input("输入一个列表(空格隔开):").split()ls_1 []for i in ls_0:ls_1.append(i)ls_1.sort()if ls_0 ls_1:print("这是一个有序列表")else:print(&qu…

[Android]模拟器登录Google Play失败

问题: 模拟器登录Google Play失败,提示couldnt sign in there was a problem communicating with google servers. try again later. 原因: 原因是模拟器没有连接到互联网,打开模拟器中Google浏览器进行搜索一样不行。 解决&am…