当前位置:网站首页>select......for update 语句的功能是什么? 会锁表还是锁行?
select......for update 语句的功能是什么? 会锁表还是锁行?
2022-08-03 17:41:00 【一天不写程序难受】
目录
1 语句意思
在项目代码里,看到
select * from xxl_job_lock where lock_name = 'schedule_lock' for update
以上的代码的意思是什么
select查询语句是不会加锁的,但是select …for update除了有查询的作用外,还会加锁呢,而且它是悲观锁。
那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。
没用索引/主键的话就是表锁,否则就是是行锁。
2 思路
新建一个表,我们使用xxl-job 里面的表
他的这个表,这个字段是主键
我们首先是关闭自动提交 需要关闭自动提交,通过set @@autocommit=0; 设置为手动提交。0代表手动提交,1代表自动提交。 必须先关闭,不然语句一执行,就提交了,我们看不出我们要的结果
关闭之后,执行语句
select * from xxl_job_lock where lock_name = 'schedule_lock' for update
以上查询语句的意思是,不仅仅要查询,还要对这个sql语句进行加锁;一加锁之后,其他的线程要操作这个表,就被卡住了,要等到这个sql语句执行完成,其他线程对这个表的操作,才会执行,不然一直等,这样就实现了排它锁
我们就可以使用采用 select for update ,是排它锁。说白了 xxl-job 用一张数据库表来当分布式锁了,确保多个 xxl-job admin 节点下,依旧只能同时执行一个调度线程任务
多线程下,对同一个数据库操作,我们就可以在这个数据库
单独创建一个表,这个表当做分布式锁就可以了
边栏推荐
- 383. Ransom Note
- 如何直击固定资产管理的难题?
- 2022爱分析· 银行数字化厂商全景报告
- websocket Handshake failed due to invalid Upgrade header
- 论文解读(JKnet)《Representation Learning on Graphs with Jumping Knowledge Networks》
- 六、用户身份认证
- Dataworks中PyOdps里面pandas.read_sql()支持Odps吗?
- 什么是鉴权?一篇文章带你了解postman的多种方式
- 数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动
- 云图说丨初识华为云微服务引擎CSE
猜你喜欢
随机推荐
Crack: WebKitX ActiveX and WebKitX VHX
【技术白皮书】第一章:OCR智能文字识别新发展——深度学习的文本信息抽取
高效的组织信息共享知识库是一种宝贵的资源
ICDAR比赛技术分享
PTA递归练习
【用户运营】用这4个最佳客户服务策略,减少客户流失率
How to install and start VNC remote desktop service on cloud GPU?
383. Ransom Note
沃尔沃:这是会“种草”的“安全感”!
DataWorks 标准版怎样实现SQL代码的复用?
vant自动上传图片/文件
JVS低代码移动端接入方案
Win11系统的显卡驱动安装的详细方法步骤
【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十一)
论文解读(JKnet)《Representation Learning on Graphs with Jumping Knowledge Networks》
【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
401. Binary Watch
es6新增-Generator(异步编程的解决方案2)
IP属地如何高效率识别
three.js简介