Percona Server

技术分享 | mysql show processlist Time 为负数的思考

孤街浪徒 提交于 2019-12-06 10:25:38
作者:高鹏 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 一、问题来源 这是一个朋友问我的一个问题,问题如下,在 MTS 中 Worker 线程看到 Time 为负数是怎么回事,如下: 二、关于 show processlist 中的 Time 实际上 show processlist 中的信息基本都来自函数 mysqld_list_processes ,也就是说每次执行 show processlist 都需要执行这个函数来进行填充。对于 Time 值来讲它来自如下信息: Percona: time_t now= my_time(0); protocol->store_long ((thd_info->start_time > now) ? 0 : (longlong) (now - thd_info->start_time)); 官方版: time_t now= my_time(0); protocol->store_long ((longlong) (now - thd_info->start_time)); 我们可以注意到在 Percona 的版本中对这个输出值做了优化,也就是如果出现负数的时候直接显示为 0,但是官方版中没有这样做,可能出现负数。 三、计算方式解读和测试

技术分享 | mysql show processlist Time 为负数的思考

て烟熏妆下的殇ゞ 提交于 2019-12-04 19:13:24
作者:高鹏 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 一、问题来源 这是一个朋友问我的一个问题,问题如下,在 MTS 中 Worker 线程看到 Time 为负数是怎么回事,如下: 二、关于 show processlist 中的 Time 实际上 show processlist 中的信息基本都来自函数 mysqld_list_processes ,也就是说每次执行 show processlist 都需要执行这个函数来进行填充。对于 Time 值来讲它来自如下信息: Percona: time_t now= my_time(0); protocol->store_long ((thd_info->start_time > now) ? 0 : (longlong) (now - thd_info->start_time)); 官方版: time_t now= my_time(0); protocol->store_long ((longlong) (now - thd_info->start_time)); 我们可以注意到在 Percona 的版本中对这个输出值做了优化,也就是如果出现负数的时候直接显示为 0,但是官方版中没有这样做,可能出现负数。 三、计算方式解读和测试

技术分享 | mysql show processlist Time 为负数的思考

二次信任 提交于 2019-12-04 19:05:07
作者:高鹏 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 一、问题来源 这是一个朋友问我的一个问题,问题如下,在 MTS 中 Worker 线程看到 Time 为负数是怎么回事,如下: 二、关于 show processlist 中的 Time 实际上 show processlist 中的信息基本都来自函数 mysqld_list_processes ,也就是说每次执行 show processlist 都需要执行这个函数来进行填充。对于 Time 值来讲它来自如下信息: Percona: time_t now= my_time(0); protocol->store_long ((thd_info->start_time > now) ? 0 : (longlong) (now - thd_info->start_time)); 官方版: time_t now= my_time(0); protocol->store_long ((longlong) (now - thd_info->start_time)); 我们可以注意到在 Percona 的版本中对这个输出值做了优化,也就是如果出现负数的时候直接显示为 0,但是官方版中没有这样做,可能出现负数。 三、计算方式解读和测试

linux 上装jdk,tomcat,mysql

一笑奈何 提交于 2019-12-04 09:49:54
1. 安装 JDK tar -xvf jdk-7u51-linux-x64.tar.gz 解压并安装 mv jdk1.7.0_51/ jdk1.7重命名为jdk1.7 1.1 配置环境变量 vim /etc/profile i 进入vim命令 JAVA_HOME=/home/software/jdk1.7 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH esc 然后:wq退出vim命令 1.2 让环境变量立即生效 source /etc/profile 1.3jdk 配置是否成功 java -version 2. 安装TOMCAT 2.1 把 tom cat 安装包拖到software文件夹下 2.2 解压 tom cat tar -xvf apache-tomcat-7.0.55.tar.gz 2.3 修改名称 mv apache-tomcat-7.0.55/ tomcat7 cd tomcat/ 要用alt+/ cd bin/ 注意有个/ 2.4 启动 tom cat sh startup.sh 2.5 关闭防火墙 service iptables stop 2.6 开启对外端口

技术分享 | MySQL:timestamp 时区转换导致 CPU %sy 高的问题

柔情痞子 提交于 2019-12-04 06:40:50
作者:高鹏 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。本文为学习记录,可能有误请谅解。 这个问题是一个朋友遇到的 @风云 ,并且这位朋友已经得出了近乎正确的判断,下面进行一些描述。 一、问题展示 下面是问题当时的系统负载如下: 我们可以看到 40.4%sy 正是系统调用负载较高的表现,随即朋友采集了 perf 如下: 接下来朋友采集了 pstack 给我,我发现大量的线程处于如下状态下: Thread 38 (Thread 0x7fe57a86f700 (LWP 67268)): #0 0x0000003dee4f82ce in __lll_lock_wait_private () from /lib64/libc.so.6 #1 0x0000003dee49df8d in _L_lock_2163 () from /lib64/libc.so.6 #2 0x0000003dee49dd47 in __tz_convert () from /lib64/libc.so.6 #3 0x00000000007c02e7 in Time_zone_system::gmt_sec_to_TIME(st_mysql_time*, long) const () #4 0x0000000000811df6 in

mysql8创建视图显示IS NOT BASE TABLE

僤鯓⒐⒋嵵緔 提交于 2019-11-28 19:47:31
mysql8.0在创建视图的时候使用navicat premium 12.1.18连接,所有表的注释会显示dbname.视图表 IS NOT BASE TABLE Server version: 8.0.16 MySQL Community Server - GPL 而在mysql5.6下没有这个问题 Server version: 5.6.36-82.0-log Percona Server (GPL) 编码一样 root @127.0.0.1 :(none) 03:06:24>show variables like '%char%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results