mysql悲觀鎖測試 測試乙個mysql 悲觀鎖

2021-10-17 17:51:50 字數 1309 閱讀 1926

建立乙個儲存過程 在儲存過程中  先查詢  乙個表  for  update

見**:

delimiter $$

drop procedure if exists test_sp1 $$

create procedure test_sp1( )

begin

declare t_error integer default 0;

declare count int default 0;

declare sum int default 0;

declare continue handler for sqlexception set t_error=1;

start transaction;

select * from srv_my_service where id =1 for update;

while count < 100000000 do

set sum = sum + count;

set count = count + 1;

end while;

select sum;

if t_error = 1 then

rollback;

else

commit;

end if;

select t_error;

end$$

新開啟乙個視窗 ,執行查詢

select * from srv_my_service where id =1 for update;

執行此語句,將一直處於等待狀態

原因是上一儲存過程先執行查詢  使用for update 占用x鎖,在事務沒有提交的情況下,新的視窗使用 for update 查詢則乙個處於阻塞等待

因為上一儲存過程一直沒有釋放x鎖.

執行下面的語句,可以正常執行.

select * from srv_my_service where id =2 for update;

說明mysql 此時使用行鎖,

執行下面的語句

select * from srv_my_service for update;

任然阻塞等待

同理,執行如下語句仍然的帶上面的結果

update srv_my_service set srv_no ='323345454523434' where id = 2

update srv_my_service set srv_no ='323345454523434'

update srv_my_service set srv_no ='323345454523434' where id = 1

mysql鎖表測試 mysql 行鎖,表鎖 測試

環境 mysql5.5,引擎innodb,sqlyog 行鎖,表鎖區別 其實就是看where後面的條件是否有有索引,有索引的時候就是行鎖,沒有索引的時候就是表索。先建立表結構 create table lock test id int 11 not null auto increment,name ...

測試乙個杯子

考官從辦公室 面試現場 隨意選取乙個簡單物品,假定是乙個喝水的帶廣告圖案的花紙杯,讓應聘人對它設計出盡可能多的測試用例。測試專案 杯子 需求測試 檢視杯子使用說明書 介面測試 檢視杯子外觀 功能度 用水杯裝水看漏不漏 水能不能被喝到 安全性 杯子有沒有毒或者細菌 可靠性 杯子從不同高度落下的損壞程度...

乙個測試環境

這是一次inte ce遇到的,面試人員找來乙個實際填寫的表單,要在domino中按照這個樣式做個表單,然後能夠融合到它們的開發系統中。做表單不是難事,這裡就不說了。但用面試人員告知的網域名稱test.cn訪問看這個預覽效果卻沒有這個也頁面。很奇怪,用瀏覽器用ip位址訪問預覽效果的時候卻提示輸入使用者...