首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏搬砖笔记

    mysql】优化sql

    今天例行查看日志,发现有个sql在本地查询速度较快,在服务器环境下查询速度较慢,达到了6s之多。说下优化思路,原本事先将子查询优化下,后来排查下,发现是mysql缓存问题。为以后排查问题涨了点知识。 优化sql语句优化mysql配置、一、sql优化优化前SELECTspace_id,max_temp,min_temp,avg_temp,create_time FROM( SELECT space_id variables like 'innodb_buffer_pool%';image.png在线调整InnoDB缓冲池大小SET GLOBAL innodb_buffer_pool_size = 3221225472sql C:\ProgramData\MySQL\MySQL Server 5.7\my.ini路径图片修改my.ini搜索 innodb_buffer_pool_size注意:用记事本保存的话,要注意保存的文件的编码 必须是ANSI图片修改后,重启mysql即可。

    2.1K40编辑于 2022-06-06
  • 来自专栏第三方工具

    Mysqlsql优化

    Mysqlsql优化 index 1.MySQL的执行过程 2.索引的定义 3.MySQL执行计划explain or desc 4.索引使用/创建规则 5.弊端 6.设计规范 7.SQL建议 1 MySQL 的执行过程 2.索引的定义 3.MySQL执行计划 explain or desc 3.MySQL执行计划 使用 explain 了解并优化执行计划,非常重要; 执行计划的 id select Using where:表示 SQL 操作使用了 where 过滤条件。 可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。 小表 数据库中的表越小,在它上面执行的查询也就会越快。 存储过程 在所有的存储过程中,能够用SQL语句的,不建议用循环去实现!

    75110编辑于 2024-10-09
  • 来自专栏Owen's World

    MysqlSql排查

    出现sql警告,排查语句是否有问题。 mysql> SELECT * FROM `basketball_ls_match_odds` WHERE `match_id` = 3554260 AND `company_id` = 15 order create_time: 2020-07-23 17:43:37 update_time: 1970-12-31 08:00:00 1 row in set (0.50 sec) 复制代码 sql mysql> explain SELECT * FROM `basketball_ls_match_odds` WHERE `match_id` = 3554260 AND `company_id `; Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnings: 0 复制代码 再次查询 mysql> SELECT

    80520编辑于 2021-12-08
  • 来自专栏数据库技术

    MySQL SQL查询

    查询日志主要用来记录在MySQL数据库中执行时间超过指定阈值时间的查询语句。通过慢查询日志查找出效率底下的SQL语句,并根据需要进行优化。 查询日志是排查SQL语句性能问题的工具,如果非优化需求不建议开启,开启后会对数据库的性能带来一定影响。----1. # 查询日志的状态和位置mysql> SHOW VARIABLES LIKE 'slow_query%';+---------------------+------------------------ 在当前实例中开启查询日志(重启数据库会失效)# 开启查询日志mysql> set global slow_query_log = on;Query OK, 0 rows affected (0.01 查询日志清理# 清理命令[root@VM-4-4-centos mysql]# mysqladmin -uroot -p flush-logs# 查看清理结果[root@VM-4-4-centos mysql

    94880编辑于 2022-07-08
  • 来自专栏全栈程序员必看

    mysql查询sql统计_mysql服务启动

    一、概述 MySQL查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。 默认情况下,MySQL不启动查询日志。本文简单介绍如何开启查询日志,如何用mysqldumpslow分析查询。 SQL 语句 重启MySQL服务 重启MySQL后会看到/var/lib/mysql/slow-query.log文件。 可以看到上述查询的SQL语句被记录到日志中。 四、查询分析工具 mysqldumpslow mysqldumpslow是MySQL自带的分析查询的工具。该工具是Perl脚本。 语句 按照时间排的top 5个SQL语句 $ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log 按照时间排序且含有’like’的top 5个SQL

    4.3K20编辑于 2022-11-04
  • 来自专栏全栈程序员必看

    mysql查询日志_sql查询日志

    1、显示日志是否开启 show variables like ‘%slow_query_log%’ 2、查询超过多少秒才记录 show variables like ‘%long_query_time slow_query_log 全局变量设置为“ON”状态 set global slow_query_log=‘ON’; 2) 查询超过1秒就记录 set global long_query_time=1 3) 设置查询日志存放的位置 set global slow_query_log_file=’/usr/local/mysql/data/slow.log’; 配置文件设置 [mysqld] slow_query_log = ON slow_query_log_file = /usr/local/mysql/data/slow.log long_query_time = 1 重启MySQL服务 service mysqld restart 4、mysqldumpslow简单使用方法-mysqldumpslow详细用法 查询日志分析工具 mysqldumpslow经常使用的参数: -s,是order的顺序 —–

    5.5K10编辑于 2022-11-07
  • 来自专栏开源优测

    告别查询,解密MySQLSQL分析定位

    概述 在业务型java项目中最大的隐患项之一就是SQL,它影响到服务的稳定性,也是日常工作中经常导致程序的最大隐患,在日常开发中如何避免出现SQL,出现了SQL应该按照什么思路去解决是我们必须要知道 在项目的初期由于数据量少,不会对数据库造成太大的压力,但慢慢的随着业务的发展和时间的积累这些sql就会渐渐的成为sql,对数据库性能产生一定的影响,甚至影响程序正常运行。 2.3 key 表示 MySQL 实际选择的索引,重点需要注意 Using filesort 和 Using temporary,前者代表无法利用索引完成排序操作,数据较少时从内存排序,否则从磁盘排序, 后者 MySQL 需要创建一个临时表来保存结果。 2.4 rows 表示sql所查询的行数 2.5 extra 该列显示 MySQL 在查询过程中的一些详细信息。

    54611编辑于 2024-04-19
  • 来自专栏全栈程序员必看

    mysql如何优化查询_sql优化思路

    这篇文章主要是就在公司实习的时候,对SQL优化工作作出的一些整理。 在公司实习的时候,导师分配了SQL查询优化的任务,任务是这样的:每周从平台中导出生产数据库的查询文件进行分析。 (1)数据库中设置SQL查询 一、第一步.开启mysql查询 方式一: 修改配置文件 在 my.ini 增加几行: 主要是查询的定义时间(超过2秒就是查询 ),以及查询log日志记录( slow_query_log) 方法二:通过MySQL数据库开启查询: (2)分析查询日志 直接分析mysql查询日志 ,利用explain关键字可以模拟优化器执行SQL查询语句,来分析sql查询语句 例如:执行EXPLAIN SELECT * FROM res_user ORDER BYmodifiedtime 查询的原因都是:引起filesort (5)分析具体的SQL语句 1、两个表选哪个为驱动表,表面是可以以数据量的大小作为依据,但是实际经验最好交给mysql查询优化器自己去判断。

    5.6K31编辑于 2022-11-04
  • 来自专栏devops_k8s

    MysqlSQL分析及优化

    为何对SQL进行治理 从数据库角度看:每个SQL执行都需要消耗一定I/O资源,SQL执行的快慢,决定资源被占用时间的长短。假设总资源是100,有一条SQL占用了30的资源共计1分钟。 执行次数多的SQL优先治理 如果有一类SQL高并发集中访问某一张表,应当优先治理。 Mysql执行原理 绿色部分为SQL实际执行部分,可以发现SQL执行2大步骤:解析,执行。 案例 (mysql数据高CPU问题定位和优化) 开启查询 ## 开关 slow_query_log=1 ## 文件位置及名字 slow_query_log_file=/data/mysql/slow.log > select @@long_query_time; # 默认十秒才记录日志 mysql> show variables like 'slow_query_log%'; mysql> show 7)BLOB 和 TEXT 类型的列只能创建前缀索引 3、mysql常见sql规范: 1)SQL语句尽可能简单 大SQL语句尽可能拆成小SQL语句,MySQL对复杂SQL支持不好。

    2K42发布于 2021-06-22
  • 来自专栏洁癖是一只狗

    Mysqlsql执行如此

    可以用查询sys.schema_table_lock_waits这张表,我们就可以直接找到阻塞的process id ,把这个连接用kill命令断开即可(mysql启动的时候设置performation_schema 等待行锁 首先,我们看看下面sql语句 mysql> select * from t where id=1 lock in share mode; 要执行上面语句的时候,这个记录就会要加读锁,如果这个时候已经有一个事物在这行记录上持有一个写锁 这个问题并并不难分析,问题是如何查出谁占着这个写锁,如果你用的mysql5.7,可以使用下面语句 mysql> select * from t sys.innodb_lock_waits where 第二类:查询 我们执行下面语句 select * from t where c=50000 limit 1; 有字段c没有索引,这个语句只能全表扫描,因此要扫描5万行,再看看日志的记录. ? 按照上面操作我们再看看对应的查询日志 ? ? 我们发现lock in share mode加锁操作居然时间比没有加锁的查询块了,超出了我们的预期,我们再看看每个sql查询结果 ?

    2K30发布于 2020-11-11
  • 来自专栏用户9378957的专栏

    你的哪些SQL?看看MySQL查询日志吧

    那么如果有一个文件能够将这些使用过程中比较慢的SQL记录下来,定期去分析排查,那该多美好啊。这种情况MySQL也替我们想到了,它提供了SQL查询的日志,本文就分享下如何使用吧。 什么是查询日志? MySQL询日志,提供了记录在MySQL中响应时间超过指定阈值语句的功能,比如设定阈值为3秒,那么任何SQL执行超过3秒都会被记录下来。 : set global slow_query_log_file = '/usr/local/mysql/data/alvin-slow-slow.log'; 复制代码 怎么查看SQL内容? 查询日志分析工具mysqldumpslow 果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具 mysqldumpslow 。 怎么删除SQL日志?

    93120编辑于 2023-02-22
  • 来自专栏全栈程序员必看

    mysql查看查询的语句_sql查询如何优化

    Mysql查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“查询”。 Mysql5.0以上的版本可以支持将执行比较慢的SQL语句记录下来。 mysql> show variables like ‘long%’; 注:这个long_query_time是用来定义于多少秒的才算“查询” +—————–+———–+ | Variable_name mysql查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql查询日志记录呢? Windows: 当你是第一次开启mysql查询,会在你指定的目录下创建这个记录文件,本文就是mysqlslowquery.log,这个文件的内容大致如下(第一次开启MYSQL查询的情况下) E:

    5.3K20编辑于 2022-11-19
  • 来自专栏大大刺猬

    mysqlSQL导致mysqldump备份失败 1205

    导读mysql备份有时候会报错如下mysqldump: [Warning] Using a password on the command line interface can be insecure.WARNING 看看对应函数(void mysql_ha_flush(THD *thd))的描述吧.Flush (close and mark for re-open) all tables that should be 默认600秒)总结备份通常是在凌晨, 这个时候还有sql的情况是不常见的. (查看对应日志可以找到对应sql, 可以看看执行计划是否使用了索引)1205 只有sql执行阶段超长才会遇到, 未提交的事务不会导致这个问题.如果无法优化sql/建索引的话, 那就只有修改备份时间或者增大超时时间

    54920编辑于 2024-09-04
  • 来自专栏DBA随笔

    MySQL常见问题之SQL查询

    MySQL常见问题之SQL查询 可能是经常处理业务,最近总是听到开发的同学说SQL的查询。然后问我为什么,让我在数据库层面找原因。 首先,当有业务方对我说SQL查询的时候,一般我会先问几个问题: 1、这个SQL是偶尔比较慢还是一直这么? 第四、其他未知的神秘力量,例如大表操作、大事务、网络带宽被占用等等 如果是一直这么,一般情况下,SQL层面的问题可能比较大,而SQL层面,首先要考虑这几个要素: 1、表的数据量有多大? 很多时候,SQL是有多种原因结合起来造成的,例如,当你的表中数据量很大的时候,你的SQL需要从中过滤很大一部分数据,但是buffer pool的值又设置的很小,因此内存和磁盘之间需要频繁的交换数据, 说一个真实的例子,这两天线上有个环境的查询性能一直很不好,我分析了那个SQL,发现SQL也走了索引,而且过滤的行数也不是特别多,一度百思不得其解,最后查出来的原因让人哭笑不得,交付MySQL实例的时候,

    1.4K10发布于 2019-11-06
  • 来自专栏芋道源码1024

    MySQL查询:SQL定位、日志分析与优化方案,真心不错!

    进行治理 治理的优先级 MySQL执行原理 如何发现查询SQL 查询分析示例 SQL语句常见优化 总结 ---- 一个sql执行很慢的就叫sql,一般来说sql语句执行超过5s就能够算是sql ,需要进行优化了 为何要对SQL进行治理 每一个SQL都需要消耗一定的I/O资源,SQL执行的快慢直接决定了资源被占用时间的长短。 项目地址:https://github.com/YunaiV/onemall MySQL执行原理 为了更好的优化SQL,我们来简单了解下MySQL的执行原理 绿色部分为SQL实际执行部分,主要分为两步 - 表示记录没有使用索引的查询 logqueriesnotusingindexes   开启查询会带来CPU损耗与日志记录的IO开销,所以建议间断性的打开查询日志来观察MySQL运行状态 查询分析示例 ,如果外表数据量很大,查询速度会非常MySQL5.6中,有对内查询做了优化,优化后SQL如下 SELECT t1.* FROM t1 JOIN t2 ON t1.id = t2.id; 但也仅针对

    1.2K10编辑于 2022-06-07
  • 来自专栏全栈程序员必看

    Mysql 查看执行sql语句「建议收藏」

    开启查询日志 mysql> set global slow_query_log=1; mysql> set global slow_query_log=’ON’ 注:打开日志记录 定义时间SQL查询的超时时间 mysql> set global long_query_time = 0.005; 查看查询日志的保存路径 mysql> show variables like ‘slow%’; mysql > show global variables like ‘slow_query_log_file’; 查看查询 cat /var/log/mysql/slow.log 发布者:全栈程序员栈长,转载请注明出处

    2.8K10编辑于 2022-07-18
  • 来自专栏CSDN文章

    MySQL-如何定位查询SQL以及优化

    查询日志记录SQL 定位SQL可以通过慢查询日志来查看SQL,默认的情况下,MySQL数据库不开启查询日志(slow query log),需要手动把它打开 SET GLOBAL slow_query_log ,需要使用profiling,开启profiling参数后,后续执行的SQL语句都会记录其资源开销,包括IO,上下文切换,CPU,内存等等,可以根据这些开销进一步分析当前SQL的瓶颈再进一步进行优化 Optimizer Trace分析详情 profile只能查看到SQL的执行耗时,但无法看到SQL真正执行的过程信息,不知道MySQL优化器是如何选择执行计划,这时候,可以使用Optimizer Trace,它可以跟踪执行语句的解析优化执行的全过程 三个阶段分为对应:准备阶段、分析阶段、执行阶段 确定问题采用响应措施 ● 多数SQL都跟索引有关,比如不加索引,索引不生效、不合理等,这时候 ,可以优化索引 ● 还可以优化SQL语句,比如一些in元素过多问题(分批),深分页问题(基于上一次数据过滤等),进行时间分段查询 ● SQL没办法很好优化,可以改用ES的方式,或者数仓 ● 如果单表数据量过大导致查询

    3.2K62编辑于 2023-10-17
  • 来自专栏自学测试之道

    开启MYSQL查询日志,监控优化SQL效率

    一、安装登录MYSQL 1、下载地址:MYSQL官网(直接next安装即可) 2、安装完成后点击如下图所示输入密码进行登录操作 ? 登录成功 二、查看是否开启了查询日志 输入命令【show variables like 'slow_query_log'】,页面会显示是否开启了查询日志,slow_query_log =ON,代表已经开启 日志 三、开启索引的监控 通过设置log_queries_not_using_indexes开启为使用索引的监控,输入命令show variables like 'log_queries_not_using_indexes my.ini找到[mysqld]下面加上 log-slow-queries = F:\MySQL\log\mysqlslowquery.log long_query_time = 2 2.执行命令show 日志路径 3.显示的日志记录在/apps/logs/mysql/slow3306.log目录 4.测试结果 ? 结果 5.查询日志记录 ? 日志记录

    2.8K20发布于 2019-09-29
  • 来自专栏Java架构师必看

    如何查找MySQL中查询SQL语句

    如何查找MySQL中查询SQL语句 强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 查看MySQL是否启用了查看SQL的日志文件 (1) 查看SQL日志是否启用 mysql> show variables like 'log_slow_queries ----+ | log_slow_queries | ON    | +------------------+-------+ 1 row in set (0.00 sec) (2) 查看执行于多少秒的 SQL会记录到日志文件中 mysql> show variables like 'long_query_time'; +-----------------+-------+ | Variable_name ="C:/temp/mysql_slow.log" long_query_time=1 log指示日志文件存放目录; log_slow_queries指示记录执行时间长的sql日志目录; long_query_time

    7.5K10发布于 2021-09-18
  • 来自专栏全栈程序员必看

    Mysql查询_mysql服务启动

    一、开启查询日志 1、查看是否开启:show variables like ‘slow_query_log’; 2、查看是否开启记录未使用索引的查询:show variables like ‘ log_queries_not_using_indexes=on; 4、查看超过多长时间的语句才会被记录到日志中:show variables like ‘long_query_time’; 5、开启查询日志 :set global slow_query_log=on; 6、查看查询日志记录位置:show variables like ‘slow_query_log_file’; 7、查看查询日志:tail -f /var/lib/mysql/e3edd0de9e5d-slow.log; 二、分析查询日志 1、mysqldumpslow: mysqldumpslow -t 3 /var/lib/mysql pt-query-digest;chmod u+x pt-query-digest;mv /root/pt-query-digest /usr/bin/; 2)、简单使用:pt-query-digest /var/lib/mysql

    6.7K10编辑于 2022-11-04
领券