系统慢查询的思考

系统慢查询的思考

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

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

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

  

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

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

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

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

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

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

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

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

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

相关文章

数据结构——优先级队列及多服务台模拟系统的实现

一、优先级队列的定义和存储 优先级队列定义:优先级高的元素在队头,优先级低的元素在队尾 基于普通线性表实现优先级队列,入队和出队中必有一个时间复杂度O(n),基于二叉树结构实现优先级队列,能够让入队和出队时间复杂度都为O(log…

正多边形拓扑与泛函

(原创:Daode3056) 也许,关于“拓扑”,“泛函”几本书上的内容与实例都是大同小异,总是那么点内容,数学要开拓一些新领域与新内容才能满足不断发展的社会与工业各种需要。本文就以人工智能生成对…

喜报!湖南创远荣获“2023年度中国有色金属工业科技进步奖”二等奖

近日,一则喜讯传来,湖南创远再创佳绩,联合中南大学、山西紫金合作的“智能矿山穿孔装备智能作业系统”项目荣获“中国有色金属工业科学技术奖二等奖”。 穿孔作业是传统非煤矿山开采的关键环节,穿孔效率、穿孔质量,直接…

nextjs+shadcn学习

1、安装nextjs 创建文件夹next-shadcn 在文件夹中执行 npx create-next-applatest . --typescript --tailwind --eslint安装后,跑起来 2、安装shadcn 在刚才目录下,运行命令 npx shadcn-uilatest init目录中会增加两个目录 components 和lib 替换原…

MySQL数据库 - 表基本操作

一、修改表名 本关任务:修改表名,并查询修改后表的结构。 查看所有表 show tables; 查看表基本结构 DESCRIBE 表名; 或 简写为 desc 表名; 查看创建表的语句 SHOW CREATE TABLE 使用 SHOW CREATE TABLE 语句,不仅仅可以返…

vue 怎么处理get请求,接收url地址栏参数

一般来说&#xff0c;vue直接处理url参数请求的几率比较小&#xff0c;但是有时动态路由会用得到。 在vue2中较为简单&#xff0c;直接用this.$route.query.参数名称&#xff0c;即可获取。如下&#xff1a; <template><div>{{userid }}</div> </templa…

MySql实战--行锁功过:怎么减少行锁对性能的影响

在上一篇文章中&#xff0c;我跟你介绍了MySQL的全局锁和表级锁&#xff0c;今天我们就来讲讲MySQL的行锁。 MySQL的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁&#xff0c;比如MyISAM引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁&#xf…

通天星CMSV6 车载定位监控平台 任意文件上传漏洞复现(XVE-2023-23454)

0x01 产品简介 通天星CMSV6车载定位监控平台拥有以位置服务、无线3G/4G视频传输、云存储服务为核心的研发团队,专注于为定位、无线视频终端产品提供平台服务,通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频综合平台。 0x02 漏洞概述 …

【Chiplet】技术总结

Chiplet基本知识点汇总 1. Wafer, die, chip, cell的区分2. MCM, SiP, SoC, Chiplet的区别4. Chiplets的先进封装5. Chiplet发展阶段 Chiplet基本知识点汇总 1. Wafer, die, chip, cell的区分 Wafer: 晶圆&#xff0c;指一整个晶圆硅片。 Die: 从晶圆上切分下来的小方格&a…

PHP中常见的CRUD函数

PHP中常见的CRUD函数 创建&#xff08;Create&#xff09;&#xff1a;创建一个新的数据记录 function create($name, $age, $email) {$conn mysqli_connect("localhost", "username", "password", "myDB");$sql "INSERT INT…

Vue3+.NET6前后端分离式管理后台实战(十)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战&#xff08;十&#xff09;已经在订阅号发布有兴趣的可以关注一下&#xff01; 感兴趣请关注订阅号谢谢&#xff01; 代码已经上传gitee

C++--内联函数

当调用一个函数时&#xff0c;程序就会跳转到该函数&#xff0c;函数执行完毕后&#xff0c;程序又返回到原来调用该函数的位置的下一句。 函数的调用也需要花时间&#xff0c;C中对于功能简单、规模小、使用频繁的函数&#xff0c;可以将其设置为内联函数。 内联函数&#xff…

【SQL】1667. 修复表中的名字(UPPER()、LOWER()、SUBSTRING()、CONCAT())

前述 SQL中字符串截取函数(SUBSTRING) SQL 字母大小写转换函数UPPER()、UCASE()、LOWER()和LCASE() 题目描述 leetcode题目&#xff1a;1667. 修复表中的名字 Code select user_id, concat(upper(substring(name, 1, 1)),lower(substring(name, 2)) ) as name from Users o…

基于springboot+vue+Mysql的篮球论坛系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

adc123456

DMA主要用于协助CPU完成数据转运的工作 DMA&#xff0c;英文全称Direct Memory Access&#xff0c;DMA这个外设是可以直接访问STM32内部存储器的&#xff0c;包括运行内存SRAM&#xff0c;程序存储器flash和寄存器等等&#xff0c;DMA都有权限访问&#xff0c;所以DMA能完成数据…

Day1 - Hive基础知识

Hive 简介 概述 Hive是由Facobook开发的后来贡献给了Apache的一套用于进行数据仓库管理的工具&#xff0c;使用类SQL语言来对分布式文件系统中的PB级别的数据来进行读写、管理以及分析Hive基于Hadoop来使用的&#xff0c;底层的默认计算引擎使用的是MapReduce。Hive利用类SQ…

jQuery的作用及入口函数

一、jQuery的作用 (1) jQuery &#xff1a;简洁、快速、灵活跨浏览器的JavaScript库&#xff0c;即js文件&#xff0c;由John Resig在2006年1月正式发布。 (2) jQuery强调的理念是“write less,do more” (3) 进入jQuery官方网站http://jquery.com下载最新的jQuery库文件。 (4)…

K8S之Configmap的介绍和使用

Configmap Configmap概述Configmap的简介Configmap能解决的问题Configmap应用场景局限性 Configmap创建方法通过命令行直接创建通过文件创建指定目录创建编写Configmap资源清单Yaml文件 Configmap的使用案例通过环境变量引入&#xff1a;使用configMapKeyRef通过环境变量引入&a…

零刻sei12 windows10 限制cpu最高频率,降低cpu功耗,调整风扇转速

为什么要降低cpu功耗 虽然风扇声音本身不大,但是我想在自习室用电脑,突然的风扇声音还是会影响到他人. 由于迷你主机集成度比较高不太可能换散热器,所以只能降低cpu功耗. 我的系统 版本 Windows 10 IoT 企业版 LTSC 版本号 21H2 安装日期 ‎2023/‎12/‎18 操作系统…

数据分析之Tebleau 的度量名称和度量值

度量名称 包含所有的维度 度量值 包含所有的度量 度量名称包含上面所有的维度&#xff0c;度量值包含上面所有的度量 当同时创建两个或两个以上度量或维度时&#xff0c;会自动创建度量名称和度量值 拖入省份为行(这会是还没有值的) 可以直接将销售金额拖到数值这里 或者将销售…