最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL的從庫(kù)Seconds_Behind_Master延遲總結(jié)

 更新時(shí)間:2021年09月01日 10:10:24   作者:老葉茶館_  
這篇文章主要介紹了MySQL的從庫(kù)Seconds_Behind_Master延遲的相關(guān)資料,需要的朋友可以參考下

MySQL從庫(kù)Seconds_Behind_Master延遲總結(jié)

一、延遲分類

延遲我們可將其分為兩類:

1、第一類(成服務(wù)器有較高的負(fù)載)

這一類延遲情況可能造成服務(wù)器有較高的負(fù)載,可能是CPU/IO的負(fù)載。因?yàn)閺膸?kù)在實(shí)際執(zhí)行Event,如果我們服務(wù)器的負(fù)載比較高應(yīng)該考慮這幾種情況,關(guān)于如何查看線程的負(fù)載可以參考29節(jié)。

大事務(wù)造成的延遲,其延遲不會(huì)從0開始增加,而是直接從主庫(kù)執(zhí)行了多久開始。比如主庫(kù)執(zhí)行這個(gè)事務(wù)花費(fèi)的20秒,那么延遲就會(huì)從20開始,可以自己細(xì)心觀察一下很容易看到。這是因?yàn)镼uery Event中沒有準(zhǔn)確的執(zhí)行時(shí)間,這個(gè)在上一節(jié)的計(jì)算公式中詳細(xì)描述過了 ,可以參考第8節(jié)和第27節(jié)。

大表DDL造成的延遲,其延遲會(huì)從0開始增加,因?yàn)镼uery Event記錄了準(zhǔn)確的執(zhí)行時(shí)間。這個(gè)在上一節(jié)的計(jì)算公式中也詳細(xì)描述過了,可以參考第8節(jié)和第27節(jié)。

表沒有合理的使用主鍵或者唯一鍵造成的延遲。這種情況不要以為設(shè)置slave_rows_search_algorithms參數(shù)為 INDEX_SCAN,HASH_SCAN就可以完全解決問題,原因我們?cè)诘?4節(jié)進(jìn)行了描述。

由于參數(shù)sync_relay_log,sync_master_info,sync_relay_log_info不合理導(dǎo)致,特別是sync_relay_log會(huì)極大的影響從庫(kù)的性能。原因我們?cè)诘?6節(jié)進(jìn)行過描述,因?yàn)閟ync_relay_log設(shè)置為1會(huì)導(dǎo)致大量relay log刷盤操作。

是否從庫(kù)開啟了記錄binary log功能即log_slave_updates參數(shù)開啟,如果不是必要可以關(guān)閉掉。這種情況我遇到很多次了。

2、第二類(不會(huì)造成服務(wù)器有較高的負(fù)載)

這一類延遲情況往往不會(huì)造成服務(wù)器有較高的負(fù)載。它們要么沒有實(shí)際的執(zhí)行Event,要么就是做了特殊的操作造成的。

  • 長(zhǎng)期未提交的事務(wù)可能造成延遲瞬間增加,因?yàn)镚TID_EVENT和XID_EVENT是提交時(shí)間其他Event是命令發(fā)起的時(shí)間。這個(gè)我們?cè)诘?7節(jié)中舉例描述過了。
  • Innodb層的行鎖造成的延遲,這種是在從庫(kù)有修改操作并且和SQL線程修改的數(shù)據(jù)有沖突的情況下造成的,因?yàn)槲覀兦懊?3節(jié)說過SQL線程執(zhí)行Event也會(huì)開啟事務(wù)和獲取行鎖,下面我們進(jìn)行測(cè)試。
  • MySQL層的MDL LOCK造成的延遲,這種情況可能是由于SQL線程執(zhí)行某些DDL操作但是從庫(kù)上做了鎖表操作造成,原因我們已經(jīng)在23節(jié)描述過了,下面我們進(jìn)行測(cè)試。
  • MTS中不合理的設(shè)置參數(shù)slave_checkpoint_period參數(shù)導(dǎo)致,這個(gè)在第27節(jié)已經(jīng)測(cè)試過了。
  • 在從庫(kù)運(yùn)行期間手動(dòng)改大了從庫(kù)服務(wù)器時(shí)間,這個(gè)也在第27節(jié)已經(jīng)測(cè)試過了。

