MySQL数据库-优化慢查询

1、什么是慢查询?

慢查询就是SQL执行时间过长,严重影响用户体验的SQL查询语句。当它频繁出现时数据库的性能和稳定性都会受到威胁

慢查询是数据库性能瓶颈的常见原因,是指SQL执行时间超过阈值;可能由于复杂的连接、缺少索引、不恰当的查询设计或数据量过大而导致变慢。

2、如何解决慢查询?

重写查询、添加或优化索引、调整数据库配置等

 2.1、追踪慢查询

想要追踪慢查询,首先需要在mysql中有一个名为 long-query-time的配置项,它定义了慢查询的阈值。一旦SQL语句执行超过阈值,就会被标记为慢查询。通过一系列命令,我们可以轻松地查看、开启、关闭慢查询监控,并设置合适的阈值。当然,为了让这些配置永久生效,你还需要在 my.conf 文件中进行相应设置。

 3、怎样提升性能?

通过添加索引来提升查询速度,并揭示索引失效的常见场景。掌握这些必备技能,你将能够轻松应对各种性能挑战,让数据库运行更加高效稳定。

3.1、添加索引提升查询速度 
  1.  数据内存中比较相比mysql的查询产生io的耗时可忽略不计,所以查询速度取决于查询过程中的IO次数耗时,即提高查询次数的有效方法是减少IO次数(mysql的数据是存储在磁盘中) 
  2. MYSQL innoDB引擎索引数据结构是B+tree结构(树节点称为数据叶) 
  3. 每个数据叶默认大小为16kb(16384)(show VARIABLES like ‘innodb_page_size’;) 
  4. 对于主键索引,假设一行数据1kb,则叶子可存16条数据。
  5.     当B+Tree的高度为h = 2 则数据量为 1170 * 16 = 18720条数据。
  6.     当B+Tree的高度为 h = 3 则数据量为1170 * 11170 * 16 = 21902400条数据(2190.24万)
  7. 对于非主键索引,则叶子节点的索引信息有 16384 /(8+8)= 1024个索引信息。
  8. 若h=2 则数据量为 1170 * 1024 = 1198080。 
  9. 若h=3 则数据量为 117011701024 = 1401753600条数据(14亿零175.36万)。 
  10.  假设我们用bigint做为主键索引大概占8个字节,(B+tree特点)有指向下一个的指针大概占6个字符,则每个数据叶可以存放的索引信息有 16384 / (8 + 6)= 1170个索引信息。 
  11. 分析得出结论: 
  12. 非主键索引,索引覆盖,14亿条数据情况下只需要3次io即可查询到想要的数据
  13. 主键索引查询,2190.24万条数据情况下只走需要3次 io 即可查询到想要的数据 
3.2、索引失效场景 

了解索引失效的场景,避免因SQL语句索引失效而引起的慢查询: 

 结语:解决慢查询问题并非一蹴而就的过程,需要持续关注和不断优化。只有这样,你才能确保数据库始终保持在最佳状态,为业务发展提供强有力的支撑。

相关推荐

  1. MySQL查询优化

    2024-04-22 00:56:06       39 阅读
  2. Mysql查询优化

    2024-04-22 00:56:06       32 阅读
  3. MySQL 查询优化案例

    2024-04-22 00:56:06       38 阅读
  4. MySql怎样优化查询

    2024-04-22 00:56:06       32 阅读
  5. MySQL查询优化【二】

    2024-04-22 00:56:06       35 阅读
  6. MYSQL查询优化,提升速度

    2024-04-22 00:56:06       50 阅读
  7. 面试宝典:MySQL 查询优化

    2024-04-22 00:56:06       43 阅读
  8. MySQL里面查询优化指南:从定位到优化

    2024-04-22 00:56:06       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 00:56:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 00:56:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 00:56:06       82 阅读
  4. Python语言-面向对象

    2024-04-22 00:56:06       91 阅读

热门阅读

  1. MySQL数据库——16.NULL 值处理

    2024-04-22 00:56:06       37 阅读
  2. 谈谈二分查找和分治算法

    2024-04-22 00:56:06       40 阅读
  3. 欧拉公式;傅里叶变换;自然数e;虚数

    2024-04-22 00:56:06       45 阅读
  4. 天星金融细说社保 筑牢民生保障防线

    2024-04-22 00:56:06       39 阅读
  5. pandas 中的 tolist() 和 to_list()

    2024-04-22 00:56:06       39 阅读
  6. 【C++】530 二叉搜索树的最小绝对差

    2024-04-22 00:56:06       41 阅读
  7. 完全卸载清理干净xcode

    2024-04-22 00:56:06       40 阅读
  8. AXI协议学习

    2024-04-22 00:56:06       40 阅读
  9. linux设备树-of_parse_phandle_with_args

    2024-04-22 00:56:06       39 阅读
  10. js 处理时间一些函数

    2024-04-22 00:56:06       37 阅读