1. 程式人生 > >MySQL--時間戳與時區問題

MySQL--時間戳與時區問題

http tps text 只有一個 .net 導致 lee 競爭 mysql-

對於使用 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

MySQL--時間戳與時區問題