在眾多數據庫中,MySQL書庫是我們比較常見的數據庫之一,也是我們應用比較多的數據庫。當然經常使用MySQL數據的人都清楚,在使用MySQL數據庫時,經常會出現一些延遲問題。那么MySQL數據庫延遲問題有哪些?MySQL數據庫延遲問題原因是什么?MySQL延遲問題有5個,下面是這個5個延遲問題出現的原因,以及相應的解決辦法,希望可以幫到有需求的人。
MySQL數據庫延遲問題有哪些?原因是什么?
1、主庫DML請求頻繁
原因:主庫并發寫入數據,而從庫為單線程應用日志,很容易造成relaylog堆積,產生延遲。
解決思路:做sharding,打散寫請求。考慮升級到MySQL 5.7+,開啟基于邏輯時鐘的并行復制。
2、主庫執行大事務
原因:類似主庫花費很長時間更新了一張大表,在主從庫配置相近的情況下,從庫也需要花幾乎同樣的時間更新這張大表,此時從庫延遲開始堆積,后續的events無法更新。
解決思路:拆分大事務,及時提交。
3、主庫對大表執行DDL語句
原因:DDL未開始執行,被阻塞,檢查到位點不變;DDL正在執行,單線程應用導致延遲增加,位點不變。
解決思路:找到被阻塞DDL或是寫操作的查詢,干掉該查詢,讓DDL正常在從庫上執行;業務低峰期執行,盡量使用支持Online DDL的高版本MySQL。
4、主從實例配置不一致
原因:硬件上:主庫實例服務器使用SSD,而從庫實例服務器使用普通SAS盤、cpu主頻不一致等;配置上:如RAID卡寫策略不一致,OS內核參數設置不一致,MySQL落盤策略(innodb_flush_log_at_trx_commit和sync_binlog等)不一致等
解決思路:盡量統一DB機器的配置(包括硬件及選項參數);甚至對于某些OLAP業務,從庫實例硬件配置高于主庫等。
5、從庫自身壓力過大
原因:從庫執行大量select請求,或業務大部分select請求被路由到從庫實例上,甚至大量OLAP業務,或者從庫正在備份等,此時可能造成cpu負載過高,io利用率過高等,導致SQL Thread應用過慢。
解決思路:建立更多從庫,打散讀請求,降低現有從庫實例的壓力。
也可以調整innodb_flush_log_at_trx_commit=0和sync_binlog=0刷盤參數來緩解IO壓力來降低主從延遲。
上述就是關于MySQL數據庫延遲問題有哪些,以及MySQL數據庫延遲問題原因是什么的全部內容介紹,想了解更多關于MySQL數據庫的信息,請繼續關注中培偉業。