怎么理解并掌握mysql的show processlist time负数
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容介绍了"怎么理解并掌握mysql的show processlist time负数"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧
千家信息网最后更新 2025年02月01日怎么理解并掌握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。关于负数的测试如下:
二、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(__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负数"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
负数
时间
不同
函数
内容
官方
接口
更多
服务器
知识
服务
测试
实用
学有所成
接下来
命令
困境
实际
情况
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
多线程插入mysql数据库
服务器管理器无法添加角色
恒生科技互联网业权重
北京昌平区软件开发
vxworks软件开发代码案例
html折线图数据库
网络安全管理罪
工程机械软件开发
中国网络安全所面临的挑战
网络技术新基建
计算机软件开发笔记本推荐
服务器系统恢复
什么是服务器英文
青少年网络安全要求
我叫mt4可以转服务器么
2016中国网络安全峰会
网络安全宣传牌怎么制作
网络安全黑笔画的手抄报
关于网络安全日的名言
在线ip服务器
行政单位网络安全计划
下载站用的什么服务器
为什么英雄联盟选不了服务器
网络安全事件事例
局域网内部文件传输软件开发
数据库有更新前端提示
初级中学网络安全宣传
阿里巴巴集团网络安全负责人
北京市新帆网驿网络技术
注册反诈中心显示没有连接服务器