返回顶部
首页 > 资讯 > 数据库 >怎么理解并掌握mysql的show processlist time负数
  • 947
分享到

怎么理解并掌握mysql的show processlist time负数

2024-04-02 19:04:59 947人浏览 独家记忆
摘要

本篇内容介绍了“怎么理解并掌握Mysql的show processlist time负数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望

本篇内容介绍了“怎么理解并掌握Mysql的show processlist time负数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、show processlist

函数接口:mysqld_list_processes

栈帧:

#0  mysqld_list_processes (thd=0x7ffedc008250, user=0x0, verbose=false) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_show.cc:2370
#1  0x00000000015ccaab in mysql_execute_command (thd=0x7ffedc008250, first_level=true) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:3789
#2  0x00000000015d2fde in mysql_parse (thd=0x7ffedc008250, parser_state=0x7fffec5bd600) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:5901
#3  0x00000000015c6b72 in dispatch_command (thd=0x7ffedc008250, com_data=0x7fffec5bdd70, command=COM_QUERY)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:1490
#4  0x00000000015c58ff in do_command (thd=0x7ffedc008250) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:1021
#5  0x000000000170e578 in handle_connection (arg=0x5f4fe40) at /mysqldata/percona-server-locks-detail-5.7.22/sql/conn_handler/connection_handler_per_thread.cc:312
#6  0x0000000001945538 in pfs_spawn_thread (arg=0x6809be0) at /mysqldata/percona-server-locks-detail-5.7.22/storage/perfschema/pfs.cc:2190
#7  0x00007ffff7bcfaa1 in start_thread () from /lib64/libpthread.so.0
#8  0x00007ffff6b37c4d in clone () from /lib64/libc.so.6

其实这个时间很好理解如下:

  • 服务器时间 - 命令发起的时间

  • 从库SQL线程则是 服务器时间 - Event header的时间(来自主库)

因此出现负数是可能的。这里计算时间percona 和 官方版本 不同如下:

官方 5.6.25 .5.7.23 都是(可能出现负数):

    if (thd_info->start_time)
      protocol->store_long ((longlong) (now - thd_info->start_time));

percona 5.7.22(避免出现负数用0代替):

if (thd_info->start_time)
    {
      protocol->store_long ((thd_info->start_time > now) ? 0
        : (longlong) (now - thd_info->start_time));
    }

可以看到percona 对计算时间做了逻辑变化,负数会显示为0。关于负数的测试如下:
  怎么理解并掌握mysql的show processlist time负数

二、select * from infORMation_schema.processlist;

函数接口:fill_schema_processlist

栈帧:

#0  Field_long::store (this=0x7ffedc0164c8, nr=-1783905, unsigned_val=false) at /mysqldata/percona-server-locks-detail-5.7.22/sql/field.cc:4121
#1  0x000000000165062d in Fill_process_list::operator() (this=0x7fffec5bb5f0, inspect_thd=0x67be360)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_show.cc:2591
#2  0x0000000000eef320 in Do_THD::operator() (this=0x7fffec5ba580, thd=0x67be360) at /mysqldata/percona-server-locks-detail-5.7.22/sql/mysqld_thd_manager.cc:46
#3  0x0000000000eefa0f in std::for_each<THD**, Do_THD> (__first=0x7fffec5ba5d0, __last=0x7fffec5ba5e8, __f=...)
    at /usr/lib/GCc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_alGo.h:4200
