iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >关于long_query_time参数的一个测试
  • 582
分享到

关于long_query_time参数的一个测试

2024-04-02 19:04:59 582人浏览 泡泡鱼
摘要

创建测试表,其建表语句如下:Mysql> show create table test1;+-------+----------------------------------------------

创建测试表,其建表语句如下:

Mysql> show create table test1;

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                                                       |

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+

| test1 | CREATE TABLE `test1` (

  `a` int(10) DEFAULT NULL,

  `b` varchar(10) DEFAULT NULL,

  KEY `test_index_a` (`a`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)


插入测试数据:

mysql> insert into test1 values (1,'a'),(2,'a'),(3,'a'),(4,'d'),(5,'e'),(6,'f'),(7,'g'),(8,'h'),(9,'i'),(10,'j'); 

Query OK, 10 rows affected (0.00 sec)

Records: 10  Duplicates: 0  Warnings: 0


mysql> select * from test1;

+------+------+

| a    | b    |

+------+------+

|    1 | a    |

|    2 | a    |

|    3 | a    |

|    4 | d    |

|    5 | e    |

|    6 | f    |

|    7 | g    |

|    8 | h    |

|    9 | i    |

|   10 | j    |

+------+------+

10 rows in set (0.00 sec)


数据库slow日志相关参数配置:

slow_query_log = 1

slow_query_log_file = /data/mysql/mysql3306/slow_statement.log

long_query_time = 0

log_queries_not_using_indexes = 0



session A:


mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)


mysql> update test1 set b='xx' where b='a';

Query OK, 3 rows affected (0.00 sec)

Rows matched: 3  Changed: 3  Warnings: 0


mysql> commit;

Query OK, 0 rows affected (0.01 sec)



session B:


mysql> update test1 set b='yy' where b='a';


Query OK, 0 rows affected (9.38 sec)

Rows matched: 0  Changed: 0  Warnings: 0


mysql> commit;

Query OK, 0 rows affected (0.00 sec)


慢日志记录:

# Time: 2018-03-30T02:42:16.027553Z

# User@Host: root[root] @ localhost []  Id:    47

# Query_time: 0.001280  Lock_time: 0.000310 Rows_sent: 0  Rows_examined: 10

SET timestamp=1522377736;

update test1 set b='xx' where b='a';

# Time: 2018-03-30T02:42:29.785509Z

# User@Host: root[root] @ localhost []  Id:    47

# Query_time: 0.008619  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0

SET timestamp=1522377749;

commit;

# Time: 2018-03-30T02:42:29.785817Z

# User@Host: root[root] @ localhost []  Id:    48

# Query_time: 9.375238  Lock_time: 9.374875 Rows_sent: 0  Rows_examined: 11

SET timestamp=1522377749;

update test1 set b='yy' where b='a';


小结1:当参数long_query_time设置为0,则执行时长大于0s的语句都会记录到slowlog里面。


============================================================================



数据库slow日志相关参数配置:

slow_query_log = 1

slow_query_log_file = /data/mysql/mysql3306/slow_statement.log

long_query_time = 0.0001

log_queries_not_using_indexes = 0


session A:


mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)


mysql> update test1 set b='xx' where b='a';

Query OK, 3 rows affected (0.01 sec)

Rows matched: 3  Changed: 3  Warnings: 0


mysql> commit;

Query OK, 0 rows affected (0.01 sec)


session B;


mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)


mysql> update test1 set b='yy' where b='a';

Query OK, 0 rows affected (8.63 sec)

Rows matched: 0  Changed: 0  Warnings: 0


mysql> commit;

Query OK, 0 rows affected (0.00 sec)


慢日志记录:

# Time: 2018-03-30T02:52:11.214300Z

# User@Host: root[root] @ localhost []  Id:     3

# Query_time: 0.001435  Lock_time: 0.000561 Rows_sent: 0  Rows_examined: 10

SET timestamp=1522378331;

update test1 set b='xx' where b='a';

# Time: 2018-03-30T02:52:25.326360Z

