真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么鎖定,mysql鎖的使用

MySQL從入門到精通(九) MySQL鎖,各種鎖

鎖是計(jì)算機(jī)協(xié)調(diào)多個(gè)進(jìn)程或線程并發(fā)訪問(wèn)某一資源的機(jī)制,在數(shù)據(jù)庫(kù)中,除傳統(tǒng)的計(jì)算資源(CPU、RAM、I/O)爭(zhēng)用外,數(shù)據(jù)也是一種供許多用戶共享的資源,如何保證數(shù)據(jù)并發(fā)訪問(wèn)的一致性,有效性是所有數(shù)據(jù)庫(kù)必須解決的一個(gè)問(wèn)題,鎖沖突也是影響數(shù)據(jù)庫(kù)并發(fā)訪問(wèn)性能的一個(gè)重要因素,從這個(gè)角度來(lái)說(shuō),鎖對(duì)數(shù)據(jù)庫(kù)而言是尤其重要,也更加復(fù)雜。MySQL中的鎖,按照鎖的粒度分為:1、全局鎖,就鎖定數(shù)據(jù)庫(kù)中的所有表。2、表級(jí)鎖,每次操作鎖住整張表。3、行級(jí)鎖,每次操作鎖住對(duì)應(yīng)的行數(shù)據(jù)。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、東方網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為東方等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

全局鎖就是對(duì)整個(gè)數(shù)據(jù)庫(kù)實(shí)例加鎖,加鎖后整個(gè)實(shí)例就處于只讀狀態(tài),后續(xù)的DML的寫語(yǔ)句,DDL語(yǔ)句,已經(jīng)更新操作的事務(wù)提交語(yǔ)句都將阻塞。其典型的使用場(chǎng)景就是做全庫(kù)的邏輯備份,對(duì)所有的表進(jìn)行鎖定,從而獲取一致性視圖,保證數(shù)據(jù)的完整性。但是對(duì)數(shù)據(jù)庫(kù)加全局鎖是有弊端的,如在主庫(kù)上備份,那么在備份期間都不能執(zhí)行更新,業(yè)務(wù)會(huì)受影響,第二如果是在從庫(kù)上備份,那么在備份期間從庫(kù)不能執(zhí)行主庫(kù)同步過(guò)來(lái)的二進(jìn)制日志,會(huì)導(dǎo)致主從延遲。

解決辦法是在innodb引擎中,備份時(shí)加上--single-transaction參數(shù)來(lái)完成不加鎖的一致性數(shù)據(jù)備份。

添加全局鎖: flush tables with read lock; 解鎖 unlock tables。

表級(jí)鎖,每次操作會(huì)鎖住整張表.鎖定粒度大,發(fā)送鎖沖突的概率最高,并發(fā)讀最低,應(yīng)用在myisam、innodb、BOB等存儲(chǔ)引擎中。表級(jí)鎖分為: 表鎖、元數(shù)據(jù)鎖(meta data lock, MDL)和意向鎖。

表鎖又分為: 表共享讀鎖 read lock、表獨(dú)占寫鎖write lock

語(yǔ)法: 1、加鎖 lock tables 表名 ... read/write

2、釋放鎖 unlock tables 或者關(guān)閉客戶端連接

注意: 讀鎖不會(huì)阻塞其它客戶端的讀,但是會(huì)阻塞其它客戶端的寫,寫鎖既會(huì)阻塞其它客戶端的讀,又會(huì)阻塞其它客戶端的寫。大家可以拿一張表來(lái)測(cè)試看看。

元數(shù)據(jù)鎖,在加鎖過(guò)程中是系統(tǒng)自動(dòng)控制的,無(wú)需顯示使用,在訪問(wèn)一張表的時(shí)候會(huì)自動(dòng)加上,MDL鎖主要作用是維護(hù)表元數(shù)據(jù)的數(shù)據(jù)一致性,在表上有活動(dòng)事務(wù)的時(shí)候,不可以對(duì)元數(shù)據(jù)進(jìn)行寫入操作。為了避免DML和DDL沖突,保證讀寫的正確性。

在MySQL5.5中引入了MDL,當(dāng)對(duì)一張表進(jìn)行增刪改查的時(shí)候,加MDL讀鎖(共享);當(dāng)對(duì)表結(jié)構(gòu)進(jìn)行變更操作時(shí),加MDL寫鎖(排他).

