成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MySQL中鎖定的示例分析

這篇文章主要介紹了MySQL中鎖定的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的永登網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

 
1. 偽事務(wù)
 
前面已經(jīng)介紹了InnoDB和BDB表環(huán)境中的事務(wù),這是MySQL天生支持的ACID規(guī)則事務(wù)的僅有的表類(lèi)型。舊的MySQL表類(lèi)型,在許多安裝MySQL的環(huán)境中仍然在使用,它們不支持事務(wù),但是MySQL仍然可以使用戶通過(guò)表鎖定來(lái)實(shí)現(xiàn)原始形式的事務(wù)。在此介紹偽事務(wù),提供對(duì)非事務(wù)表執(zhí)行安全事務(wù)的一些基本指標(biāo)。  www.2cto.com  
 
2.  鎖定與解鎖
 
 因?yàn)镸yISAM(以及其他舊的MySQL表)不支持InnoDB格式的COMMIT和ROLLBACK語(yǔ)法,所以每次的變化都被立即保存在磁盤(pán)上。像前面所講的那樣,在單用戶的環(huán)境中,這沒(méi)有問(wèn)題,但是在多用戶的環(huán)境中,就會(huì)導(dǎo)致很多問(wèn)題。因?yàn)樗荒軇?chuàng)建事務(wù)來(lái)使用戶所做的變化隔離于其他用戶所做的變化。在這種情況下,唯一一種保證不同用戶能夠看到一致數(shù)據(jù)的方法是強(qiáng)制方法:在變化的過(guò)程中阻止其他用戶訪問(wèn)正在變化的表(通過(guò)鎖定表),只在變化完成后才允許訪問(wèn)。
 
前面已經(jīng)討論了InnoDB和BDB表,它們支持行級(jí)和頁(yè)級(jí)的鎖定來(lái)保證同時(shí)執(zhí)行的事務(wù)的安全。不過(guò),MyISAM表類(lèi)型不支持這些鎖定機(jī)制。所以,要明確地設(shè)置表鎖定,以避免同時(shí)存在的事務(wù)互相侵犯空間。
 
MySQL提供了LOCK TABLES語(yǔ)句來(lái)鎖定當(dāng)前線程的表,語(yǔ)法格式如下:LOCK TABLES
 
   tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
 
說(shuō)明:
 
表鎖定支持以下類(lèi)型的鎖定。
 
●   READ:讀鎖定,確保用戶可以讀取表,但是不能修改表。加上LOCAL后允許在表鎖定后用戶可以進(jìn)行非沖突的INSERT語(yǔ)句,只適用于MyISAM類(lèi)型的表。
 
●  WRITE:寫(xiě)鎖定,只有鎖定該表的用戶可以修改表,其他用戶無(wú)法訪問(wèn)該表。加上LOW_PRIORITY后允許其他用戶讀取表,但是不能修改它。
 
當(dāng)用戶在一次查詢中多次使用到一個(gè)鎖定了的表,需要在鎖定表的時(shí)候用AS子句為表定義一個(gè)別名,alias表示表的別名。  www.2cto.com  
 
3.       表鎖定只用于防止其他客戶端進(jìn)行不正當(dāng)?shù)刈x取和寫(xiě)入。
 
保持鎖定(即使是讀取鎖定)的客戶端可以進(jìn)行表層級(jí)的操作,如DROP TABLE。 
 
在對(duì)一個(gè)事務(wù)表使用表鎖定的時(shí)候需要注意以下幾點(diǎn):
 
(1)在鎖定表時(shí)會(huì)隱式地提交所有事務(wù),在開(kāi)始一個(gè)事務(wù)時(shí),如START TRANSACTION,會(huì)隱式解開(kāi)所有表鎖定。
 
(2)在事務(wù)表中,系統(tǒng)變量AUTOCOMMIT值必須設(shè)為0。否則,MySQL會(huì)在調(diào)用LOCK TABLES之后立刻釋放表鎖定,并且很容易形成死鎖。
 
例: 在XS表上設(shè)置一個(gè)只讀鎖定:LOCK TABLES XS READ;
 
說(shuō)明:LOCK TABLES還可以同時(shí)鎖定多個(gè)表,中間用逗號(hào)隔開(kāi)即可。
 
例: 在KC表上設(shè)置一個(gè)寫(xiě)鎖定:  LOCK TABLES KC WRITE;
 
在鎖定表以后,可以使用UNLOCK TABLES命令解除鎖定。語(yǔ)法格式為:  UNLOCK TABLES;
 
