软件性能瓶颈问题之数据库性能问题定位

news2025/2/27 11:19:44

前言:数据库的性能瓶颈包括:数据库索引,锁,表空间,慢sql,数据量

一、性能问题

1.1 缺乏索引

索引本质上是一种数据结构,允许数据库快速查找特定的数据

1.2 查询效率低

使用通配符,例如select * from student  where student_name =“%乐乐%”’,在搜索词之前和之后使用“%”通配符会使此查询非常慢,尤其是在会话表很大的情况下。 数据库需要扫描会话表中的每一行,并针对每一行评估 LIKE 运算符,这可能非常耗时;转换为索引查询,如select * from student where student_ID= 200,如果给student_ID添加索引,查询比上一个快得多

最好避免在 SQL 查询中使用通配符(如“%”),因为它们可能会导致性能缓慢且效率低下。 相反,请尝试使用利用索引来提高查询性能的目标查询

1.3 数据类型不正确

不合适的数据类型导致性能不加和存储空间浪费,如:对应为整数的字段使用 varchar 数据类型可能会导致性能问题。

在设计数据字段的时候要了解数据用途和扩展,如果要设计一个字段来存储名称,则应考虑名称的长度以及它们是否可以包含特殊字符。 同样,如果要设计一个字段来存储电话号码,则应考虑是否将存储国际号码

1.4 连接数不够:

1、数据库配置不合理, 默认为100

命令修改: set golbal max_connections = 1024;
配置修改: /etc/my.cnf max_connections = 1024;
重启: service mysqld restart


2、慢查询导致IO阻塞, 连接长时间得不到释放

慢查询不是及时可以看到的, 一般当一个sql执行完才能判断是否为慢查询


3、代码缺陷sql执行完, 连接未释放

1.5、缓存命中率低

查询缓存是否开启: show variables likes “%query_cache%”;

开启缓存: set session query_cache_type = ON;

二、性能问题定位

1、explain分析

  1. 表的读取顺序
  2. 表的读取操作的操作类型
  3. 哪些索引可以使用
  4. 实际命中索引
  5. 表之间的引用
  6. 每张有多少行被检索

1、具体操作:在查询语句前加上explain,得到如下字段返回值

字段含义解读:

  1. id: 语句的执行顺序标识, 优先级越高, 越先执行
  2. select_type: 查询类型
    1. simple: 简单类型
    2. primary: 若包含任何复杂的子部分, 最外层查询被标记为primary
    3. union: 连表查询时, union之后的select, 则被标记为union第一个select为primary
  3. table:访问列表名称
  4. type:访问类型,有无使用索引

1、system: const的一个特例, 表中只有一条记录时发生
2、const: where条件被转换成常量, 只读取一次数据就能获取结果, 最多有一条记录匹配(主键, 唯一索引)
3、eq_ref: 走索引, 返回单行的数据.(连表查询时出现, 主键或唯一索引)
4、ref: 走索引, 返回的数据可以是多行, 通常使用等于时发生(普通索引)
5、range: 用了索引, 进行范围扫描, 常用于between, <, >, in等操作
6、index: 全索引扫描, 最简单的例子, select id from table
7、all: 全表扫描(重点关注)

        5、possible_keys:可以利用索引,无索引责显示null

        6、key:从possible_keys中所选择使用的索引

        7、rows:结果条数

        8、extra:查询方式

1. using index:只用索引, 可以避免访问表
2. using where:使用到where来过滤数据, 不是所有的where都要显示using where(访问了索引, 显示为using index)
3. nusing tmporary:用到临时表
4. nusing filesort:用到额外的排序

2、实例讲解

1、根据上面的字段含义解读,我们看到这个表中使用的是全面扫描,all的方式,全部扫描在数据量大时暂用较高的cpu和内存,从而降低软件在使用过程中数据查询的性能

3、jmeter测试数据库性能

1、在测试计划中添加mysql连接诶jar包。这个jar可以去官网下载

2、添加JDBC元件

相关参数说明

Vatible Name:按需命名,和jdbc中的变量命名保持一致即可

1、Validation Query:默认选择Select 1

2、Database URL:jdbc:mysql://IP:port/数据库名