二、相關(guān)測(cè)試

因?yàn)樯厦娴难舆t情形很多我們都已經(jīng)測(cè)試和講述過了。下面我們測(cè)試鎖造成的延遲情形。

1、Innodb層的行鎖造成的延遲

這個(gè)很容測(cè)試,我只要先在從庫(kù)做一個(gè)事務(wù)和SQL線程修改的數(shù)據(jù)相同即可以出現(xiàn),大概測(cè)試如下:

從庫(kù):
 
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
 
mysql> delete from tmpk;
Query OK, 4 rows affected (0.00 sec)
不要提交
 
主庫(kù)執(zhí)行同樣的語(yǔ)句
mysql> delete from tmpk;
Query OK, 4 rows affected (0.30 sec)

這個(gè)時(shí)候你會(huì)觀察到延遲如下:

如果查看sys.innodb_lock_waits能看到如下的結(jié)果:

當(dāng)然如果查看INNODB_TRX也可以觀察到事務(wù)的存在,這里就不截圖了,大家可以自己試試。

2、MySQL層的MDL LOCK造成的延遲

這種情況也非常容易測(cè)試,我們只需要開啟一個(gè)事務(wù)做一個(gè)select,然后主庫(kù)對(duì)同樣的表做DDL就可以出現(xiàn)如下:

從庫(kù):
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
 
mysql>
mysql>
mysql> select * from tkkk limit 1;
+------+------+------+
| a    | b    | c    |
+------+------+------+
|    3 |    3 |  100 |
+------+------+------+
1 row in set (0.00 sec)
 
不要提交,表上MDL LOCK就不會(huì)釋放
 
主庫(kù)執(zhí)行語(yǔ)句:
 
mysql> alter table tmpk add testc int ;
Query OK, 0 rows affected (1.14 sec)
Records: 0  Duplicates: 0  Warnings: 0
 

這個(gè)時(shí)候你將會(huì)看到如下的信息:

我們可以通過state看到這是等待MDL lock獲取而導(dǎo)致的延遲,關(guān)于MDL lock的詳情可以參考文章:

https://m.fzitv.net/article/221412.htm

三、總結(jié)

通過整個(gè)系列,我們應(yīng)該清楚了Seconds_Behind_Master計(jì)算的方法,同時(shí)如果出現(xiàn)了延遲,我們首先查看從庫(kù)是否有負(fù)載,根據(jù)是否有負(fù)載進(jìn)行區(qū)別對(duì)待,注意這里的負(fù)載一定要使用top -H查看io/sql/worker線程的負(fù)載。我曾不止一次的遇到朋友問我延遲問題,當(dāng)我問他負(fù)載如何的時(shí)候他告訴我負(fù)載不高啊整體負(fù)載也就不到2,這里我們應(yīng)該注意的是對(duì)于一個(gè)線程只能使用到一個(gè)CPU核,雖然整體負(fù)載不到2但是可能io/sql/worker線程已經(jīng)跑滿了,實(shí)際上負(fù)載已經(jīng)很高了,我們來看下面的這個(gè)截圖就是sql線程負(fù)載高的截圖如下:

這個(gè)截圖我們發(fā)現(xiàn)雖然整體負(fù)載不高在1多一點(diǎn),但是Lwp號(hào)20092的線程已經(jīng)跑滿了,這個(gè)線程就是我們的sql線程,這個(gè)時(shí)候出現(xiàn)延遲是很可能的,這個(gè)截圖正是來自一個(gè)沒有合理使用主鍵或者唯一鍵造成的延遲的案例,案例如下:

