问
实验
在一个会话里,进行 sleep :
在 sleep 的同时,我们将服务器的时间向未来调整 10 秒:
我们会发现,sleep 立刻退出,只执行了0.82 秒:
我们在业务中很少会用到 sleep,那么调整系统时间会有更大的影响么?我们再来看看:
我们在一个会话中,锁住一张表:
先打印一个时间戳 调整 lock_wait_timeout 访问 test.a 表
过一会,等访问 test.a 的请求超时了,我们来查看输出:
我们将两个时间戳相减,算出这个锁持续了多久:
5375908 - 5375891 = 17 秒
小贴士
此处我们获取系统时间的方法有点奇怪,是从 /proc/timer_list 中获取,而并非使用 date 之类的函数
主要原因是:当系统时间被调整,date 等命令的输出也会受到影响。
我们想客观的评估 MySQL 实际等待了多久,除了手动掐秒表,还可以利用单调时钟 ( monotonic clock ) 来进行计算。
单调时钟不会受到系统时间变化的影响,/proc/timer_list 中的输出就是单调时钟的一种
思考题
相关推荐:
第47问:Table definition cache 有什么作用
第46问:MySQL 使用的文件句柄突增, 该如何诊断
第45问:MySQL 的内存突增, 该如何诊断
关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!
本文关键字:#mysql# #time#