日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql和oracle的锁_关于数据库行锁与表锁的认识

發(fā)布時(shí)間:2025/3/15 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql和oracle的锁_关于数据库行锁与表锁的认识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL

MySQL(InnoDB存儲引擎)默認(rèn)是自動(dòng)提交事務(wù)的,所以這個(gè)測試,需要先將MySQL的autocommit設(shè)置為0,關(guān)閉自動(dòng)提交,需要自己手動(dòng)提交事務(wù)

-- 關(guān)閉自動(dòng)提交

set autocommit=0;

-- 開啟事務(wù)

begin;

這里我主要針對的是悲觀鎖,其實(shí)也就是行鎖和表鎖,SQL 加上 FOR UPDATE 即可

行鎖

這個(gè)時(shí)候,我們再開啟一個(gè)客戶端訪問MySQL,輸入同一條加鎖的SQL查詢

這個(gè)時(shí)候是沒有任何結(jié)果的,因?yàn)閠_card表已經(jīng)加鎖了(這個(gè)時(shí)候其實(shí)加的是行鎖),所以cardid=‘1’ 這一行的其他加鎖操作是無效的

但是不加鎖查詢這一條記錄卻是可以的

也就是說雖然這一條記錄所在的行被鎖定了,但是并不影響我們正常的查詢,當(dāng)然了針對這一行的DML操作也是無效的

那如果我們對除了cardid=‘1’ 的其他行操作會怎樣呢?

對于其他的行DML是完全沒問題的,所以我在前面才說這是行鎖,因?yàn)橹挥形覀兊腸ardid=‘1’的行被鎖了

好吧,我們放過cardid=‘1’這一行吧

提交事務(wù)之后,另一邊的加鎖SQL才會生效

表鎖

上面我們測試的只是行鎖,那表鎖,或者說怎樣才會發(fā)生表鎖?

沒錯(cuò),我們不根據(jù)主鍵查詢,而是查詢所有的記錄,MySQL就對整張表加鎖了,這不就是表鎖了嘛。對于這張表的任何記錄進(jìn)行DML都是無效的

同時(shí)我們對于這張表的任何行進(jìn)行加鎖SQL操作是無效的,那普通的SQL查詢又怎樣呢?

還好,這不妨礙我們的普通查詢,畢竟查詢是與鎖這東西沒什么緣分的

結(jié)論

只要有鎖存在的地方(無論是一行還是整張表),我們對有鎖的地方進(jìn)行任何加鎖SQL都是無效的,當(dāng)然了DML也是無效的;但是我們的普通查詢是沒有問題的,同時(shí)對于沒有鎖的行也是可以進(jìn)行DML操作的

至于如何解除鎖,可以查看這篇博客:?https://zhengdl126.iteye.com/blog/1570865 。最后記得把MySQL的autocommit = 1

Oracle

Oracle是需要我們手動(dòng)提交事務(wù)的,所以,我們不需要任何設(shè)置即可測試

只有提交事務(wù)之后,另一邊才會生效,同樣的普通查詢是沒有問題的。如果不根據(jù)主鍵查詢,就會鎖整張表。最后的結(jié)論是與MySQL一致的

查看哪張表被鎖以及解鎖

-- 查看哪張表被鎖

SELECT object_name, machine, s.sid, s.serial#, logon_time, locked_mode

FROM gv$locked_object l, dba_objects o, gv$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid;

-- 解鎖(根據(jù)上邊SQL查詢結(jié)果得到sid和serial#)

--alter system kill session ‘sid,serial#‘;

ALTER system kill session ‘23,1647‘;

與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的mysql和oracle的锁_关于数据库行锁与表锁的认识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。