㈠ 底:
  
  2014/8/18 13点37分收到前端说反馈有玩家掉线情况,检查CPU、慢查询、DB请求量,并未发现异常,DB表现一如往常。

㈡ 定位原因:

INSERT INTO t (col1, col2, col3, col4, col5, col6, col7) VALUES ('3532082239485507011_130_99', '130_99', 130, 99, 3532082239485507011, 2172353000317425008, 29078) 

这个长事务运行 1个多小时没有退出,Kill 掉相应的进程。程序前端恢复正常

㈢ 处理思路:

⑴ 查询视图

select trx_id,trx_state,trx_started,trx_requested_lock_id,trx_weight,trx_mysql_thread_id from information_schema.innodb_trx where trx_state='RUNNING';

⑵ show engine innodb status\G; 关注Transactions部分提取SQL及事务信息

㈣ 我的疑问:

为什么这条运行了1个多小时的SQL没有被记录到慢查询日志中呢??

㈤ 原来如此:

Query_time - Lock_time > long_query_time  <===记录
Query_time - Lock_time < long_query_time  <===不记录

㈥ 模拟场景:

⑴ Query_time - Lock_time > long_query_time

Session_A:mysql> begin;
Query OK, 0 rows affected (0.00 sec)mysql> select emp_no,hire_date from employees where emp_no=10170 for update;
+--------+------------+
| emp_no | hire_date  |
+--------+------------+
|  10170 | 1986-01-02 |
+--------+------------+
1 row in set (0.00 sec)Session_B:mysql> select emp_no,hire_date,sleep(3) from employees where emp_no=10170 for update;

过段时间在A做commit,B会运行、并被记录到slow log中:

# Time: 140818 22:37:31
# User@Host: root[root] @ localhost []  Id:     1
# Query_time: 3.049016  Lock_time: 0.018891 Rows_sent: 1  Rows_examined: 1
use employees;
SET timestamp=1408372651;
select emp_no,hire_date,sleep(3) from employees where emp_no=10170 for update;

⑵ Query_time - Lock_time < long_query_time

Session_A:mysql> begin;
Query OK, 0 rows affected (0.00 sec)mysql> select emp_no,hire_date from employees where emp_no=10170 for update;
+--------+------------+
| emp_no | hire_date  |
+--------+------------+
|  10170 | 1986-01-02 |
+--------+------------+
1 row in set (0.00 sec)Session_B:mysql> select emp_no,hire_date from employees where emp_no=10170 for update;

过段时间在A做commit,B会运行、但不会被记录到slow log中

㈦ 我的收获:

我们日常做性能剖析实际上应该包含2个方面:

1)基于运行时间的分析

2)基于等待时间的分析

By water

Good Luck!

版权声明:本文博主原创文章。博客,未经同意不得转载。

转载于:https://www.cnblogs.com/gcczhongduan/p/4843208.html

为什么不记录慢速查询?相关推荐

  1. 浅析Entity Framework Core2.0的日志记录与动态查询条件

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去 ...

  2. oracle分页查询前10条,Oracle查询前十条记录及分页查询(第5条到第10记录)

    Oracle查询前10条记录及分页查询(第5条到第10记录) 如果你想了解Oracle查询前10条记录的相关实际应用方案的话,你就可以点击以下的文章对其在实际相关操作中的正确用法,有一个更加完善的认识 ...

  3. 实战演练 | MySQL PROCESSLIST 表和 Navicat Monitor 识别慢速查询的简单方法

    通常,当数据库长时间运行较慢时,罪魁祸首往往是"坏"查询.也就是说,查询未完全优化.编写不当或使用户能够从数据库中获取无限数量的行.我们可以通过在服务器上投入更多资源来减轻一些痛苦 ...

  4. 327、淘宝用户浏览轨迹【逛淘宝记录】的查询设计

    问题:淘宝用户浏览轨迹[逛淘宝记录]的查询设计,用MySQL存储后分库分表,怎么实现用户自己去查询个人的浏览记录. 我回答按用户id分,面试官说有问题让我再想想,我想不出来.大佬们看看用户id分会有什 ...

  5. JDBC实现四六级考试记录添加、查询、删除功能

    JDBC实现四六级考试记录添加.查询.删除功能 1. 代码演示 2. 项目的目录结构 3. 数据库mysql 4. code 4.1 ExamTest.class package com.shan.e ...

  6. MySQL-快速查询的方法-索引

    文章目录 前言 索引的分类 聚簇索引 唯一索引 普通索引 组合索引 InnerDB的索引数据结构B+树 B+树的查询方式 索引失效的本质 为什么要遵循最左匹配原则 明明设了索引,查询条件也有索引还是扫 ...

  7. WINCC SQL报警记录和变量记录数据读取查询

    WINCC SQL报警记录和变量记录数据读取查询 按时间查询报警记录 用到控件为listView,textbox,progctrl,ImageComboCtrl Sub X6309X94AE1X000 ...

  8. 记录一下添加查询场地坐标功能中修改判断条件和画点的大小

    主要是FillSolidRect函数的用法,我把它画出来的红色点改小了,更加准确 这个只是其中一个按钮,点完点之后,可以按下上下左右四个按钮来修改我们点的点的位置,让点和场地中确定的点重合,这样我们的 ...

  9. Oracle数据库中有关记录个数的查询

    一.查询表中全部的记录个数 可用两种方法,一种是在oracle的系统表中统计,另一种需要写存储过程统计,方法分别如下. 1.系统表中统计: SELECT sum(num_rows) FROM user ...

最新文章

  1. Qt中openGL的四个重要事件(initializeGL() resizeGL() paintGL() pdateGL())调用规则
  2. Executor框架的详解(转载)
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1091:求阶乘的和
  4. 剑指offer 二进制中1的个数
  5. 用C#在STM32上写第一个Hello world
  6. 栈/队列/分块问卷调查反馈——Weak in the Middle,Cutting Plants,最小公倍数
  7. 服务器CPU X86 ARM PowerPC RISC介绍
  8. HTTP状态码大全(常见 HTTP Status Code 含义查询)
  9. 解决网易云音乐登录接口-460问题
  10. 洛谷P1878 舞蹈课 贪心 堆
  11. vscode修改背景
  12. 硬盘分区被格式化了如何恢复
  13. win10设置计算机关机时间,win10怎样固定时间关机_win10怎样设置电脑关机时间设置...
  14. html5怎么设置滚动字幕,HTML5如何设置滚动字幕?_惠州网页设计
  15. ElasticSearch DSL语言高级查询+SpringBoot
  16. 一年收购三家科技公司,金拱门不做汉堡改行人工智能了?
  17. 草图大师里创建动态组件_教你搞定SketchUp草图大师动态组件模型下载
  18. TSC MH340 打印机驱动
  19. 遥感IDL二次开发(大气校正)
  20. java对脚本语言的支持

热门文章

  1. Ubuntu16.04 pip3 install 报错 working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  2. Git 常用操作(3)- 本地分之显示、创建、切换、合并和删除操作
  3. 2019.01-02 总结
  4. centos7samba服务的搭建
  5. 分类问题-样本权重(sample_weight)和类别权重(class_weight)
  6. 基于PyTorch的Seq2Seq翻译模型详细注释介绍(一)
  7. kwargs.pop是什么意思
  8. PyTorch: 序列到序列模型(Seq2Seq)实现机器翻译实战
  9. 遗传算法的简单介绍以及模式定理的简单证明
  10. LeetCode简单题之打折购买糖果的最小开销