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