mysql 时区的性能影响
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 时区的性能影响相关的知识,希望对你有一定的参考价值。
关于时区的调优?
网上有两篇文章是说在默认time_zone=system下,使用timestamp字段在大量请求时引发的CPU SYS高的问题。
MySQL参数time_zone导致线上sys cpu高
大概意思就是讲,对于使用timestamp的场景,mysql在访问timestamp字段时会做时区转换,当time_zone设置为system时(默认),MySQL访问每一行的timestamp字段时,都会通过libc的时区函数,获取Linux设置的时区,在这个函数中会持有mutex,当大量并发SQL需要访问timestamp字段时,会出现mutex竞争。MySQL访问每一行都会做这个时区转换,转换完后释放mutex,所有等待这个mutex的线程全部唤醒,结果又会只有一个线程会成功持有mutex,其余又会再次sleep,这样就会导致context switch非常高但qps很低,系统吞吐量急剧下降。
总结下文章:就是当参数设置time_zone=system的时候,查询timestamp字段,会调用系统的时区做时区转换,有全局锁__libc_lock_lock的保护,导致线程并发环境下,系统性能受限。如果将time_zone=’+8:00’则不会调用系统时区,则不会触发系统时区转换,使用mysql自身转换,大大提高了性能。
以上是关于mysql 时区的性能影响的主要内容,如果未能解决你的问题,请参考以下文章