UNLOCK TABLES命令不需要指出解除鎖定的表的名字。MySQL會(huì)自動(dòng)對(duì)前面通過(guò)LOCK TABLES鎖定的所有表解除鎖定。當(dāng)用戶發(fā)布另一個(gè)LOCK TABLES時(shí),或當(dāng)與服務(wù)器的連接關(guān)閉時(shí),所有由當(dāng)前用戶鎖定的表被隱式地解鎖。
 
4.當(dāng)用戶對(duì)數(shù)據(jù)庫(kù)并發(fā)訪問(wèn)時(shí),為了確保事務(wù)完整性和數(shù)據(jù)庫(kù)一致性,需要使用鎖定,它是實(shí)現(xiàn)數(shù)據(jù)庫(kù)并發(fā)控制的主要手段。鎖定可以防止用戶讀取正在由其他用戶更改的數(shù)據(jù),并可以防止多個(gè)用戶同時(shí)更改相同數(shù)據(jù)。如果不使用鎖定,則數(shù)據(jù)庫(kù)中的數(shù)據(jù)可能在邏輯上不正確,并且對(duì)數(shù)據(jù)的查詢可能會(huì)產(chǎn)生意想不到的結(jié)果。具體地說(shuō),鎖定可以防止丟失更新、臟讀、不可重復(fù)讀和幻讀。
 
丟失更新(lost update),指當(dāng)兩個(gè)或多個(gè)事務(wù)選擇同一行,然后基于最初選定的值更新該行時(shí),由于每個(gè)事務(wù)都不知道其他事務(wù)的存在,因此最后的更新將重寫(xiě)由其他事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。  www.2cto.com  
臟讀(dirty read)指一個(gè)事務(wù)正在訪問(wèn)數(shù)據(jù),而其他事務(wù)正在更新該數(shù)據(jù),但尚未提交,此時(shí)就會(huì)發(fā)生臟讀問(wèn)題,即第一個(gè)事務(wù)所讀取的數(shù)據(jù)是“臟”(不正確)數(shù)據(jù),它可能會(huì)引起錯(cuò)誤。
 
當(dāng)一個(gè)事務(wù)多次訪問(wèn)同一行而且每次讀取不同的數(shù)據(jù)時(shí),會(huì)發(fā)生不可重復(fù)讀(unrepeatable read)問(wèn)題。不可重復(fù)讀與臟讀有相似之處,因?yàn)樵撌聞?wù)也是正在讀取其他事務(wù)正在更改的數(shù)據(jù)。當(dāng)一個(gè)事務(wù)訪問(wèn)數(shù)據(jù)時(shí),另外的事務(wù)也訪問(wèn)該數(shù)據(jù)并對(duì)其進(jìn)行修改,因此就發(fā)生了由于第二個(gè)事務(wù)對(duì)數(shù)據(jù)的修改而導(dǎo)致第一個(gè)事務(wù)兩次讀到的數(shù)據(jù)不一樣的情況,這就是不可重復(fù)讀。
 
當(dāng)一個(gè)事務(wù)對(duì)某行執(zhí)行插入或刪除操作,而該行屬于某個(gè)事務(wù)正在讀取的行的范圍時(shí),會(huì)發(fā)生幻讀(phantom read)問(wèn)題。事務(wù)第一次讀的行范圍顯示出其中一行已不復(fù)存在于第二次讀或后續(xù)讀中,因?yàn)樵撔幸驯黄渌聞?wù)刪除。同樣,由于其他事務(wù)的插入操作,事務(wù)的第二次讀或后續(xù)讀顯示有一行已不存在于原始讀中。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“MySQL中鎖定的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

新聞標(biāo)題:MySQL中鎖定的示例分析
URL標(biāo)題:http://jinyejixie.com/article8/gdjdop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、建站公司做網(wǎng)站、網(wǎng)站排名、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
南投县| 沂水县| 抚顺市| 开平市| 大城县| 瓦房店市| 嘉善县| 芷江| 华坪县| 黎平县| 汶川县| 雷州市| 玛曲县| 鹤壁市| 丰宁| 盐源县| 天台县| 应城市| 栾城县| 鄂托克旗| 巫山县| 平武县| 北辰区| 忻州市| 金山区| 义马市| 长沙市| 会同县| 灌南县| 安平县| 灵台县| 开江县| 武冈市| 滁州市| 汽车| 新营市| 揭东县| 同江市| 页游| 定结县| 泗洪县|