查看元數(shù)據(jù)鎖:

select object_type,object_schema,object_name,lock_type,lock_duration from performance_schema_metadata_locks;

意向鎖,為了避免DML在執(zhí)行時(shí),加的行鎖與表鎖的沖突,在innodb中引入了意向鎖,使得表鎖不用檢查每行數(shù)據(jù)是否加鎖,使用意向鎖來(lái)減少表鎖的檢查。意向鎖分為,意向共享鎖is由語(yǔ)句select ... lock in share mode添加。意向排他鎖ix,由insert,update,delete,select。。。for update 添加。

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_lock;

行級(jí)鎖,每次操作鎖住對(duì)應(yīng)的行數(shù)據(jù),鎖定粒度最小,發(fā)生鎖沖突的概率最高,并發(fā)讀最高,應(yīng)用在innodb存儲(chǔ)引擎中。

innodb的數(shù)據(jù)是基于索引組織的,行鎖是通過(guò)對(duì)索引上的索引項(xiàng)加鎖來(lái)實(shí)現(xiàn)的,而不是對(duì)記錄加的鎖,對(duì)于行級(jí)鎖,主要分為以下三類:

1、行鎖或者叫record lock記錄鎖,鎖定單個(gè)行記錄的鎖,防止其他事物對(duì)次行進(jìn)行update和delete操作,在RC,RR隔離級(jí)別下都支持。

2、間隙鎖Gap lock,鎖定索引記錄間隙(不含該記錄),確保索引記錄間隙不變,防止其他事物在這個(gè)間隙進(jìn)行insert操作,產(chǎn)生幻讀,在RR隔離級(jí)別下都支持。

3、臨鍵鎖Next-key-lock,行鎖和間隙鎖組合,同時(shí)鎖住數(shù)據(jù),并鎖住數(shù)據(jù)前面的間隙Gap,在RR隔離級(jí)別下支持。

innodb實(shí)現(xiàn)了以下兩種類型的行鎖

1、共享鎖 S: 允許一個(gè)事務(wù)去讀一行,阻止其他事務(wù)獲得相同數(shù)據(jù)集的排他鎖。

2、排他鎖 X: 允許獲取排他鎖的事務(wù)更新數(shù)據(jù),阻止其他事務(wù)獲得相同數(shù)據(jù)集的共享鎖和排他鎖。

insert 語(yǔ)句 排他鎖 自動(dòng)添加的

update語(yǔ)句 排他鎖 自動(dòng)添加

delete 語(yǔ)句 排他鎖 自動(dòng)添加

select 正常查詢語(yǔ)句 不加鎖 。。。

select 。。。lock in share mode 共享鎖 需要手動(dòng)在select 之后加lock in share mode

select 。。。for update 排他鎖 需要手動(dòng)在select之后添加for update

默認(rèn)情況下,innodb在repeatable read事務(wù)隔離級(jí)別運(yùn)行,innodb使用next-key鎖進(jìn)行搜索和索引掃描,以防止幻讀。

間隙鎖唯一目的是防止其它事務(wù)插入間隙,間隙鎖可以共存,一個(gè)事務(wù)采用的間隙鎖不會(huì)阻止另一個(gè)事務(wù)在同一間隙上采用的間隙鎖。

如何鎖定MYSQL數(shù)據(jù)表

在進(jìn)行數(shù)據(jù)表檢查或修補(bǔ)時(shí),可以先將數(shù)據(jù)表鎖定,可確保數(shù)據(jù)表的安全:

mysqlLOCK TABLE tbl_name READ;

mysqlFLUSH TABLES;

將數(shù)據(jù)表鎖定后再進(jìn)行檢查或修補(bǔ)的工作。完成后再解除鎖定:

mysqlUNLOCK TABLES;

//LOCK TABLE tbl_name READ表示要鎖定成只讀狀態(tài),在這個(gè)狀態(tài)下用戶只能讀取數(shù)據(jù)表,不能寫入。

LOCK TABLE tbl_name WRITE則是更嚴(yán)格的鎖定,用戶不能讀取也不能寫入

