成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用實(shí)例帶你了解 MySQL 全局鎖

數(shù)據(jù)庫 MySQL
當(dāng)數(shù)據(jù)庫處于全局鎖的狀態(tài)時(shí),其他線程的一下語句會(huì)被阻塞:數(shù)據(jù)更新語句(數(shù)據(jù)的增刪改)、數(shù)據(jù)定義語句(建表、索引變更、修改表結(jié)構(gòu)等)和更新類事務(wù)的提交語句。

 [[404004]]

本文轉(zhuǎn)載自微信公眾號「架構(gòu)精進(jìn)之路」,作者架構(gòu)精進(jìn)之路。轉(zhuǎn)載本文請聯(lián)系架構(gòu)精進(jìn)之路公眾號。

MySQL全局鎖會(huì)申請一個(gè)全局的讀鎖,對整個(gè)庫加鎖。

全局鎖的一般使用場景是:全局邏輯備份。

全局鎖的實(shí)現(xiàn)方式有兩種:

  1. //第一種方法 
  2. Flush tables with read lock(FTWRL) 
  3. //第二種方法 
  4. set global readonly=true 

當(dāng)數(shù)據(jù)庫處于全局鎖的狀態(tài)時(shí),其他線程的一下語句會(huì)被阻塞:數(shù)據(jù)更新語句(數(shù)據(jù)的增刪改)、數(shù)據(jù)定義語句(建表、索引變更、修改表結(jié)構(gòu)等)和更新類事務(wù)的提交語句。

釋放全局鎖

  1. unlock tables; 

來個(gè)示例吧~

