mysql select是否會鎖表 ?

2021-08-14 02:53:11 字數 756 閱讀 5183

有的人說mysql的 select 會鎖表 ,有的人說 mysql 的查詢不會鎖表 。

其他他們都對,沒有 ,但是很片面。

其實對於mysql的select 是否會鎖表 ,這個完全取決於表採用的是什麼儲存引擎。

這裡我就拿大家最熟悉的儲存引擎innodb 和myisam 來說明這個問題。

對於myisam的表select 是會鎖定表的 ,會導致其他操作掛起,處於等待狀態。

對於innodb的表select 是不會鎖表的。其實這裡使用到了快照。快照這裡不作討論。

下面是是我的佐證:

回話一:

select sql_no_cache * from tmp002

表 tmp002 有5618288 資料 儲存引擎時innodb ,全部查詢出來大約需要5min左右

回話二:

update tmp002

set num=6

where mreasonid in (『700098』,』301001』 ) limit 10000

我們首先 執行以下 回話一的 語句 。 再執行回話二。

我們會發現回話2很快就執行了

update tmp002

set num=6

where mreasonid in (『700098』,』301001』 ) limit 10000

在回話三種執行下 show full processlist 。

沒有發現任何鎖定的現象。

同樣是上面的例子

mysql select是否會鎖表

有的人說mysql的 select 會鎖表 有的人說 mysql 的查詢不會鎖表 其他他們都對,沒有 但是很片面。其實對於mysql的select 是否會鎖表 這個完全取決於表採用的是什麼儲存引擎。這裡我就拿大家最熟悉的儲存引擎innodb 和myisam 來說明這個問題。對於myisam的表sel...

update會鎖表嗎?

update會鎖表嗎?兩種情況 1.帶索引 2.不帶索引 前提介紹 方式 採用命令列的方式來模擬 1.mysq由於預設是開啟自動提交事務,所以首先得檢視自己當前的資料庫是否開啟了自動提交事務。命令 select autocommit 結果如下 autocommit 0 如果是1,那麼執行命令 set...

物極必反 蘋果是否會盛極而衰

隨著蘋果產品的不斷大賣與蘋果公司市值進一步提公升,很多投資者開始擔心蘋果會出現盛極而衰的現象,科技界的發展瞬息萬變,誰也無法 蘋果未來的發展。2012開始了,今年蘋果又會有何表現。iphone是否還能體現地位象徵 很手機購買者其實不懂手機,也不是很清楚手機的功能,只是大家都用iphone,我沒有ip...