欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL--时间戳与时区问题

程序员文章站 2022-11-22 09:08:27
对于使用 timestamp 的场景,MySQL 在访问 timestamp 字段时会做时区转换,当 time_zone 设置为 system 时,MySQL 访问每一行的 timestamp 字段时,都会通过 libc 的时区函数,获取 Linux 设置的时区,在这个函数中会持有mutex,当大量 ......

对于使用 timestamp 的场景,mysql 在访问 timestamp 字段时会做时区转换,当 time_zone 设置为 system 时,mysql 访问每一行的 timestamp 字段时,都会通过 libc 的时区函数,获取 linux 设置的时区,在这个函数中会持有mutex,当大量并发sql需要访问 timestamp 字段时,会出现 mutex 竞争。

mysql 访问每一行都会做这个时区转换,转换完后释放mutex,所有等待这个 mutex 的线程全部唤醒,结果又只有一个线程会成功持有 mutex,其余又会再次sleep,这样就会导致 context switch 非常高但 qps 很低,系统吞吐量急剧下降。

解决办法:设置time_zone=’+8:00’,这样就不会访问 linux 系统时区,直接转换,避免了mutex问题。

参考链接:
https://blog.csdn.net/shaochenshuo/article/details/51881501