創(chuàng)建數(shù)據(jù)庫 `test`

  1. CREATE TABLE `test` ( 
  2.   `namevarchar(32) NOT NULL DEFAULT ''
  3.   `bid` int(10) unsigned NOT NULL DEFAULT '0' 
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='測試'

插入數(shù)據(jù)

  1. insert into test values('A', 1), ('B',2),('C',3); 

查看表數(shù)據(jù)

  1. select * from test; 
  2. +------+-----+ 
  3. name | bid | 
  4. +------+-----+ 
  5. | A    |   1 | 
  6. | B    |   2 | 
  7. | C    |   3 | 
  8. +------+-----+ 

加鎖

  1. flush tables with read lock; 

新增數(shù)據(jù)

  1. insert into test values('D', 4); 

執(zhí)行 insert 操作后,直接返回錯(cuò)誤結(jié)果:

  1. ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock 

執(zhí)行查詢操作,可以正常返回結(jié)果:

  1. select * from test; 
  2.  
  3. #返回結(jié)果: 
  4. +------+-----+ 
  5. name | bid | 
  6. +------+-----+ 
  7. | A | 1 | 
  8. | B | 2 | 
  9. | C | 3 | 
  10. +------+-----+ 

可以看到,當(dāng)我們加上全局鎖的時(shí)候,數(shù)據(jù)及表更新操作都沒辦法執(zhí)行,但表查詢不受影響。這樣會(huì)給我們的業(yè)務(wù)造成很大的影響(無法修改數(shù)據(jù)),索性 Innodb 引擎的可重復(fù)讀隔離級別可以讓我們不阻塞數(shù)據(jù)變更的同時(shí)導(dǎo)出數(shù)據(jù)。

官方自帶的邏輯備份工具是 mysqldump。當(dāng) mysqldump 使用參數(shù)–single-transaction 的時(shí)候,導(dǎo)數(shù)據(jù)之前就會(huì)啟動(dòng)一個(gè)事務(wù),來確保拿到一致性視圖。而由于 MVCC 的支持,這個(gè)過程中數(shù)據(jù)是可以正常更新的。

你一定在疑惑,有了這個(gè)功能,為什么還需要 FTWRL 呢?

一致性讀是好,但前提是引擎要支持這個(gè)隔離級別。

比如,對于 MyISAM 這種不支持事務(wù)的引擎,如果備份過程中有更新,總是只能取到最新的數(shù)據(jù),那么就破壞了備份的一致性。這時(shí),我們就需要使用 FTWRL 命令了。

single-transaction 方法只適用于所有的表使用事務(wù)引擎的庫。

如果有的表使用了不支持事務(wù)的引擎,那么備份就只能通過 FTWRL 方法。這往往是 DBA 要求業(yè)務(wù)開發(fā)人員使用 InnoDB 替代 MyISAM 的原因之一。

用 FTWRL 而不用 set global readonly = true

  • 在有些系統(tǒng)中,readonly 的值會(huì)被用來做其他邏輯,比如用來判斷一個(gè)庫是主庫還是備庫。因此,修改 global 變量的方式影響面更大,我不建議你使用。
  • 在異常處理機(jī)制上有差異。如果執(zhí)行 FTWRL 命令之后由于客戶端發(fā)生異常斷開,那么 MySQL 會(huì)自動(dòng)釋放這個(gè)全局鎖,整個(gè)庫回到可以正常更新的狀態(tài)。而將整個(gè)庫設(shè)置為 readonly 之后,如果客戶端發(fā)生異常,則數(shù)據(jù)庫就會(huì)一直保持 readonly 狀態(tài),這樣會(huì)導(dǎo)致整個(gè)庫長時(shí)間處于不可寫狀態(tài),風(fēng)險(xiǎn)較高。

 

責(zé)任編輯:武曉燕 來源: 架構(gòu)精進(jìn)之路
相關(guān)推薦

2020-02-06 10:02:45

MySQL數(shù)據(jù)庫全局鎖

2018-03-20 12:48:58

數(shù)據(jù)庫MySQL變量配置

2018-09-04 16:20:46

MySQ索引數(shù)據(jù)結(jié)構(gòu)

2024-11-29 07:38:12

MySQL數(shù)據(jù)庫

2022-09-26 11:30:40

MQTT協(xié)議客戶端協(xié)議

2019-09-27 09:40:06

ElvishShellLinux

2010-07-05 16:20:32

NetBEUI協(xié)議

2018-09-17 16:30:24

數(shù)據(jù)庫MySQL小技巧

2020-08-31 10:48:11

MySQL數(shù)據(jù)庫數(shù)據(jù)庫技巧

2021-05-25 05:25:24

MySQL數(shù)據(jù)庫

2020-12-31 12:16:49

SAP云計(jì)算SAP產(chǎn)品

2021-02-03 16:22:43

新基建SAP

2021-05-31 14:22:56

物聯(lián)網(wǎng)物聯(lián)網(wǎng)安全

2010-09-02 16:59:35

資源預(yù)留協(xié)議

2021-12-10 10:29:07

在線客服系統(tǒng)

2019-11-05 10:18:04

RPM包RPMLinux

2022-10-24 00:33:59

MySQL全局鎖行級鎖

2022-07-20 08:06:57

MySQL表鎖Innodb

2021-11-26 08:07:16

MySQL SQL 語句數(shù)據(jù)庫

2022-10-24 08:02:14

MySQL索引類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人网视频 | 中文字幕国产精品 | 午夜视频大全 | 四虎成人免费电影 | 久久另类视频 | 精品国产伦一区二区三区观看体验 | 精品成人在线 | 婷婷色在线播放 | 精品www| 日韩中文字幕在线观看 | 天天干夜夜拍 | 欧美成人h版在线观看 | 欧美久久久久久久久中文字幕 | 亚洲精品一 | 国产一区久久久 | 91在线一区 | 一区二区三区四区视频 | 中文字幕第一页在线 | 免费播放一级片 | 欧美在线国产精品 | av毛片在线免费观看 | 成人影院免费视频 | 羞羞在线观看视频 | 狠狠干天天干 | 日韩精品在线看 | 在线视频亚洲 | 丝袜美腿一区二区三区 | 中文字幕av一区二区三区 | 亚洲国产欧美一区二区三区久久 | 黄色高清视频 | 日韩日韩日韩日韩日韩日韩日韩 | 国产精品电影网 | 欧美片网站免费 | 99精品电影 | 日韩一区二区在线观看视频 | 成人国产精品久久 | 久久精点视频 | 国产 日韩 欧美 在线 | 人操人人干人 | 国产一区二区三区四区 | 亚洲国产精品日韩av不卡在线 |