千家信息网

MySql类型转换导致行锁升级为表锁的示例

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下MySql类型转换导致行锁升级为表锁的示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在MySql的写语句中,给表列赋值与表类型不符合时,MySql底层的优化器发
千家信息网最后更新 2026年11月01日MySql类型转换导致行锁升级为表锁的示例

小编给大家分享一下MySql类型转换导致行锁升级为表锁的示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

在MySql的写语句中,给表列赋值与表类型不符合时,MySql底层的优化器发挥作用,会做一个强制类型转化,此时能正常操作,但会导致行锁升级为表锁。示例如下

以student表为例,表字段类型:
表内容如下:

打开两个session会话窗口,并把两个会话窗口中的MySql的自动提交模式改为手动提交

>set autocommit=false;

在会话窗口1中执行更新语句,但不提交事务。age列在建表时指定的是int类型,此地更新语句中用字符串'100'进行赋值,在MySql的优化器中会自动把字符串'100'强制转化为整形100,然后再执行SQL检索。

>update student set class=3 where age='100'

然后再会话窗口2中对另外没关系的数据执行更新操作

>update student set age=28 where name='lzj';

正常情况下,两条SQL语句操作的行数据不同,执行起来会互不影响,但实际会话1中的更新操作阻塞了会话2中的更新操作
会话1中执行了更新操作,但没有执行事务提交,事务的隔离级别为Read Committed,所以在会话2中还看不到会话1中更新后的结果。但在回话2中执行对其它行数据更新操作时,出现了阻塞。可见会话1中的SQL语句的赋值出现了强转,导致会话1由行锁升级为表锁,锁住了整个student表,因而会话2中的SQL阻塞。下面对会话1中的更新操作执行事务提交,那么会话2中的更新操作就会继续执行了
对会话1中的更新操作执行commit手动提交事务后,会话1释放掉student的表锁,会话2中的更新操作可以继续执行。
最后对会话2中的更新也执行commit事务提交,两条SQL都更新完毕,student表内容如下:

从上述案例观知,SQL语句赋值与表列类型不匹配时,MySql的优化器强制转化为匹配的类型,导致行锁升级为表锁。所以开发中一定要注意类型的匹配,避免行锁升级为表锁,影响并发性能。

看完了这篇文章,相信你对"MySql类型转换导致行锁升级为表锁的示例"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

更新 类型 升级 事务 语句 示例 数据 强制 阻塞 两个 内容 字符 字符串 手动 篇文章 影响 不同 没关系 中用 作用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 互联网科技的 壕鑫互联网络科技 狮子座互联网科技培训 四川狮子座互联网科技 农村开互联网科技讲堂 须眉科技是互联网公司吗 互联网科技热点资讯 北京华百购互联网科技有限公司 重庆互联网医院沙龙医盟信息科技 注册互联网科技公司经营范围大全 四川慕妮娅互联网科技有限公司 南博望互联网科技有限公司 山东有哪些互联网科技公司 梅州GM互联网络科技有限公司 富国互联网金融科技混合基金 工业互联网科技成果转化 北京瑞云互联网科技有限公司 广州全民伙伴互联网科技有限公司 小牛互联网科技有限公司地址 互联网科技官网 互联网品科技 朗涯互联网科技 华夏恒生互联网科技013171 华夏恒生科技与互联网科技 玉溪新华互联网科技好不好 半导体是互联网高科技吗 互联网科技接地气 中国新注册互联网科技 中国互联网公司的科技投入
0