MySQL 优化慢查询
查询以SELECT 语句的形式执行数据库中的所有查找操作。调整这些语句是重中之重,无论是实现动态网页的亚秒响应时间,还是缩短数小时生成大量夜间报告的时间。
此外SELECT语句,进行查询调谐技术也适用于结构,如 CREATE TABLE...AS SELECT, INSERT INTO...SELECT和WHERE在条款 DELETE的语句。这些语句有额外的性能考虑,因为它们将写操作与面向读的查询操作结合起来。
NDB Cluster 支持 join pushdown 优化,其中合格的 join 被完整发送到 NDB Cluster 数据节点,在那里它可以分布在它们之间并并行执行。有关此优化的更多信息,请参阅 NDB 下推连接的条件。
优化查询的主要考虑因素是:
要使慢
SELECT ... WHERE查询更快,首先要检查是否可以添加 索引。在WHERE子句中使用的列上设置索引,以加快评估、过滤和结果的最终检索。为避免浪费磁盘空间,请构建一小组索引以加速应用程序中使用的许多相关查询。索引对于使用连接和 外键等功能引用不同表的查询尤其重要 。您可以使用该
EXPLAIN语句来确定哪些索引用于SELECT. 请参阅 第 8.3.1 节,“MySQL 如何使用索引”和 第 8.8.1 节,“使用 EXPLAIN 优化查询”。隔离和调整查询的任何部分,例如需要过多时间的函数调用。根据查询的结构方式,可以为结果集中的每一行调用一次函数,甚至可以为表中的每一行调用一次函数,这大大放大了任何低效率。
尽量减少 查询中的全表扫描次数 ,尤其是对于大表。
通过
ANALYZE TABLE定期使用该语句使表统计信息保持最新 ,以便优化器拥有构建高效执行计划所需的信息。了解特定于每个表的存储引擎的调优技术、索引技术和配置参数。双方
InnoDB并MyISAM有两套准则的实现和维持查询高性能。有关详细信息,请参阅第 8.5.6 节,“优化 InnoDB 查询”和 第 8.6.1 节,“优化 MyISAM 查询”。您可以
InnoDB使用第 8.5.3 节“优化 InnoDB 只读事务”中的技术优化表的 单查询事务 。避免以难以理解的方式转换查询,尤其是在优化器自动执行某些相同转换的情况下。
如果某个基本准则无法轻松解决性能问题,请通过阅读
EXPLAIN计划并调整索引、WHERE子句、连接子句等来调查特定查询的内部细节 。(当您达到一定的专业水平时,阅读EXPLAIN计划可能是您每次查询的第一步。)调整 MySQL 用于缓存的内存区域的大小和属性。通过有效使用
InnoDB缓冲池、MyISAM键缓存和 MySQL 查询缓存,重复查询运行得更快,因为结果是从内存中检索的第二次和后续时间。即使对于使用高速缓存区域快速运行的查询,您仍然可以进一步优化,以便它们需要更少的高速缓存,从而使您的应用程序更具可扩展性。可扩展性意味着您的应用程序可以处理更多并发用户、更大的请求等,而不会导致性能大幅下降。
处理锁定问题,其中查询速度可能会受到同时访问表的其他会话的影响。
MySQL 优化慢查询的更多相关文章
- MySQL——优化嵌套查询和分页查询
优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写起来简单,也容易理解.但是,有时候可以被更有效率的连接(JOIN ...
- mysql优化-》查询缓存
使用MySql查询缓存(query_cache_size) 在MySql中查询缓存的原理: 其实是MySql创建了一个临时的空间叫Qcache(这个空间生成在MySql的编译器内存中),这个空间的大小 ...
- MySQL优化COUNT()查询
COUNT()聚合函数,以及如何优化使用了该函数的查询,很可能是最容易被人们误解的知识点之一 COUNT()的作用 COUNT()是一个特殊的函数,有两种非常不同的作用: 统计某个列值的数量 统计行数 ...
- MySQL优化总结-查询总条数
1.COUNT(*)和COUNT(COL) COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数 ...
- MySql优化子查询
用子查询语句来影响子查询中产生结果rows的数量和顺序. For example: SELECT * FROM t1 WHERE t1.column1 IN (SELECT column1 FROM ...
- Mysql优化--慢查询日志
Mysql 系列文章主页 =============== 默认没有开启慢查询日志功能.如果不是调优需要的话,一般不建议开启. 查看是否开启慢查询日志: SHOW VARIABLES LIKE '%sl ...
- mysql 优化之查询缓存(mysql8已经废弃这个功能)
对于缓存,一般人想到的是 redis.memcache 这些内存型的缓存. 但是实际上 mysql 也提供了缓存,mysql 里面的缓存是查询缓存,可以把我们查询过的语句缓存下来,下一次查询的时候有可 ...
- mysql优化 慢查询(一)
1.显示慢查询的一些参数的命令:show variables like '%slow%';结果如图
- mysql 优化like查询
1. like %keyword 索引失效,使用全表扫描.但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描. 2. like keyword% 索引有 ...
- MySQL优化、锁
1. MySQL优化-查看执行记录 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. 使用ex ...
随机推荐
- recastnavigation.Sample_TempObstacles代码注解 - rcBuildHeightfieldLayers
烘培代码在 rcBuildHeightfieldLayers 本质上是为每个tile生成高度上的不同layer 算法的关键是三层循环: for z 轴循环 for x 轴循环 for 高度span 循 ...
- DPO: Direct Preference Optimization 直接偏好优化(学习笔记)
学习参考:链接1 一.为什么要提出DPO 在之前,我们已经了解到基于人类反馈的强化学习RLHF分为三个阶段:全监督微调(SFT).奖励模型(RM).强化学习(PPO).但是RLHF面临缺陷:RLH ...
- socket 端口复用 SO_REUSEPORT 与 SO_REUSEADDR
背景 在学习 SO_REUSEADDR 地址复用的时候,看到有人提到了 SO_REUSEPORT .于是也了解了一下. SO_REUSEPORT 概述 SO_REUSEPOR这个socket选项可以让 ...
- Codeforces Global Round 26 A~C2
惹啊啊啊啊,这场做得我发昏,最近总感觉不在状态,但还是再在冲击1600-1800的题目. A. Strange Splitting ---------------------------------题 ...
- DVT:华为提出动态级联Vision Transformer,性能杠杠的 | NeurIPS 2021
论文主要处理Vision Transformer中的性能问题,采用推理速度不同的级联模型进行速度优化,搭配层级间的特征复用和自注意力关系复用来提升准确率.从实验结果来看,性能提升不错 来源:晓飞的算法 ...
- Go 使用原始套接字捕获网卡流量
Go 使用原始套接字捕获网卡流量 Go 捕获网卡流量使用最多的库为 github.com/google/gopacket,需要依赖 libpcap 导致必须开启 CGO 才能够进行编译. 为了减少对环 ...
- joig2022_e 题解
设计 \(f_i\) 表示以第 \(i\) 个数结尾的选择的最大值. 有 \(f_i = f_j + a_i\)(\(type_i \not = type_j\)). 发现可以选择的种类其实构成两段连 ...
- K210开发板学习笔记-点亮LED灯
1. 介绍 和 51 单片机非常像,实验的2个LED灯都是一头接了 +3.3v 电源,控制 LED灯亮的话需要 K210芯片 对应的管脚提供一个低电平. 管脚: 低电平-LED亮 高电平-LED灭 G ...
- ubuntu pyinstaller 的安装以及使用
使用pyinstaller将Python文件打包成linux可执行文件. 安装pip3: sudo apt-get install python3-pip 更换pip3下载源: 1 sudo su 2 ...
- Linux开发人员常用命令
常用查询命令 # 查看ip地址 ip addr show # 查看当前目录路径 pwd # 当前目录下模糊查找文件 find / -name "*.pdf" 查看运行中进程 ps ...