3、JDBC Driver class:选择第一个mysql驱动

4、username:数据库登录名

5、password:数据库登录密码

3、添加数据库链接配置

相关参数说明

Vatible Name:按需命名,和jdbc中的变量命名保持一致即可

1、Validation Query:默认选择Select 1

2、Database URL:jdbc:mysql://IP:port/数据库名

3、JDBC Driver class:选择第一个mysql驱动

4、username:数据库登录名

5、password:数据库登录密码

4、按照线程和聚合报告中的数据进行分析

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

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

相关文章

【数据库系统概论】第三章关系数据库标准语言SQL

选择题会考&#xff1a; 1.数据查询&#xff1a; SELECT&#xff1a;用于选择需要查询的列和行。 FROM&#xff1a;用于指定要查询的表。 WHERE&#xff1a;用于指定查询条件。 GROUP BY&#xff1a;用于按照指定的列对结果进行分组。 HAVING&#xff1a;用于指定分组条件…

解决jmeter软件显示为英文、返回数据乱码、设置编码格式的问题

一.jmeter软件每次打开都需要手动切换中文 1.修改配置文件&#xff0c;可以把jmeter设置成中文&#xff1a; 2.打开jmeter.properties配置文件&#xff0c;修改languagezh_CN 二.返回数据乱码 改配置文件 进入Jmeter的bin目录下&#xff0c;找到jmeter.properties文件&#…

科研上新 | 第2期:可驱动3D肖像生成;阅读文本密集图像的大模型;文本控制音色;基于大模型的推荐智能体

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 本期内容速览 …

minio桶命名规则

一、背景 今天做项目需要上传图片到minio&#xff0c;上传失败&#xff0c;查看错误是桶未创建成功。 minio桶的创建具有自己的命名规则&#xff0c;不符合则无法创建。 二、命名规则 1、存储桶名称的长度必须介于 3&#xff08;最小&#xff09;到 63&#xff08;最大&…

KBL610-ASEMI内置4颗84MIL芯片KBL610

编辑&#xff1a;ll KBL610-ASEMI内置4颗84MIL芯片KBL610 型号&#xff1a;KBL610 品牌&#xff1a;ASEMI 封装&#xff1a;KBL-4 恢复时间&#xff1a;&#xff1e;50ns 正向电流&#xff1a;6A 反向耐压&#xff1a;1000V 芯片个数&#xff1a;4 引脚数量&#xff1…

将C盘中的文件夹迁移到其他盘符

目录 1 微信文件 2 移动系统自带文件夹 3 清除软件的缓存 1 微信文件 微信文件默认存储在C盘中&#xff0c;放任不管可能会占用很大的空间 更改后文件会自动挪过去&#xff0c;在C盘中只保留较小的空间 2 移动系统自带文件夹 像文档&#xff0c;图片这种文件夹&#…

数据治理是一个怎样的体系化的过程?_光点科技

数据治理是一个复杂而系统化的过程&#xff0c;旨在确保企业能够有效地管理、维护和利用其日益增长的数据资产。这一过程涉及多个层面和步骤&#xff0c;需要有明确的框架和战略规划。 数据治理的体系化始于明确定义的目标和愿景。企业需要明确意识到数据对于业务成功的重要性&…

华泰证券:京东营收增长或短期承压

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;华泰证券近期发布研报称京东营收增长或短期承压。华泰证券主要观点如下&#xff1a;营收增长或短期承压&#xff0c;聚焦长期内生能力建设 考虑到消费情绪的恢复仍需一定时间&#xff0c;我们预计…

免疫球蛋白介绍

免疫球蛋白&#xff08;Immunoglobulin&#xff0c;Ig&#xff09;是广泛存在于哺乳动物血清、淋巴液、组织液和外分泌液中的一种具有抗体活性或化学结构与抗体相似的球蛋白&#xff0c;在机体防御疾病的重要成分在疾病研究、药物研发、疫苗评价中具有重要作用。抗体&#xff0…

PLL的环路滤波器

