Mysql基礎教程 mysql進階

Mysql獨占寫鎖



My ISAM表鎖(獨占寫鎖)


獨占寫鎖它實際上是以獨占的方式去訪問我們這個鎖,如果我們給這個表加上一個寫鎖,那么其他的客戶端它是沒辦法對它進行一個讀寫訪問的。


示例


打開客戶端1。


0.png


打開客戶端2。


1.png


在客戶端1中,選擇數據庫。


2.png


在employees這張表里加一個寫鎖。


3.png


在客戶端2中,選擇數據庫。


4.png


在另一個客戶端訪問的時候,它已經出現等待了,因為我們這里是以一個獨占方式的寫鎖。


5.png


獨占方式的寫鎖,我們可以對它進行一個插入。


6.png


我們更新剛才的數據。


7.png


我們這里再進行一個刪除操作,把我們剛才的數據刪掉,可以看見我們可以對這個表進行增刪改的操作。


8.png


那么查詢呢?實際上也是可以進行查詢操作的。


9.png


我們還考慮到一個問題,現在我們已經以這種方式去操作它了,那么現在我們可以去看一下線程的等待。現在我們已經給它加了鎖,還沒有給它進行解鎖。現在,可以看一下鎖的一些等待情況。這里我們發現,它這里存在著兩個程序等待的情況。實際上,這里的session也存在著等待的情況。


90.png


解鎖。


91.png


解鎖后,這里的等待被釋放。


92.png


我們再來看一下,以共享讀鎖的方式訪問它。


93.png


我們把employees這張表加一個別名,那么我們在訪問的時候,它就會提示我的這個a表訪問的別名實際上是沒有加鎖。


94.png


那這個時候,如果你想訪問的時候是用的這個別名訪問,就需要按照如下命令。


95.png


就可以查詢了,這個時候我們應該注意的是,如果我們用的是別名來訪問這個數據庫的時候,那么我們應該以這樣的方式,給這個表加一個別名。


96.png


給所有的表解鎖。


97.png


再給employees加一個寫鎖。


98.png


那如果我們要訪問其他的表,這里面它就會提示,這個表它由于沒有被鎖住,所以我們是不能的。


99.png


我們在訪問一個表的時候,一個session使用LOCK TABLE命令給表f加了讀鎖,這個session可以查詢鎖定表中的記錄,但更新或訪問其他表都會提示錯誤;同時,另外一個session可以查詢表中的記錄,但更新就會出現鎖等待。因為我們剛剛是給employees這張表加了一個鎖之后,那么我們在訪問其他表的時候,它也會出現一個錯誤提示,就是告訴你這個表沒有被我們鎖住,這是我們關于讀寫鎖的時候應該注意的問題。


下面給表進行全部解鎖。


990.png


下面我要做的是,我同時鎖住兩張表,一個讀表,一個寫表。


991.png


訪問employees。


992.png


訪問salaries,它也是可以訪問的。


993.png


在另一個客戶端訪問employees。


994.png


訪問salaries,這里面就會出現等待了,因為我同時對兩張表加了一個鎖,一張表加了讀鎖,一張表加了寫鎖,這里面就會很明顯的區別出來,當我們給它加上一個讀鎖后,我們是可以在另一個session當中去訪問的,那么,如果我們給它加了一個寫鎖,另一張表在訪問的時候,這里面的鎖是不能被查詢到的,因為它是以獨占的一種方式的寫鎖。另外一種是讀的這個鎖是以共享方式的讀鎖。


995.png


解鎖。


996.png


這個時候我們就可以進行查詢了。


997.png


這一節主要講的是獨占寫鎖的方式,獨占寫鎖的方式和我們的共享讀鎖的區別方式就是,如果我們的session是以獨占寫鎖的方式,那么其他session事沒辦法去讀的。獨占寫鎖所針對的這張表只有在被解鎖之后才可以去訪問它。



【本文由麥子學院獨家原創,轉載請注明出處并保留原文鏈接】

logo
? 2012-2016 www.jvbprd.live
蜀ICP備13014270號-4 Version 5.0.0 release20160127

免費領取價值1888元求職寶典!

客服熱線 400-862-8862

回到頂部

彩票安徽25选5 我想赚钱用英文怎么说 如何利用学生赚钱的方法有哪些 塞尔达快速赚钱攻略 亿贝彩票首页 全民棋牌麻将下载 微派农场真能赚钱吗 事故拖车赚钱嘛 天天捕鱼欢乐颂 购买300台手机赚钱 创富彩票安卓 鹿角巷加盟能赚钱吗 成都手机麻将群 云集代理商能赚钱吗 佛山货拉拉到底赚钱不 除了兼职还能怎么赚钱 下班微商做什么赚钱