#4  0x0000000000eeeecc in Global_THD_manager::do_for_all_thd_copy (this=0x3003340, func=0x7fffec5bb5f0)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/mysqld_thd_manager.cc:262
#5  0x0000000001637280 in fill_schema_processlist (thd=0x7ffedc008250, tables=0x7ffedc0016a8, cond=0x0)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_show.cc:2608
#6  0x000000000164ce11 in do_fill_table (thd=0x7ffedc008250, table_list=0x7ffedc0016a8, qep_tab=0x7ffedc015d40)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_show.cc:8791
#7  0x000000000164d31b in get_schema_tables_result (join=0x7ffedc015660, executed_place=PROCESSED_BY_JOIN_EXEC)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_show.cc:8921
#8  0x0000000001621761 in JOIN::prepare_result (this=0x7ffedc015660) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_select.cc:909
#9  0x000000000157e699 in JOIN::exec (this=0x7ffedc015660) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_executor.cc:124
#10 0x0000000001620327 in handle_query (thd=0x7ffedc008250, lex=0x7ffedc00a880, result=0x7ffedc0025c8, added_options=0, removed_options=0)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_select.cc:185
#11 0x00000000015d1f77 in execute_sqlcom_select (thd=0x7ffedc008250, all_tables=0x7ffedc0016a8) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:5445
#12 0x00000000015ca380 in mysql_execute_command (thd=0x7ffedc008250, first_level=true) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:2939
#13 0x00000000015d2fde in mysql_parse (thd=0x7ffedc008250, parser_state=0x7fffec5bd600) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:5901
#14 0x00000000015c6b72 in dispatch_command (thd=0x7ffedc008250, com_data=0x7fffec5bdd70, command=COM_QUERY)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:1490
#15 0x00000000015c58ff in do_command (thd=0x7ffedc008250) at /mysqldata/percona-server-locks-detail-5.7.22/sql/sql_parse.cc:1021
#16 0x000000000170e578 in handle_connection (arg=0x5f4fe40) at /mysqldata/percona-server-locks-detail-5.7.22/sql/conn_handler/connection_handler_per_thread.cc:312
#17 0x0000000001945538 in pfs_spawn_thread (arg=0x6809be0) at /mysqldata/percona-server-locks-detail-5.7.22/storage/perfschema/pfs.cc:2190
#18 0x00007ffff7bcfaa1 in start_thread () from /lib64/libpthread.so.0
#19 0x00007ffff6b37c4d in clone () from /lib64/libc.so.6

简单记录如下:

  • Fill_process_list类 5.7

  • fill_schema_processlist 函数 5.6

关于其中的Time来自如下处理,关于好像 -1 也是可能处出现的。

type_conversion_status Field_long::store(longlong nr, bool unsigned_val)
{
  ASSERT_COLUMN_MARKED_FOR_WRITE;
  type_conversion_status error= TYPE_OK;
  int32 res;
  if (unsigned_flag)
  {
    if (nr < 0 && !unsigned_val)
    {
      res=0;
      error= TYPE_WARN_OUT_OF_RANGE;
    }
    else if ((ulonglong) nr >= (1LL << 32))
    {
      res=(int32) (uint32) ~0L; //表达式-1
      error= TYPE_WARN_OUT_OF_RANGE;
    }
    else
      res=(int32) (uint32) nr;
  }
  else
  {
    if (nr < 0 && unsigned_val)
    {
      nr= ((longlong) INT_MAX32) + 1;           // Generate overflow
      error= TYPE_WARN_OUT_OF_RANGE;
    }
    if (nr < (longlong) INT_MIN32) 
    {
      res=(int32) INT_MIN32;
      error= TYPE_WARN_OUT_OF_RANGE;
    }
    else if (nr > (longlong) INT_MAX32)
    {
      res=(int32) INT_MAX32;
      error= TYPE_WARN_OUT_OF_RANGE;
    }
    else
      res=(int32) nr;
  }
  if (error)
    set_warning(Sql_condition::SL_WARNING, ER_WARN_DATA_OUT_OF_RANGE, 1);
#ifdef WordS_BIGENDIAN
  if (table->s->db_low_byte_first)
  {
    int4store(ptr,res);
  }
  else
#endif
    longstore(ptr,res);
  return error;
}

三、不同现象的测试

我们看到这里证明了上面的说法。他们来源不同。

怎么理解并掌握mysql的show processlist time负数

“怎么理解并掌握mysql的show processlist time负数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么理解并掌握mysql的show processlist time负数

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

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

