首页 > 数据库 >数据库SQL优化

数据库SQL优化

时间:2024-06-14 21:21:10浏览次数:14  
标签:slow log 数据库 SQL 查询 mysql query perl 优化

数据库SQL优化通常涉及以下方面:

1.查询优化:确保使用正确的索引来优化查询。

2.避免全表扫描:避免不必要的全表扫描,使用索引就是为了避免全表扫描。

3.使用EXPLAIN分析查询:检查SQL查询的执行计划,判断sql语句存在的问题。

4.使用JOIN代替子查询:适当情况下,使用JOIN来合并表。

5.使用视图减少重复查询:创建视图来简化复杂查询。

6.使用索引:为常查询的列添加索引。

7.避免SELECT *:只选取需要的列,防止回表。

8.使用LIMIT限制结果集:对大型查询使用LIMIT来减少返回数据量。

9.使用INSERT批量操作:减少单个INSERT语句的数量。

10.定期分析和优化表:使用ANALYZE TABLE和OPTIMIZE TABLE。

第一步,搜集慢查询日志
my.ini配置文件中配置查询日志
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
解释:
slow_query_log: 1 代表开启慢查询日志。
slow_query_log_file: 慢查询日志文件的路径。
long_query_time: 定义查询了多久才算是慢查询,这里设置的是2秒。

配置完成后,需要重启MySQL服务使配置生效。
sudo service mysql restart
sudo systemctl restart mysqld

慢查询日志分析工具
一、Mysqldumpslow
mysqldumpslow -s r -t 10 slow-mysql.log
-s order (c,t,l,r,at,al,ar)
c:总次数
t:总时间
l:锁的时间
r:总数据行
at,al,ar :t,l,r 平均数 【例如:at = 总时间/总次数】
-t top 指定取前面几天作为结果输出
mysqldumpslow -s t -t 10
/usr/local/mysql/data/mysql-slow.log

二、pt_query_digest
安装工具以支持脚本分析
Yum -y install 'perl(Data::Dumper)';
yum -y install perl-Digest-MD5
yum -y install perl-DBI
yum -y install perl-DBD-MySQL
perl ./pt-query-digest --explain h=127.0.0.1,u=root,p=root1234%
/usr/local/mysql/data/mysql-slow.log

标签:slow,log,数据库,SQL,查询,mysql,query,perl,优化
From: https://www.cnblogs.com/velloLei/p/18248673

相关文章

  • 数据库之SQL语法大全
    DISTINCTcolumn_name去除字段的重复WHERE条件筛选操作AND、OR用于where条件后的多条件连接如果第一个条件和第二个条件都成立,则用AND运算符连接这两个条件。如果第一个条件和第二个条件中只要有一个成立,则用OR运算符连接这两个条件。如:SELECT*FROMWebsitesWHER......
  • golang与数据库报错解决
    在这里插入图片描述提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、前言......
  • 数据库之理解SQL
    初识SQL结构化查询语言(StructuredQueryLanguage)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库管理系统(RelationalDatabaseManagementSystem:RDBMS)的语言,和我们所熟悉的Java、php、python等程序语言一样,也是......
  • 前端使用 Konva 实现可视化设计器(15)- 自定义连接点、连接优化
    前面,本示例实现了折线连接线,简述了实现的思路和原理,也已知了一些缺陷。本章将处理一些缺陷的同时,实现支持连接点的自定义,一个节点可以定义多个连接点,最终可以满足类似图元接线的效果。请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue哟~github源码g......
  • 在 Microsoft SQL Server 2012 中,修改密码的方法与 SQL Server 2000 相比有所变化,但基
    在MicrosoftSQLServer2012中,修改密码的方法与SQLServer2000相比有所变化,但基本思路是相似的。以下是几种常见的方法:使用SQLServerManagementStudio(SSMS):这仍然是最常见和推荐的方法。通过打开SQLServerManagementStudio,连接到相应的SQLServer实例,然后......
  • 封装 SqlHelper 数据访问类
     usingSystem;usingSystem.Collections.Generic;usingSystem.Data.SqlClient;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Data;usingSystem.Configuration;namespaceDAL.SqlHelper{publicclassSqlHelper{......
  • MySQL入门学习-聚合和分组.子查询.相关子查询
        在MySQL中,子查询是指在一个查询语句中嵌套另一个查询语句。子查询可以分为相关子查询和非相关子查询两种类型。    相关子查询是指子查询的执行结果依赖于外部查询中的值。在执行相关子查询时,MySQL会先执行外部查询,然后根据外部查询的结果来执行子查询......
  • 端口占用多:UE4/UE5像素流送云推流时如何优化端口使用?
    许多用户反映,在使用UE4或UE5进行像素流送云推流时,端口的占用数量较多。这促使我们思考,是否有方案能够减少这种资源占用?目前,像素流送技术对于端口的要求是每个独立用户占用一个端口。然而,但在实际场景中,尤其在用户数量众多,访问人数大的情况下,往往无法提供足够的端口资源。这主......
  • 各种方法优化背包
    对应试题为HDU5887HerbsGathering(背包问题的剪枝技巧)_搜索剪枝在装满背包的前提下求最小的多余个数-CSDN博客  1:使用map进行优化#include<bits/stdc++.h>#definelllonglongusingnamespacestd;map<int,ll>mp,tmp;map<int,ll>::iteratorit;intmain(){ int......
  • 18.9k star!一个高性能的嵌入式分析型数据库,主要用于数据分析和数据处理任务。
    大家好,今天给大家分享的是一个开源的面向列的关系数据库管理系统(RDBMS)。DuckDB是一个嵌入式的分析型数据库,它提供了高性能的数据分析和数据处理能力。DuckDB的设计目标是为数据科学家、分析师和数据工程师提供一个快速、灵活且易于使用的数据分析工具。它支持SQL查询语言,并提......