美文网首页
第48问:为什么 MySQL 运行时, 不鼓励调整系统时间

第48问:为什么 MySQL 运行时, 不鼓励调整系统时间

作者: 爱可生开源社区 | 来源:发表于2021-11-03 15:21 被阅读0次
image

在 MySQL 运行时,我们调整系统时间,会造成什么影响么?

实验

按惯例,我们造个数据库:

image

在一个会话里,进行vsleep:

image

在 sleep 的同时,我们将服务器的时间向未来调整 10 秒:

image

我们会发现,sleep 立刻退出,只执行了0.82 秒:

image

我们在业务中很少会用到 sleep,那么调整系统时间会有更大的影响么?我们再来看看:

我们在一个会话中,锁住一张表:

image

在另一个会话中, 我们做如下几件事:

  1. 先打印一个时间戳
  2. 调整 lock_wait_timeout
  3. 访问 test.a 表
image

此时, 我们调整系统时间, 向过去调整 10 秒:

image

过一会,等访问 test.a 的请求超时了,我们来查看输出:

image

我们将两个时间戳相减,算出这个锁持续了多久:

5375908 - 5375891 = 17 秒

由此我们知道:调整系统时间,会影响 MDL 的等待时间的计算

小贴士

此处我们获取系统时间的方法有点奇怪,是从 /proc/timer_list 中获取, 而并非使用date之类的函数

主要原因是: 当系统时间被调整, date等命令的输出也会受到影响.

我们想客观的评估 MySQL实际等待了多久, 除了手动掐秒表, 还可以利用 单调时钟 (monotonic clock) 来进行计算.

单调时钟 不会受到系统时间变化的影响, /proc/timer_list中的输出就是单调时钟的一种

除了以上的实验, 调整系统时间, 对正在运行的MySQL还会有其他影响, 比如说 半同步的等待时间计算、 延时复制的延时时间计算 等等

我们不建议在 MySQL 运行时调整系统时间, 如需调整, 应及时重启 MySQL

思考题

本文中我们测试了 MDL 的等待时间, 大家可以设计一个实验, 测试一下 InnoDB lock 的等待时间, 会发现很大的不同.

大家可以查阅资料, 来解释其中的不同.

image

关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

相关文章

  • 第48问:为什么 MySQL 运行时, 不鼓励调整系统时间

    问 在 MySQL 运行时,我们调整系统时间,会造成什么影响么? 实验 按惯例,我们造个数据库: 在一个会话里,进...

  • 辟谷说知识

    【喝风有问有答】2018.9.25 问:为什么不鼓励我们辟谷时间长一些呢?给我们的建议总是7到14天,为什么不鼓励...

  • 数据库基础

    首先的要有个软件,Mac版系统的先要有个MySQL数据库、桌面MySql图片。 运行Mysql,里面运行时这样使用...

  • Linux就该这么学(第3天)2021-07-04

    top 命令 top 命令用于动态地监视进程活动与系统负载等信息,其格式为 top 第 1 行:系统时间、运行时间...

  • 不赌不闻与戒慎恐惧

    第48天(2022-11-28)不赌不闻与戒慎恐惧 问:“‘不赌不闻’是说本体,‘戒慎恐惧’是说功夫否?...

  • 简谈JVM之性能监控和调优

    性能监控 linux命令监控uptime 显示系统运行时间、连接数、负载情况top 系统运行时间、平均负载情况、...

  • 诊断服务器常用命令

    top 看服务器整体使用情况,一般都是 top 命令搞定 第 1 行:系统时间、运行时间、登录终端数、系统负载(三...

  • 浅析系统高可用

    系统可用性 系统的可用性,英文名字为 System Usability,即系统服务不中断运行时间占实际运行时间的比...

  • Mysql 慢查询日志和通用查询日志

    慢查询 Mysql慢查询日志可以记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_...

  • MySQL查询优化

    系统运行时间久了,会发现随着数据越来越多,查询越来越慢了 MySQL通过各种配置可以优化,当配置优化不好或不太懂各...

网友评论

      本文标题:第48问:为什么 MySQL 运行时, 不鼓励调整系统时间

      本文链接:https://www.haomeiwen.com/subject/eexfzltx.html