mysql锁

在做大型并发的业务的时候,mysql的锁对整个程序的正确运行和高效运行都有很重要的作用。这次研究的mysql的锁的机制,现将代码记录下参考(线程一的执行序号对应线程二的执行序号):

线程一的几个操作

-- 【1】
-- 加表级别的写锁
-- LOCK TABLES tb_volunteer write;
-- UNLOCK TABLES; -- 最后在执行

-- 【2】
-- 事务中的锁【更新】
set autocommit  = 0;
begin;
update tb_volunteer set nation='回族' where user_id = 75;
commit; -- 最后执行

-- 【3】
-- 事务中的排他锁【查询】
set autocommit = 0;
begin work;
select * from tb_volunteer where user_id = 75 for update; -- 仅自己更新,其他可以查询,更新阻塞
commit work;

-- 【4】
-- 事务中的共享锁
set autocommit = 0;
begin;
SELECT * from tb_volunteer where user_id = 75 LOCK IN SHARE MODE; -- 仅多人查询,谁都不能更新
commit;

-- 聚合中的锁【5】
-- 实际上是一个表锁了
set autocommit =0;
begin;
select max(code) from tb_volunteer where age_group = 1 for update ;
update tb_volunteer set nation='壮族' where user_id = 75;
commit;

-- 【6】
-- 行锁在非索引字段时候可否
-- 即使条件字段不是索引字段,也可以上锁
set autocommit=0;
begin;
select * from tb_volunteer where id = 215 for update;
commit;

-- 【7】
-- 查询时候不加特殊条件是否阻塞
set autocommit = 0;
begin;
select * from tb_volunteer where id = 211;
commit; -- 最后执行




线程二对应(序号)的几个操作

-- 【1】
-- 若不解表锁一直阻塞
select * from tb_volunteer;

-- 【2】
-- 不commit提交事务不同线程阻塞,commit后其他线程可继续
update tb_volunteer set nation='壮族' where user_id = 25;

-- 【3】
-- 不commit提交事务他人阻塞,同线程可改,commit后其他线程继续
update tb_volunteer set nation='维吾尔族' where user_id = 75;

-- 【4】
-- 再次尝试了下,感觉和for update差别不大,别人线程都是只能读,不能写,自己线程能读能写
select * from tb_volunteer where user_id = 75; -- 【可直接执行】
update tb_volunteer set nation='彝族' where user_id = 75; -- 【commit之后才能执行】

-- 【5】
-- 聚合上锁研究
select * from tb_volunteer where age_group = 1
update tb_volunteer set nation='汉族' where user_id >75 and age_group = 2 ;

-- 【6】
-- 行锁在非索引字段时候可否【6】:可
update tb_volunteer set nation='藏族' where id = 215;

-- 【7】
-- 查询时候即使没有commit,也能更新
update tb_volunteer set nation = '壮族' where id = 211
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343