如何對(duì)MySQL數(shù)據(jù)庫(kù)表進(jìn)行鎖定

如果你關(guān)閉數(shù)據(jù)庫(kù),就可以保證服務(wù)器和myisamchk和isamchk之間沒(méi)有交互作用。但是停止服務(wù)器的運(yùn)行并不是一個(gè)好注意,因?yàn)檫@樣做會(huì)使得沒(méi)有故障的數(shù)據(jù)庫(kù)和表也不可用。本節(jié)主要討論的過(guò)程,是避免服務(wù)器和myisamchk或isamchk之間的交互作用。實(shí)現(xiàn)這種功能的方法是對(duì)表進(jìn)行鎖定。服務(wù)器由兩種表的鎖定方法:1.內(nèi)部鎖定內(nèi)部鎖定可以避免客戶機(jī)的請(qǐng)求相互干擾——例如,避免客戶機(jī)的SELECT查詢被另一個(gè)客戶機(jī)的UPDATE查詢所干擾。也可以利用內(nèi)部鎖定機(jī)制防止服務(wù)器在利用myisamchk或isamchk檢查或修復(fù)表時(shí)對(duì)表的訪問(wèn)。語(yǔ)法:鎖定表:LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},…]解鎖表:UNLOCK TABLESLOCK TABLES為當(dāng)前線程鎖定表。UNLOCK TABLES釋放被當(dāng)前線程持有的任何鎖。當(dāng)線程發(fā)出另外一個(gè)LOCK TABLES時(shí),或當(dāng)服務(wù)器的連接被關(guān)閉時(shí),當(dāng)前線程鎖定的所有表自動(dòng)被解鎖。 如果一個(gè)線程獲得在一個(gè)表上的一個(gè)READ鎖,該線程(和所有其他線程)只能從表中讀。如果一個(gè)線程獲得一個(gè)表上的一個(gè)WRITE鎖,那么只有持鎖的線程READ或WRITE表,其他線程被阻止。每個(gè)線程等待(沒(méi)有超時(shí))直到它獲得它請(qǐng)求的所有鎖。 WRITE鎖通常比READ鎖有更高的優(yōu)先級(jí),以確保更改盡快被處理。這意味著,如果一個(gè)線程獲得READ鎖,并且然后另外一個(gè)線程請(qǐng)求一個(gè)WRITE鎖, 隨后的READ鎖請(qǐng)求將等待直到WRITE線程得到了鎖并且釋放了它。顯然對(duì)于檢查,你只需要獲得讀鎖。再者鐘情跨下,只能讀取表,但不能修改它,因此他也允許其它客戶機(jī)讀取表。對(duì)于修復(fù),你必須獲得些所以防止任何客戶機(jī)在你對(duì)表進(jìn)行操作時(shí)修改它。2.外部鎖定服務(wù)器還可以使用外部鎖定(文件級(jí)鎖)來(lái)防止其它程序在服務(wù)器使用表時(shí)修改文件。通常,在表的檢查操作中服務(wù)器將外部鎖定與myisamchk或isamchk作合使用。但是,外部鎖定在某些系統(tǒng)中是禁用的,因?yàn)樗荒芸煽康倪M(jìn)行工作。對(duì)運(yùn)行myisamchk或isamchk所選擇的過(guò)程取決于服務(wù)器是否能使用外部鎖定。如果不使用,則必修使用內(nèi)部鎖定協(xié)議。 如果服務(wù)器用--skip-locking選項(xiàng)運(yùn)行,則外部鎖定禁用。該選項(xiàng)在某些系統(tǒng)中是缺省的,如Linux。可以通過(guò)運(yùn)行mysqladmin variables命令確定服務(wù)器是否能夠使用外部鎖定。檢查skip_locking變量的值并按以下方法進(jìn)行:◆ 如果skip_locking為off,則外部鎖定有效您可以繼續(xù)并運(yùn)行人和一個(gè)實(shí)用程序來(lái)檢查表。服務(wù)器和實(shí)用程序?qū)⒑献鲗?duì)表進(jìn)行訪問(wèn)。但是,運(yùn)行任何一個(gè)實(shí)用程序之前,應(yīng)該使用mysqladmin flush-tables。為了修復(fù)表,應(yīng)該使用表的修復(fù)鎖定協(xié)議?!?如果skip_locaking為on,則禁用外部鎖定,所以在myisamchk或isamchk檢查修復(fù)表示服務(wù)器并不知道,最好關(guān)閉服務(wù)器。如果堅(jiān)持是服務(wù)器保持開啟狀態(tài),月確保在您使用此表示沒(méi)有客戶機(jī)來(lái)訪問(wèn)它。必須使用卡黨的鎖定協(xié)議告訴服務(wù)器是該表不被其他客戶機(jī)訪問(wèn)。檢查表的鎖定協(xié)議本節(jié)只介紹如果使用表的內(nèi)部鎖定。對(duì)于檢查表的鎖定協(xié)議,此過(guò)程只針對(duì)表的檢查,不針對(duì)表的修復(fù)。1.調(diào)用mysql發(fā)布下列語(yǔ)句:$mysql –u root –p db_namemysqlLOCK TABLE tbl_name READ;mysqlFLUSH TABLES; 該鎖防止其它客戶機(jī)在檢查時(shí)寫入該表和修改該表。FLUSH語(yǔ)句導(dǎo)致服務(wù)器關(guān)閉表的文件,它將刷新仍在告訴緩存中的任何為寫入的改變。2.執(zhí)行檢查過(guò)程$myisamchk tbl_name$ isamchk tbl_name 3.釋放表鎖mysqlUNLOCK TABLES; 如果myisamchk或isamchk指出發(fā)現(xiàn)該表的問(wèn)題,將需要執(zhí)行表的修復(fù)。修復(fù)表的鎖定協(xié)議這里只介紹如果使用表的內(nèi)部鎖定。修復(fù)表的鎖定過(guò)程類似于檢查表的鎖定過(guò)程,但有兩個(gè)區(qū)別。第一,你必須得到寫鎖而非讀鎖。由于你需要修改表,因此根本不允許客戶機(jī)對(duì)其進(jìn)行訪問(wèn)。第二,必須在執(zhí)行修復(fù)之后發(fā)布FLUSH TABLE語(yǔ)句,因?yàn)閙yisamchk和isamchk建立的新的索引文件,除非再次刷新改表的高速緩存,否則服務(wù)器不會(huì)注意到這個(gè)改變。本例同樣適合優(yōu)化表的過(guò)程。1.調(diào)用mysql發(fā)布下列語(yǔ)句:$mysql –u root –p db_namemysqlLOCK TABLE tbl_name WRITE;mysqlFLUSH TABLES; 2.做數(shù)據(jù)表的拷貝,然后運(yùn)行myisamchk和isamchk:$cp tbl_name.* /some/other/dir$myisamchk --recover tbl_name$ isamchk --recover tbl_name --recover選項(xiàng)只是針對(duì)安裝而設(shè)置的。這些特殊選項(xiàng)的選擇將取決與你執(zhí)行修復(fù)的類型。

