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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM