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

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

mysql鎖表的原因有哪些

這篇文章主要為大家展示了“MySQL鎖表的原因有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“mysql鎖表的原因有哪些”這篇文章吧。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供靈丘網(wǎng)站建設(shè)、靈丘做網(wǎng)站、靈丘網(wǎng)站設(shè)計(jì)、靈丘網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、靈丘企業(yè)網(wǎng)站模板建站服務(wù),10年靈丘做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

在mysql中,鎖表的原因是一個(gè)程序執(zhí)行了對表的insert、update或者delete操作還未commite時(shí),另一個(gè)程序也對同一個(gè)表進(jìn)行相同的操作,則此時(shí)會(huì)發(fā)生資源正忙的異常,也就是鎖表。

本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。

mysql鎖表的原因有哪些

鎖是計(jì)算機(jī)協(xié)調(diào)多個(gè)進(jìn)程或線程并發(fā)訪問某一資源的機(jī)制。

在數(shù)據(jù)庫中,除傳統(tǒng)的計(jì)算資源(如CPU、RAM、I/O等)的爭用以外,數(shù)據(jù)也是一種供許多用戶共享的資源。

如何保證數(shù)據(jù)并發(fā)訪問的一致性、有效性是所有數(shù)據(jù)庫必須解決的一個(gè)問題,鎖沖突也是影響數(shù)據(jù)庫并發(fā)訪問性能的一個(gè)重要因素。

從這個(gè)角度來說,鎖對數(shù)據(jù)庫而言顯得尤其重要,也更加復(fù)雜。

鎖表的原因

1、鎖表發(fā)生在insert update 、delete 中

2、鎖表的原理是 數(shù)據(jù)庫使用獨(dú)占式封鎖機(jī)制,當(dāng)執(zhí)行上面的語句時(shí),對表進(jìn)行鎖住,直到發(fā)生commite 或者 回滾 或者退出數(shù)據(jù)庫用戶

第一、 A程序執(zhí)行了對 tableA 的 insert ,并還未 commite時(shí),B程序也對tableA 進(jìn)行insert 則此時(shí)會(huì)發(fā)生資源正忙的異常 就是鎖表

第二、鎖表常發(fā)生于并發(fā)而不是并行(并行時(shí),一個(gè)線程操作數(shù)據(jù)庫時(shí),另一個(gè)線程是不能操作數(shù)據(jù)庫的,cpu 和i/o 分配原則)

3、減少鎖表的概率:

減少insert 、update 、delete 語句執(zhí)行 到 commite 之間的時(shí)間。

具體點(diǎn)批量執(zhí)行改為單個(gè)執(zhí)行、優(yōu)化sql自身的非執(zhí)行速度 如果異常對事物進(jìn)行回滾

示例如下:

使用 update

假設(shè)kid 是表table 的 一個(gè)索引字段 且值不唯一:

1):如果kid 有多個(gè)值為12的記錄那么:

update table set name=’feie’ where kid=12;   #會(huì)鎖表

2):如果kid有唯一的值為1的記錄那么:

update table set name=’feie’ where kid=1;   #不會(huì)鎖

總結(jié):用索引字段做為條件進(jìn)行修改時(shí), 是否表鎖的取決于這個(gè)索引字段能否確定記錄唯一,當(dāng)索引值對應(yīng)記錄不唯一,會(huì)進(jìn)行鎖表,相反則行鎖。

使用 delete

如果有兩個(gè)delete : kid1 與 kid2 是索引字段

1):語句1 delete from table where kid1=1 and kid2=2;

2):語句2 delete from table where kid1=1 and kid2=3;

 # 這樣的兩個(gè)delete 是不會(huì)鎖表的

1):語句1 delete from table where kid1=1 and kid2=2;

2):語句2 delete from table where kid1=1 ;

 # 這樣的兩個(gè)delete 會(huì)鎖表

以上是“mysql鎖表的原因有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章名稱:mysql鎖表的原因有哪些
瀏覽路徑:http://weahome.cn/article/jjjjhe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部