MySQL如何鎖定一行及如何分析行鎖定

注意事項(xiàng):session1中沒(méi)有commit之前,該數(shù)據(jù)行是鎖定的,其他的session修改該行數(shù)據(jù)時(shí)會(huì)進(jìn)入堵塞狀態(tài)。

一文詳解-MySQL 事務(wù)和鎖

當(dāng)多個(gè)用戶訪問(wèn)同一份數(shù)據(jù)時(shí),一個(gè)用戶在更改數(shù)據(jù)的過(guò)程中,可能有其他用戶同時(shí)發(fā)起更改請(qǐng)求,為保證數(shù)據(jù)庫(kù)記錄的更新從一個(gè)一致性狀態(tài)變?yōu)榱硗庖粋€(gè)一致性狀態(tài),使用事務(wù)處理是非常必要的,事務(wù)具有以下四個(gè)特性:

MySQL 提供了多種事務(wù)型存儲(chǔ)引擎,如 InnoDB 和 BDB 等,而 MyISAM 不支持事務(wù)。為了支持事務(wù),InnoDB 存儲(chǔ)引擎引入了與事務(wù)處理相關(guān)的 REDO 日志和 UNDO 日志,同時(shí)事務(wù)依賴于 MySQL 提供的鎖機(jī)制

事務(wù)執(zhí)行時(shí)需要將執(zhí)行的事務(wù)日志寫入日志文件,對(duì)應(yīng)的文件為 REDO 日志。當(dāng)每條 SQL 進(jìn)行數(shù)據(jù)更新操作時(shí),首先將 REDO 日志寫進(jìn)日志緩沖區(qū)。當(dāng)客戶端執(zhí)行 COMMIT 命令提交時(shí),日志緩沖區(qū)的內(nèi)容將被刷新到磁盤,日志緩沖區(qū)的刷新方式或者時(shí)間間隔可以通過(guò)參數(shù) innodb_flush_log_at_trx_commit 控制