https://m.fzitv.net/article/221396.htm

我們查看CPU負(fù)載應(yīng)該使用top -H去查看,查看io負(fù)載可以使用iotop,iostat等工具。我需要強(qiáng)調(diào)一下看MySQL負(fù)載的時(shí)候我們必須用線程的眼光去看

以上就是MySQL從庫(kù)Seconds_Behind_Master延遲總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于從庫(kù)Seconds_Behind_Master延遲總結(jié)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL中的常用函數(shù)

    MySQL中的常用函數(shù)

    這篇文章主要介紹了MySQL中的常用函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • mysql中的delete,drop和truncate有什么區(qū)別

    mysql中的delete,drop和truncate有什么區(qū)別

    這篇文章主要介紹了mysql中的delete,drop和truncate有什么區(qū)別,三者的用法和使用場(chǎng)景又完全不同,接下來我們來看看具體的區(qū)別吧,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-06-06
  • MySQL Like語(yǔ)句的使用方法

    MySQL Like語(yǔ)句的使用方法

    本文介紹一下關(guān)于MySQL查詢字符串中包含字符的記錄一些常用方法,這里包括有REGEXP、FIND_IN_SET、Like
    2013-11-11
  • mysql DBA:mysqladmin常用命令總結(jié)

    mysql DBA:mysqladmin常用命令總結(jié)

    mysqladmin是MySQL一個(gè)重要的客戶端,最常見的是使用它來關(guān)閉數(shù)據(jù)庫(kù),除此,該命令還可以了解MySQL運(yùn)行狀態(tài)、進(jìn)程信息、進(jìn)程等,本文介紹一下如何使用mysqladmin extended-status(因?yàn)闆]有"歧義",所以可以使用ext代替)了解MySQL的運(yùn)行狀態(tài)
    2014-03-03
  • Navicat連接mysql報(bào)錯(cuò)問題

    Navicat連接mysql報(bào)錯(cuò)問題

    這篇文章主要介紹了Navicat連接mysql報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • CentOS7 通過YUM安裝MySQL5.7的步驟詳解

    CentOS7 通過YUM安裝MySQL5.7的步驟詳解

    這篇文章主要介紹了CentOS7 通過YUM安裝MySQL5.7的步驟詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法

    使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法

    這篇文章主要介紹了使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法,需要的朋友可以參考下
    2015-09-09
  • MySQL8.0中的窗口函數(shù)的示例代碼

    MySQL8.0中的窗口函數(shù)的示例代碼

    本文主要介紹了MySQL8.0中的窗口函數(shù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • MySQL 復(fù)制表的方法

    MySQL 復(fù)制表的方法

    這篇文章主要介紹了MySQL 復(fù)制表的方法,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • Mysql Workbench查詢mysql數(shù)據(jù)庫(kù)方法

    Mysql Workbench查詢mysql數(shù)據(jù)庫(kù)方法

    在本篇文章里小編給大家分享了個(gè)關(guān)于Mysql Workbench查詢mysql數(shù)據(jù)庫(kù)方法和步驟,有需要的朋友們學(xué)習(xí)下。
    2019-03-03

最新評(píng)論

侯马市| 新乡县| 板桥市| 大足县| 郴州市| 汉中市| 宁远县| 罗江县| 岫岩| 博野县| 锦州市| 宜昌市| 同德县| 锡林郭勒盟| 龙川县| 凤庆县| 尼玛县| 屯门区| 达孜县| 富蕴县| 河池市| 浏阳市| 通化市| 泊头市| 黔东| 巫山县| 漳平市| 望奎县| 略阳县| 南昌市| 长武县| 阜新| 石门县| 岢岚县| 濮阳市| 盖州市| 平顶山市| 舟山市| 吐鲁番市| 岳阳市| 赫章县|