# User@Host: root[root] @ localhost []  Id:     3

# Query_time: 0.007641  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0

SET timestamp=1522378345;

commit;

# Time: 2018-03-30T02:52:25.327693Z

# User@Host: root[root] @ localhost []  Id:     4

# Query_time: 8.629981  Lock_time: 8.629332 Rows_sent: 0  Rows_examined: 11

SET timestamp=1522378345;

update test1 set b='yy' where b='a';


小结2:当参数long_query_time设置为0.0001,则执行时长大于0.0001s的语句都会记录到slowlog里面。


=============================================================================


数据库slow日志相关参数配置:

slow_query_log = 1

slow_query_log_file = /data/mysql/mysql3306/slow_statement.log

long_query_time = 1

log_queries_not_using_indexes = 0


session A:


mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)


mysql> update test1 set b='xx' where b='a';

Query OK, 3 rows affected (0.00 sec)

Rows matched: 3  Changed: 3  Warnings: 0


mysql> commit;

Query OK, 0 rows affected (0.00 sec)


session B:


mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> update test1 set b='yy' where b='a';

Query OK, 0 rows affected (10.13 sec)

Rows matched: 0  Changed: 0  Warnings: 0


mysql> commit;

Query OK, 0 rows affected (0.00 sec)


慢日志记录:

# Time: 2018-03-30T02:56:32.433616Z

# User@Host: root[root] @ localhost []  Id:     5

# Query_time: 0.001227  Lock_time: 0.000149 Rows_sent: 1  Rows_examined: 1050

SET timestamp=1522378592;

SHOW VARIABLES LIKE 'pid_file';

/usr/local/mysql/bin/mysqld, Version: 5.7.20-log (MySQL CommUnity Server (GPL)). started with:

tcp port: 3306  Unix Socket: /data/mysql/mysql3306/mysql3306.sock

Time                 Id Command    Argument


小结3:当参数long_query_time设置为1,则执行时长不大于1s的语句不会记录到slowlog里面。



总结:从上面3个实验可以发现,参数long_query_time影响了慢SQL在slowlog的记录。只有运行时长大于long_query_time参数的SQL,才会记录到slowlog。这个运行时长,是不包括由于事务等待消耗的时间的。

也就是说,exec_time= query_time - lock_time。 当exec_time >= long_query_time的SQL才会被记录到慢SQL里面。很多人会误认为只有query_time>= long_query_time就会记录到slowlog,需要纠正这个认知。


您可能感兴趣的文档:

--结束END--

本文标题: 关于long_query_time参数的一个测试