REDO 日志對(duì)應(yīng)磁盤上的 ib_logifleN 文件,該文件默認(rèn)為 5MB,建議設(shè)置為 512MB,以便容納較大的事務(wù)。MySQL 崩潰恢復(fù)時(shí)會(huì)重新執(zhí)行 REDO 日志的記錄,恢復(fù)最新數(shù)據(jù),保證已提交事務(wù)的持久性

與 REDO 日志相反,UNDO 日志主要用于事務(wù)異常時(shí)的數(shù)據(jù)回滾,具體內(nèi)容就是記錄數(shù)據(jù)被修改前的信息到 UNDO 緩沖區(qū),然后在合適的時(shí)間將內(nèi)容刷新到磁盤

假如由于系統(tǒng)錯(cuò)誤或者 rollback 操作而導(dǎo)致事務(wù)回滾,可以根據(jù) undo 日志回滾到?jīng)]修改前的狀態(tài),保證未提交事務(wù)的原子性

與 REDO 日志不同的是,磁盤上不存在單獨(dú)的 UNDO 日志文件,所有的 UNDO 日志均存在表空間對(duì)應(yīng)的 .ibd 數(shù)據(jù)文件中,即使 MySQL 服務(wù)啟動(dòng)了獨(dú)立表空間

在 MySQL 中,可以使用 BEGIN 開始事務(wù),使用 COMMIT 結(jié)束事務(wù),中間可以使用 ROLLBACK 回滾事務(wù)。MySQL 通過(guò) SET AUTOCOMMIT、START TRANSACTION、COMMIT 和 ROLLBACK 等語(yǔ)句支持本地事務(wù)

MySQL 定義了四種隔離級(jí)別,指定事務(wù)中哪些數(shù)據(jù)改變其他事務(wù)可見、哪些數(shù)據(jù)該表其他事務(wù)不可見。低級(jí)別的隔離級(jí)別可以支持更高的并發(fā)處理,同時(shí)占用的系統(tǒng)資源更少

InnoDB 系統(tǒng)級(jí)事務(wù)隔離級(jí)別可以使用以下語(yǔ)句設(shè)置:

查看系統(tǒng)級(jí)事務(wù)隔離級(jí)別:

InnoDB 會(huì)話級(jí)事務(wù)隔離級(jí)別可以使用以下語(yǔ)句設(shè)置:

查看會(huì)話級(jí)事務(wù)隔離級(jí)別:

在該隔離級(jí)別,所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果。讀取未提交的數(shù)據(jù)稱為臟讀(Dirty Read),即是:首先開啟 A 和 B 兩個(gè)事務(wù),在 B 事務(wù)更新但未提交之前,A 事務(wù)讀取到了更新后的數(shù)據(jù),但由于 B 事務(wù)回滾,導(dǎo)致 A 事務(wù)出現(xiàn)了臟讀現(xiàn)象

所有事務(wù)只能看見已經(jīng)提交事務(wù)所做的改變,此級(jí)別可以解決臟讀,但也會(huì)導(dǎo)致不可重復(fù)讀(Nonrepeatable Read):首先開啟 A 和 B 兩個(gè)事務(wù),A事務(wù)讀取了 B 事務(wù)的數(shù)據(jù),在 B 事務(wù)更新并提交后,A 事務(wù)又讀取到了更新后的數(shù)據(jù),此時(shí)就出現(xiàn)了同一 A 事務(wù)中的查詢出現(xiàn)了不同的查詢結(jié)果