本篇文章仅为分享PLL学习过程及一些公式推导&#xff0c;如有错误&#xff0c;还请批评指正&#xff01; 文章目录 1、一阶RC低通滤波器&#xff08;II类锁相环&#xff09;2、二阶RC低通滤波器A、加电容型B、加RC低通滤波器型 3、三阶低通滤波器 锁相环3大组成部分&#xff1…

浅谈IT运维-服务目录

目录 服务目录的作用 服务目录常见的应用场景 服务目录是否必须有 服务目录的视图分类 用户视图 客户视图 服务提供者视图 服务目录的分类原则 为什么要分类 服务目录的分类方法 服务目录划分的颗粒度把握 服务详情 服务目录包括&#xff1a;服务目录、服务详情两大…

Redis cluster 集群

redis集群redis集群是一个提供在多个redis节点间共享数据的程序集&#xff0c;redis集群可以支持多个master Redis集群支持多个master,每个master又可以挂载多个slave 读写分离、支持数据的高可用、支持海量数据的读写存储操作由于Cluster自动Sentinel的故障转移机制&#xff…

ChatGLM流式输出的报错修复

ChatGLM中的openai_api.py中的代码如下&#xff1a; # codingutf-8 # Implements API for ChatGLM2-6B in OpenAIs format. (https://platform.openai.com/docs/api-reference/chat) # Usage: python openai_api.py # Visit http://localhost:8000/docs for documents.import …

为什么要学习python

Python 越来越火爆 Python 在诞生之初&#xff0c;因为其功能不好&#xff0c;运转功率低&#xff0c;不支持多核&#xff0c;根本没有并发性可言&#xff0c;在计算功能不那么好的年代&#xff0c;一直没有火爆起来&#xff0c;甚至很多人根本不知道有这门语言。 随着时代的…

MySQL常用命令02

今天主要总结下命令行模式下创建数据库、查看数据库以及删除的命令。 1.创建数据库的命令&#xff1a;CREATE DATABASE [IF NOT EXISTS] 数据库名称; 创建一个名为db_teaching的数据库 库已经创建成功&#xff0c;重复创建报错&#xff1a; 提示改数据库已经存在。 我们在创…

调整C / C ++编译器以在多核应用程序中获得最佳并行性能:第二部分

下面的图5.10 描述了此过程&#xff0c;该过程包括四个步骤&#xff1a;点击领取嵌入式物联网学习路线 1.表征应用程序。 2.优先进行编译器优化。 3.选择基准。 4.评估编译器优化的性能。 图5.10&#xff1a;编译器优化过程 使用编译器的优化始于 对应用程序的表征。此步骤…

Python 实训教学,更便捷的学生邀请及内容分发|ModelWhale 版本更新

中秋国庆假期结束&#xff0c;ModelWhale 又迎来了新一轮的版本更新&#xff0c;让我们调整好节奏&#xff0c;一起奔赴新的旅程&#xff01; 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; 新增 一键邀请外部用户加入课程&#xff08;团队版✓&#…

欢迎大家关注我的个人公众号-这个豆包有点粘

欢迎大家关注我的个人公众号-这个豆包有点粘 如果大家不嫌弃的话&#xff0c;可以帮忙关注一下公众号&#xff0c;谢谢大家&#xff0c;个人准备长期运营此账号&#xff0c;文章内容种类繁多&#xff0c;前端学习、时事新闻、心灵鸡汤、幽默段子&#xff0c;一定有一款适合你。…

【学习笔记】minIO分布式文件服务系统

MinIO 一、概述 1.1 minIO是什么&#xff1f; MinIO是专门为海量数据存储、人工智能、大数据分析而设计的对象存储系统。&#xff08;早前流行的还有FastDFS&#xff09; 据官方介绍&#xff0c;单个对象最大可存储5T&#xff0c;非常适合存储海量图片、视频、日志文件、备…

培训考试系统如何满足个性化学习需求?

随着科技的不断发展&#xff0c;培训考试系统逐渐成为满足个性化学习需求的重要工具。个性化学习强调根据每个学员的特点和需求&#xff0c;量身定制学习内容和方式&#xff0c;提高学习效果和学习兴趣。 培训考试系统通过个性化内容推荐满足学员的学习需求。系统会根据学员的…