本文链接: https://www.lsjlt.com/news/35547.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于useEffect的第二个参数解读
    目录useEffect的第二个参数useEffect规则第二个参数的规则不同值的参数示例useEffect使用技巧useEffect的第二个参数 useEffect规则 在每次ren...
    99+
    2024-04-02
  • 关于junit测试需要的依赖
    目录junit测试需要的依赖intellj idea添加依赖junit报错Dependency‘junit:junit:4.12‘ not found总结ju...
    99+
    2022-12-27
    junit测试 junit依赖 测试junit
  • 一个H3CNE测试的配置
                                            H3CNE的配置 拓扑图:     R1 [R1]dis cu #  version 5.20, Alpha 1011 #  sysname R1 #  p...
    99+
    2023-01-31
    测试 H3CNE
  • 关于Net6 Xunit 集成测试的问题
    目录1.新建测试项目2.使用到的类库3.注入4.创建测试类测试方法:5.排序执行测试方法:6.运行测试项目:对于单元测试、集成测试大部分开发的朋友都懒得去写,因为这要耗费精力去设计去...
    99+
    2024-04-02
  • golang可变参数是否可以用于单元测试?
    go 语言中的可变参数允许函数接收数量不定的参数,使用 ... 语法。然而,单元测试无法直接传递可变参数。可以使用反射创建测试助手函数,使用 reflect.valueof(sumnum...
    99+
    2024-04-29
    单元测试 可变参数 golang
  • 关于MeasureString的参数问题
    MeasureString方法是用来测量指定字符串在指定字体和大小下的大小的。它的参数有以下几个:1. text:要测量大小的字符串...
    99+
    2023-08-08
    MeasureString
  • JUnit5中的参数化测试实现
    目录参数化测试的基本概念使用不同类型的参数使用自定义的参数参数化测试的高级用法结论JUnit是Java中最受欢迎的测试框架之一。JUnit 5是JUnit的最新版本,它引入了许多新功...
    99+
    2023-05-20
    JUnit5 参数化测试 JUnit 参数化测试
  • pytest运行指定的测试参数
    文章目录 一.mark1.背景:案例1:只执行smoke类型的测试用例 二.跳过测试skip案例1:pytest.mark.skip():跳过某些用例案例2:如果在整个类中添加@pyt...
    99+
    2023-09-04
    pytest python 开发语言
  • 关于软件测试的误解有哪些
    本篇内容主要讲解“关于软件测试的误解有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于软件测试的误解有哪些”吧!误解一:“在整个项目生命周期中,测试人员只...
    99+
    2024-04-02
  • Angular中关于单元测试的面试题有哪些
    这篇文章主要介绍了Angular中关于单元测试的面试题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Angular中的测试有哪些种,基于哪些测试框架Angular的测试...
    99+
    2023-06-15
  • 关于mybatis传入参数一直为null的问题
    目录mybatis传入参数一直为nullmybatis字段为null的解决先讲一讲sql语句和ResultMap的顺序实体类UserInfoUserMapper.xml错误代码正确写...
    99+
    2024-04-02
  • Golang函数参数传递的测试和调试技术
    在 go 中,函数参数通过值传递或引用传递。值传递创建参数的副本,而引用传递创建对参数的引用。测试参数传递可使用单元测试、断言、调试器和日志。在引用传递的情况下,对参数的修改将影响原始参...
    99+
    2024-04-13
    golang 函数参数
  • PHP 函数参数类型的单元测试
    通过使用 phpunit 和 @dataprovider 注解,可以单元测试 php 函数的参数类型:创建一个测试类。使用 @dataprovider 提供不同类型的数据。在测试方法中,...
    99+
    2024-04-20
    php 单元测试
  • 如何在JavaWeb中编写一个单元测试类测试数据库
    本篇文章给大家分享的是有关如何在JavaWeb中编写一个单元测试类测试数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、...
    99+
    2023-06-14
  • 关于python实现requests接口测试的问题
    requests接口测试的介绍 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests是Python语言的第三方的...
    99+
    2024-04-02
  • innodb_flush_log_at_trx_commit参数性能测试是怎样的
    innodb_flush_log_at_trx_commit参数性能测试是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 ...
    99+
    2024-04-02
  • 关于Python函数的定义和参数
    目录什么是函数? Python中的函数定义函数的参数(带参数的函数)(1)定义(2)必须参数(又叫位置参数)(3)默认参数(4)关键字参数(5)可变长参数5.1单星号可变5...
    99+
    2023-05-17
    Python函数定义 Python函数参数
  • 关于python中range()的参数问题
    目录range()的参数问题当参数只有一个时range(n)当参数有两个时range(x,y)当参数有三个时range(i,j,k)range(1,2)函数只有两个参数时语法rang...
    99+
    2024-04-02
  • 一个关于 i++ 和 ++i 的面试题打趴了所有人
    前言 都说大城市现在不好找工作,可小城市却也不好招人。 我们公司招了挺久都没招到,主管感到有些心累。 我提了点建议,是不是面试问的太深了,在这种小城市,能干活就行。 他说自己问的...
    99+
    2023-09-26
    java 后端 面试
  • 如果这10道关于数据库的测试题你都会,面试必过!
    一、什么是数据库测试?数据库测试也称为后端测试。数据库测试分为四个不同的类别。[if !supportLists]· [endif]数据完整性测试[if !supportLists]· [endif]数据有效性测试[if !supportL...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作