Mysql的锁(S锁和X锁的区别)
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,共享锁和排它锁Mysql的锁系统:shared lock 和 exclusive lock (共享锁和排它锁,也叫读锁和写锁,即read lock和write lock)读锁是共享的,或者说是相互不阻
千家信息网最后更新 2026年10月31日Mysql的锁(S锁和X锁的区别)
共享锁和排它锁
Mysql的锁系统:shared lock 和 exclusive lock (共享锁和排它锁,也叫读锁和写锁,即read lock和write lock)
读锁是共享的,或者说是相互不阻塞的
写锁是排他的,一个写锁会阻塞其他的写锁和读锁
在实际的数据库系统中,每时每刻都发生锁定,当某个用户在修改某部分数据1时,mysql会通过1锁定阻止其他用户对统一数据的读取。
共享锁【S锁】
又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
排他锁【X锁】
又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。
这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
排他锁用法:for update,比如,select name from table where id=1 for update;
锁的粒度和锁的策略
MySQL有三种锁的级别:页级、表级、行级。
MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
MySQL这3种锁的特性可大致归纳如下:
- 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
- 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
- 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
事务
数据
粒度
开销
引擎
死锁
存储
支持
最低
最高
之间
又称
对象
概率
用户
系统
页面
保证
冲突
阻塞
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手磨咖啡
盈实互联网科技
智能科技公司是互联网公司吗
与互联网科技公司
广州互联网科技公司
碳银互联网科技
金融科技和互联网金融
济南和联互联网科技有限公司
须眉科技是互联网公司吗
上海宁丞科技互联网
电子科技大学互联网创业大赛
明优互联网科技有限公司
山东有哪些互联网科技公司
21世纪互联网科技成就
济南小医互联网科技有限公司招聘
互联网科技平台产品运营
中国互联网公司的科技投入
求路客互联网科技电话
三亚科技创新互联网基地
山东蛋芒互联网科技有限公司
山东特亿宝互联网科技有限公司
中国互联网科技发展
迪茉互联网科技
互联网科技论文
致聘互联网科技
厦门千工互联网科技有限公司
互联网科技圈年度人物
南通创西澳互联网科技有限公司
科技互联网经济论坛
杭州融税互联网科技有限公司