第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 SELECT 會等待鎖定?

為什么 SELECT 會等待鎖定?

撒科打諢 2022-08-17 15:22:06
在我的應(yīng)用程序中,我遇到了有時SELECT語句遇到異常的問題??杀氖牵覠o法創(chuàng)建一個例子,因為情況非常復(fù)雜。所以問題只是關(guān)于一般理解。java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction一點(diǎn)背景信息:我正在使用具有READ_COMMITED隔離級別的MySQL(InnoDB)。實際上,我不明白SELECT如何通過該設(shè)置遇到鎖定超時。我以為SELECT永遠(yuǎn)不會鎖定,因為它只會返回最新的提交狀態(tài)(由MySQL管理)。無論如何,根據(jù)正在發(fā)生的事情,這似乎是錯誤的。那么它到底是怎么回事呢?我已經(jīng)讀過這個 https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html 但這并沒有真正給我一個線索。沒有或類似的東西被使用。SELECT ... FOR UPDATE
查看完整描述

2 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗 獲得超9個贊

這可能是由于您的數(shù)據(jù)庫。通常,這種問題來自該側(cè),而不是來自訪問它的編程端。根據(jù)我對db的經(jīng)驗,這些問題通常是由于這一點(diǎn)。最后,編程方面只是“在那個數(shù)據(jù)庫里為我得到那個”的事情。

我毫不費(fèi)力地找到了這個。

它基本上解釋了:

Lock wait timeout通常發(fā)生在事務(wù)正在等待數(shù)據(jù)行更新時,該數(shù)據(jù)行已被其他事務(wù)鎖定。

您還應(yīng)該檢查這個具有特定事務(wù)問題的答案,這可能會對您有所幫助,因為嘗試更改不同的表可能會超時

查詢試圖更改一個或多個InnoDB表中的至少一行。由于您知道查詢,因此所有被訪問的表都是罪魁禍?zhǔn)椎暮蜻x項。


查看完整回答
反對 回復(fù) 2022-08-17
?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗 獲得超3個贊

為了加快數(shù)據(jù)庫中的查詢速度,可以同時執(zhí)行多個事務(wù)。例如,如果有人對公司員工的工資表運(yùn)行選擇查詢(每個員工由id標(biāo)識),而另一個更改了例如已婚人士的姓氏,則可以同時執(zhí)行這兩個查詢,因為它們不會干擾。

但在其他情況下,即使是 SELECT 語句也可能會干擾另一個語句。

為了防止SQL事務(wù)中的意外結(jié)果,事務(wù)遵循ACID模型,該模型代表原子性,一致性,隔離性和持久性(有關(guān)更多信息,請閱讀維基百科)。

假設(shè)事務(wù) 1 開始計算某些內(nèi)容,然后想要將結(jié)果寫入表 A。在編寫之前,它會將所有 SELECT 語句鎖定到表 A。否則,這會干擾隔離要求。因為如果事務(wù) 2 在 1 仍在寫入時啟動,則 2 的結(jié)果取決于 1 已寫入的位置和未寫入的位置。

現(xiàn)在,它甚至可能產(chǎn)生死鎖。例如,在事務(wù) 1 可以寫入表 A 中的最后一個字段之前,它仍然必須向表 B 寫入一些內(nèi)容,但事務(wù) 2 已經(jīng)阻止了表 B 在從 A 讀取后安全地讀取表 B,現(xiàn)在你有一個死鎖。2 想要從被 1 阻止的 A 讀取,因此它等待 1 完成,但 1 等待 2 解鎖表 B 自行完成。

為了解決這個問題,一種策略是在某個超時后回滾某些事務(wù)。(更多這里)

因此,這可能是您的 select 語句的讀取,以獲得超過鎖定等待超時。

但是死鎖通常只是巧合發(fā)生的,所以如果事務(wù) 2 被迫回滾,事務(wù) 1 應(yīng)該能夠完成,以便 2 應(yīng)該能夠在以后的嘗試中成功。


查看完整回答
反對 回復(fù) 2022-08-17
  • 2 回答
  • 0 關(guān)注
  • 255 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號