首页 > 数据库 >mysql查询时反应慢

mysql查询时反应慢

时间:2022-11-04 18:46:08浏览次数:43  
标签:索引 数据库 查询 反应 实例 mysql 100 切分

一、原因分析

1.没有索引或者SQL没有命中索引导致索引失效

2.单表数据量过多,导致查询遇到瓶颈。

3.网络原因或者机器自身负载过高

4.热点数据导致单点负载不均衡

5、I/O吞吐量小,形成了瓶颈效应。

6、没有创建计算列导致查询不优化。

7、内存不足

8、网络速度慢

9、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)

10、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)

11、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。

12、返回了不必要的行和列

13、查询语句不好,没有优化

二、优化

1、恰当的使用索引

 

必要时建立多级索引,分析执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描

2、分库分表

如果sql语句走了索引,表现性能也不是很好,就需要考虑对表进行拆分,分表分为垂直切分和水平切分

 

垂直切分就是将一张单表中的多个列按照业务逻辑把它关联性比较大的列放在同一张表上去

水平切分就是把一张表行数达到千万级别的大表,根据业务主键切分为多张小表,这些小表可能达到100张,甚至1000张

除了分表还可以进行分库,已经拆分完1000张表之后,然后将后缀为0-100的表放到数据库实例中,然后再将100-200的表放到另一个数据库实例中,依次类推把1000张表分别放到了10个数据库实例中,这样就可以根据业务的主键把请求路由到不同的这个数据库实例,然后让数据库实例承担相对应的流量,这样均摊的流量就比较小,从而达到一个数据库性能提升的目的

3、对查询进行优化,尽可能避免全表扫描

 

首先考WHERE 及ORDER BY涉及列上建立索引

4、表中的大字段剥离

 

假如一个表的字段数有100多个,拆分字段,保证单条记录的数据量很小

5、字段冗余

 

减少跨库查询或多表连接操作

6、查询时不要返回不需要的行和列

7、减少sql中函数运算与其他计算

8、针对查询频繁的热点数据增加缓存,引入非关系型数据库

9、升级硬件

10、提高网速

11、增加服务器的cpu个数

12、主从复制,读写分离,一般情况下,查询的情况比写的情况多,所以考虑将数据库分为主库,从库,主库处理写的操作,从库处理读的操作

 

 

 

 

标签:索引,数据库,查询,反应,实例,mysql,100,切分
From: https://www.cnblogs.com/songyunjie/p/16858750.html

相关文章

  • .Net Core 3.0 对 MongoDB 的多条件(两种)查询操作
    前言  在日常开发中,偶尔会用到MongoDB的数据操作,也花费了一些时间调试,因此在此处记录一下,共同进步。废话少说,出招吧!正文2.1准备工作首先需要引入.Net平台链接......
  • mysql索引
    一、索引概念索引是帮助MySql高效获取数据的数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这样就可以在这些数据结......
  • 02 ES查询设计
    一原理知识Bool查询包括四种子句:mustfiltershouldmust_not1.must文档必须匹配这些条件才能被包含进来。相当于sql中的and2.must_not文档必须不匹配这些条件......
  • MySQL---索引的数据结构
    索引的数据结构为什么使用索引索引及其优缺点概述优点缺点InNoDB中索引的推演索引之前的查找在一个页......
  • mysql连接超时的属性设置
    mysql连接超时的属性设置2022-10-2611:09:54.128[http-nio-6788-exec-5]ERRORo.s.t.i.TransactionAspectSupport#completeTransactionAfterThrowing[line:525]-App......
  • 高手是这样排查问题的——两层使用存储过程批量生成单据和查询分析器生成单据都正确,使
    问题描述:在两层的情况下,使用存储过程批量生成单据时,正确在查询分析器中,直接使用代码执行存储过程时,正确在三层的情况下,使用存储过程批量生成单据时,错误 问题查找:1、......
  • 如何查询4GL程序中创建的临时表中的数据
    前提:将dba_segments这个表的select权限授权给各个营运中心(即数据库用户)   ①.用sys账号以dba的权限登录数据库       <topprod:/u1/topprod/tiptop>sqlpl......
  • ContOS操作MySQL的基本操作
    一.安装MySQL安装mysqlyuminstall-ymysql-server设置开机自动启动systemctlenablemysqld.service检查开机自动启动是否设置成功systemctllist-unit-files|gre......
  • mysql锁
    一、全局锁全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是 #全局锁Flushtableswithreadlock 当需要让整个库处于只读状态的时候,可......
  • MySQL函数-Group_Concat分组并行转列
    group_concat函数解析:1、concat()函数:  功能:将多个字符串连接成一个字符串  语法:concat(str1,str2)  结果:连接参数str1,str2为一个字符串,如果有任何一个参数为n......