MySQL 默認(rèn)的事務(wù)隔離級(jí)別,能確保同一事務(wù)的多個(gè)實(shí)例在并發(fā)讀取數(shù)據(jù)時(shí)看到同樣的數(shù)據(jù)行,理論上會(huì)導(dǎo)致一個(gè)問(wèn)題,幻讀(Phontom Read)。例如,第一個(gè)事務(wù)對(duì)一個(gè)表中的數(shù)據(jù)做了修改,這種修改會(huì)涉及表中的全部數(shù)據(jù)行,同時(shí)第二個(gè)事務(wù)也修改這個(gè)表中的數(shù)據(jù),這次的修改是向表中插入一行新數(shù)據(jù),此時(shí)就會(huì)發(fā)生操作第一個(gè)事務(wù)的用戶發(fā)現(xiàn)表中還有沒(méi)有修改的數(shù)據(jù)行

InnoDB 通過(guò)多版本并發(fā)控制機(jī)制(MVCC)解決了該問(wèn)題:InnoDB 通過(guò)為每個(gè)數(shù)據(jù)行增加兩個(gè)隱含值的方式來(lái)實(shí)現(xiàn),這兩個(gè)隱含值記錄了行的創(chuàng)建時(shí)間、過(guò)期時(shí)間以及每一行存儲(chǔ)時(shí)間發(fā)生時(shí)的系統(tǒng)版本號(hào),每個(gè)查詢根據(jù)事務(wù)的版本號(hào)來(lái)查詢結(jié)果

通過(guò)強(qiáng)制事務(wù)排序,使其不可能相互沖突,從而解決幻讀問(wèn)題。簡(jiǎn)而言之,就是在每個(gè)讀的數(shù)據(jù)行上加上共享鎖實(shí)現(xiàn),這個(gè)級(jí)別會(huì)導(dǎo)致大量的超時(shí)現(xiàn)象和鎖競(jìng)爭(zhēng),一般不推薦使用

為了解決數(shù)據(jù)庫(kù)并發(fā)控制問(wèn)題,如走到同一時(shí)刻客戶端對(duì)同一張表做更新或者查詢操作,需要對(duì)并發(fā)操作進(jìn)行控制,因此產(chǎn)生了鎖

共享鎖的粒度是行或者元組(多個(gè)行),一個(gè)事務(wù)獲取了共享鎖以后,可以對(duì)鎖定范圍內(nèi)的數(shù)據(jù)執(zhí)行讀操作

排他鎖的粒度與共享鎖相同,一個(gè)事務(wù)獲取排他鎖以后,可以對(duì)鎖定范圍內(nèi)的數(shù)據(jù)執(zhí)行寫操作

有兩個(gè)事務(wù) A 和 B,如果事務(wù) A 獲取了一個(gè)元組的共享鎖,事務(wù) B 還可以立即獲取這個(gè)元組的共享鎖,但不能獲取這個(gè)元組的排他鎖,必須等到事務(wù) A 釋放共享鎖之后。如果事務(wù) A 獲取了一個(gè)元組的排他鎖,事務(wù) B 不能立即獲取這個(gè)元組的共享鎖,也不能立即獲取這個(gè)元組的排他鎖,必須等到 A 釋放排他鎖之后

意向鎖是一種表鎖,鎖定的粒度是整張表,分為意向共享鎖和意向排他鎖。意向共享鎖表示一個(gè)事務(wù)有意對(duì)數(shù)據(jù)上共享鎖或者排他鎖。有意表示事務(wù)想執(zhí)行操作但還沒(méi)真正執(zhí)行

鎖的粒度主要分為表鎖和行鎖

表鎖的開銷最小,同時(shí)允許的并發(fā)量也是最小。MyISAM 存儲(chǔ)引擎使用該鎖機(jī)制。當(dāng)要寫入數(shù)據(jù)時(shí),整個(gè)表記錄被鎖,此時(shí)其他讀/寫動(dòng)作一律等待。一些特定的動(dòng)作,如 ALTER TABLE 執(zhí)行時(shí)使用的也是表鎖

行鎖可以支持最大的并發(fā),InnoDB 存儲(chǔ)引擎使用該鎖機(jī)制。如果要支持并發(fā)讀/寫,建議采用 InnoDB 存儲(chǔ)引擎


文章名稱:mysql怎么鎖定,mysql鎖的使用
文章URL:http://weahome.cn/article/heojeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部