如何在MySQL中找到慢SQL语句?

发布于 科技 2024-02-24
4个回答
  1. 匿名用户2024-01-25

    如果我们经常在慢查询肢体橡皮擦日志中发现某条语句执行缓慢,在表结构、索引结构、统计中找不到原因,我们可以利用sys系统库中的王牌:性能模式的等待事件结合图像找出问题的症结所在。 那么会话视图有什么用呢?

    您可以使用它来查看当前用户会话的进程列表信息,并在视图中显示数据(使用此视图可以查询所有前台和后台线程的状态信息,按进程等待时间和最近一次语句执行完成的时间降序排序。 数据**:性能架构表和图形,例如线程、事件等待当前、事件语句当前、事件阶段当前、事件事务当前、会话连接属性等),查询结果字段类似于 ProcessList 视图,但会话视图会筛选出后台线程,并且仅显示与前台(用户)线程相关的统计信息。

    “日历”视图是 中的新增功能。 下面是使用会话视图的查询结果集。

    callcall

    2) 查询会话

    select * from session where command=‘query‘ and conn_id!=connection_id();

    标签: 线程 callsum, view 和 statement 事件 lisfrom

  2. 匿名用户2024-01-24

    以下是解决方法:

    1.将数据、日志和索引放在不同的设备上,以提高读取速度;

    2、将桌子垂直和水平分开,以减小桌子的尺寸;

    3.升级硬件;

    4、根据查询条件,建立索引,优化索引,优化访问方式,限制结果集中的数据量,注意适当的填充因子,索引应尽可能小,使用字节数少的列构建索引,不要为性别字段等有限数量的字段值构建单个索引;

    4.提高网络速度。

  3. 匿名用户2024-01-23

    问:我们有一个 sql,用于查找没有主键和唯一键的表,但它在 mysql 上运行得很慢,我们该怎么办?

    在实验中,我们设置了一个MySQL环境,这里省略了构建步骤。

    编写一个简单的脚本来制作一批带主键和不带主键的表:

    执行以下脚本:

    现在执行以下 sql 查看效果:

    执行,感觉很慢。

    现在我们用DBA三板斧头,看一下执行计划:

    感觉有点苦,因为信息是元数据表,没有必要的统计信息。

    让我们显示警告并看一下 mysql 重写后的 sql

    让我们格式化 sql:

    你可以看到 mysql 会。

    select from a where not in (select x from b) 是非关联子查询。

    我转换了它。 从不存在的地方选择(从 B 中选择 1,其中 = 关联的子查询。

    如果我们自己是MySQL,我们可以在执行非关联子查询时使用一个非常简单的策略:

    select from a where not in (select x from b where ..非关联子查询:1

    扫描表B中的所有记录,找到符合条件的记录,将其存储在临时表C中,并建立索引2扫描表 A 中的记录,将其与临时表 C 中的记录进行比较,并直接在索引中进行比较,而关联子查询需要循环迭代:

    select from a where not exists (select 1 from b where = and ..关联的子查询扫描表 A 的每个记录 RA:扫描表 B 以查找满足 RA 条件的第一条记录。

    显然,关联子查询的扫描成本将高于非关联子查询的扫描成本。

    我们希望MySQL能排在第一位"缓存"子查询的结果(缓存这一步称为物化),但是MySQL认为不缓存更快,所以我们需要给MySQL一些指导。

    可以看到执行时间变成了 。

    1.对于信息架构中的元数据表,执行计划不提供有效信息。

    2.通过查看 MySQL 重写的 SQL,我们猜测优化器存在误报。

    3.我们添加了提示来指导 MySQL 做出正确的优化判断。

    但目前,我们的实验仅限于猜测,如果我们猜对了,一切都会好起来的,如果我们猜不到,我们将无法做出好的诊断。

  4. 匿名用户2024-01-22

    MySQL 数据库有几个配置选项,可以帮助我们及时捕获低效的 SQL 语句。

    1,slow_query_log

    如果设置为on,则可以捕获执行时间超过一定值的SQL语句。

    2,long_query_time

    如果SQL语句的执行时间超过此值,则会记录在日志中,建议设置为1或更短。

    3. 慢查询日志文件的文件名。

    4. 如果将不使用 indexes 参数的日志查询设置为 on,则它可以捕获所有不使用索引的 SQL 语句,尽管此 SQL 语句的执行速度可能相当快。

相关回答
5个回答2024-02-24

在项目开发中,总是需要检查后台执行的SQL语句,MySQL数据库也不例外。 命令,可以通过输出结果的字段说明来分析执行的SQL语句的类型,但不适合一般的初学者用户,所以通过日志文件查看SQL语句是最直接的方式。 >>>More

16个回答2024-02-24

介绍一个我自己用过的方法,比如快递单号是否重复的比较: >>>More

11个回答2024-02-24

你好,更新 mt2 set name = replace(name, substring(name, locate('', name),locate(', name)-locate(''+10, name)),''); >>>More

15个回答2024-02-24

查询搞笑的重点专业,进入学校官网,会写出学校的重点专业。 >>>More

7个回答2024-02-24

1.以win7系统为例,点击桌面左下角的“开始”按钮,在打开的菜单中点击“控制面板”。 >>>More