猜你喜欢
  • 怎么理解并掌握mysql的show processlist time负数
    本篇内容介绍了“怎么理解并掌握mysql的show processlist time负数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望...
    99+
    2024-04-02
  • 技术分享 | mysql show processlist Time 为负数的思考
    作者:高鹏 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 一、问题来源 这是一个朋友问我的一个问题,问题如下,在 MTS 中 Worker 线程看到 Time ...
    99+
    2020-10-10
    技术分享 | mysql show processlist Time 为负数的思考
  • 怎么理解并掌握MySQL
    本篇内容主要讲解“怎么理解并掌握MySQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握MySQL”吧!MySQL分为 server 层和存储引擎...
    99+
    2024-04-02
  • 怎么理解并掌握mysql的表
    本篇内容介绍了“怎么理解并掌握mysql的表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.索引组织表如...
    99+
    2024-04-02
  • 怎么理解并掌握mysql中的information_schema
    本篇内容介绍了“怎么理解并掌握mysql中的information_schema”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细...
    99+
    2024-04-02
  • 怎么理解并掌握MySQL Server Startup Script
    本篇内容介绍了“怎么理解并掌握MySQL Server Startup Script”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家...
    99+
    2024-04-02
  • 怎么理解并掌握RAC
    这篇文章主要介绍“怎么理解并掌握RAC”,在日常操作中,相信很多人在怎么理解并掌握RAC问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解并掌握RAC”的疑惑有所帮助!接...
    99+
    2024-04-02
  • 怎么理解并掌握JVM
    本篇内容介绍了“怎么理解并掌握JVM”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、JVM的基本介绍JV...
    99+
    2024-04-02
  • 怎么理解并掌握Redis
    本篇内容介绍了“怎么理解并掌握Redis”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Redis是一个开源的使用ANSI C语言编写、支持网...
    99+
    2023-06-02
  • 怎么理解并掌握mysql参数文件和类型
    这篇文章主要讲解了“怎么理解并掌握mysql参数文件和类型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解并掌握mysql参数文件和类型”吧!1.&n...
    99+
    2024-04-02
  • 怎么理解并掌握Java的AVL树
    这篇文章主要介绍“怎么理解并掌握Java的AVL树”,在日常操作中,相信很多人在怎么理解并掌握Java的AVL树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解并掌握J...
    99+
    2024-04-02
  • 怎么理解并掌握JavaScript中的this
    这篇文章主要介绍“怎么理解并掌握JavaScript中的this”,在日常操作中,相信很多人在怎么理解并掌握JavaScript中的this问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • 怎么理解并掌握Python线程
    这篇文章主要讲解了“怎么理解并掌握Python线程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解并掌握Python线程”吧!1.自定义进程自定义进程类,继承Process类,重写ru...
    99+
    2023-06-25
  • 怎么理解并掌握JS装饰器
    本篇内容介绍了“怎么理解并掌握JS装饰器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 前言装饰器是最...
    99+
    2024-04-02
  • 怎么理解并掌握mysql索引之前缀索引
    本篇内容主要讲解“怎么理解并掌握mysql索引之前缀索引”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握mysql索引之前缀索引”吧!有时候需要很长...
    99+
    2024-04-02
  • 怎么理解并掌握Rust包管理器Cargo
    本篇内容主要讲解“怎么理解并掌握Rust包管理器Cargo”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握Rust包管理器Cargo”吧!Rust 是一种现代编程语言,可提供高性能、...
    99+
    2023-06-16
  • 怎么理解并掌握Python逻辑回归
    这篇文章主要讲解了“怎么理解并掌握Python逻辑回归”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解并掌握Python逻辑回归”吧!def sigmoid(x):定义sig...
    99+
    2023-06-02
  • 怎么理解并掌握JavaScript中的this关键字
    这篇文章主要讲解了“怎么理解并掌握JavaScript中的this关键字”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解并掌握JavaScript中的...
    99+
    2024-04-02
  • 怎么理解并掌握Java二叉查找树
    本篇内容主要讲解“怎么理解并掌握Java二叉查找树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握Java二叉查找树”吧!一、介绍二叉查找树,英文全...
    99+
    2024-04-02
  • 怎么理解并掌握的Go高级并发模式计时器
    这篇文章主要讲解了“怎么理解并掌握的Go高级并发模式计时器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解并掌握的Go高级并发模式计时器”吧!前言如果...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作