系统慢查询的思考

news2024/11/25 7:14:44

系统慢查询的思考

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

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

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

  

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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML块级元素和内联元素(头部和布局)

目录 1.HTML块级和内联标签: 1.块级元素: 2.内联元素: 3.元素嵌套: 4.元素转换: 示例如下: 2.内联框架: 前言: 示例如下: 3.布局: 4.头部标签: 前言: 说明&…

GT收发器PHY层设计(3)PHY层设计

文章目录 前言一、设计框图二、PHY层基本传输协议三、PHY_TX模块3.1、模块接口3.2、组帧状态机描述3.3、数据大小端问题3.4、字节对齐 四、PHY_RX模块4.1、模块接口4.2、大小端转换4.3、起始位4.4、结束位4.5、axis数据流恢复 五、LFSR伪随机码六、链路空闲时期处理 前言 上一…

windows平台虚拟机安装

windows平台虚拟机安装 1. 安装VMwareWorkstationPro 1.1 软件下载 官网下载 官网 百度网盘下载 版本 VMwareWorkstationPro16 链接:https://pan.baidu.com/s/1LidMxoM9e4a4CANixyRoyg?pwd1157 提取码:1157 1.2 软件安装 软件安装注意事项 软件…

类的新功能

类的新功能 默认成员函数 在C11之前,一个类中有如下六个默认成员函数: 构造函数。拷贝构造函数赋值重载析构函数取地址重载函数const取地址函数 其中前四个默认成员函数最重要,后面两个默认成员函数一般不会用到,这里默认成员…

Js之运算符与表达式

运算符:也叫操作符,是一种符号。通过运算符可以对一个或多个值进行运算,并获取运算结果。 表达式:由数字、运算符、变量的组合(组成的式子)。 表达式最终都会有一个运算结果,我们将这个结果称…

从输入url到页面展示的过程

唠唠叨:我不想误人子弟,我这篇算是搬运工,加上自己的理解做点总结,所以还请大家科学上网去看这篇:https://aws.amazon.com/cn/blogs/mobile/what-happens-when-you-type-a-url-into-your-browser/ 是这六个步骤&#…

springboot论坛管理系统

论坛管理系统 摘要: 在社会快速发展的影响下,论坛管理系统继续发展,使论坛管理系统的管理和运营比过去十年更加信息化。依照这一现实为基础,设计一个快捷而又方便的网上论坛管理系统是一项十分重要并且有价值的事情。对于传统的论…

如何提升公众号搜索量?分享内部运营的5步优化技术!

最近一直有自媒体同行朋友在写关于公众号的内容,很多都说公众号现在没得玩了。其实,在运营自媒体上面,思维不通,技术不到位,哪个平台都不适合你玩。 想要在自媒体上面运营变现,一定不要先点击广告变现&…

【Linux】详解文件系统以及周边知识

一、磁盘的基本知识 磁盘中可以被划分成一个一个的环,每个环都是一个磁道。每个磁道又可以被均分成一个一个的扇区,扇区是磁盘IO的基本单位(想要修改扇区中的一个比特位就必须把该扇区的全部比特位都加载到内存中)。磁盘中的盘面&…

「MySQL」索引事务

🎇个人主页:Ice_Sugar_7 🎇所属专栏:数据库 🎇欢迎点赞收藏加关注哦! 索引&事务 🍉索引🍌特点🍌通过 SQL 操作索引🍌底层数据结构 🍉事务&…

张颂文|永远保持好奇心的人,是永远进步的人。

哈喽,你好啊,我是雷工! 今天看到了张颂文的一段演讲,提到了他因为好奇心而被改变的人生。 如果想把单一和枯燥的工作做的更好,张颂文的办法是像一个孩子一样保持好奇心,不停地提出一些有趣的问题。 在5年的导游经历中,对每次游览的地点都像初次游览般保持好奇心,正因为…

C++从入门到精通——引用()

C的引用 前言一、C引用概念二、引用特性交换指针引用 三、常引用保证值不变权限的方法权限的放大权限的缩小权限的平移类型转换临时变量 四、引用的使用场景1. 做参数2. 做返回值 五、传值、传引用效率比较值和引用的作为返回值类型的性能比较 六、引用和指针的区别引用和指针的…

工单系统的作用与优势!为什么企业需要它?

什么是工单系统?工单系统作为企业服务类工具,能在管理上和业务上为企业带来什么帮助吗? 什么是工单系统 ZohoDesk工单系统是一种用于管理和处理任务或请求的软件工具。它提供了一个集中的平台,使组织能够跟踪、分配和解决各种问题、请求和…

AWS创建IAM用户,以及通过IAM用户登录

基本概念: IAM Identity Center(AWS SSO) 跨账户访问:IAM Identity Center允许用户使用他们自己的单一登录凭证来访问多个AWS账户和应用程序。这意味着你可以拥有一个账户和密码,通过IAM Identity Center的用户门户&…

前端虚拟滚动列表 vue虚拟列表

前端虚拟滚动列表 在大型的企业级项目中经常要渲染大量的数据,这种长列表是一个很普遍的场景,当列表内容越来越多就会导致页面滑动卡顿、白屏、数据渲染较慢的问题;大数据量列表性能优化,减少真实dom的渲染 看图:绿色…

攻防世界——catfly

这道题我觉得很难,我当初刷题看见这道题,是唯一一道直接跳过的,现在掌握了一点知识才回来重新看 这道题在linux运行下是这样,我首先猜测是和下面这个time有关,判断达到一定次数就会给我flag 但是我找了好久都没找到那…

NFT-前端开发(一)

使用 在我们想要保存项目的目录下打开终端运行npx create-react-app test2命令初始化,test2是我们的项目名字,可以自己去更改。 初始化完成后,我们目录下就会多出一个test2文件夹 ,然后我们在vscode中打开该文件夹 然后我们打开j…

C++教学——从入门到精通 5.单精度实数float

众所周知&#xff0c;三角形的面积公式是(底*高)/2 那就来做个三角形面积计算器吧 到吗如下 #include"bits/stdc.h" using namespace std; int main(){int a,b;cin>>a>>b;cout<<(a*b)/2; } 这不对呀&#xff0c;明明是7.5而他却是7&#xff0c;…

(一)kafka实战——kafka源码编译启动

前言 本节内容是关于kafka消息中间键的源码编译&#xff0c;并通过idea工具实现kafka服务器的启动&#xff0c;使用的kafka源码版本是3.6.1&#xff0c;由于kafka源码是通过gradle编译的&#xff0c;以及服务器是通过scala语言实现&#xff0c;我们要预先安装好gradle编译工具…

暴力破解笔记

1 暴力破解简介 暴力破解&#xff1a; 蛮力攻击&#xff0c;又称为穷举攻击&#xff0c;或暴力破解&#xff0c;将密码进行逐个尝试验证&#xff0c;直到尝试出真正的密码为止。 暴力破解是指采用反复试错的方法并希望最终猜对&#xff0c;以尝试破解密码或用户名或找到隐藏的…