MYSQL LOCK IN SHARE MODE&FOR UPDATE

SELECT ... LOCK IN SHARE MODE sets a shared mode lock on the rows read. A shared mode lock enables other sessions to read the rows but not to modify them. The rows read are the latest available, so if they belong to another transaction that has not yet committed, the read blocks until that transaction ends.

SELECT ... FOR UPDATE sets an exclusive lock on the rows read. An exclusive lock prevents other sessions from accessing the rows for reading or writing.

时间: 2024-11-05 20:42:13

MYSQL LOCK IN SHARE MODE&FOR UPDATE的相关文章

Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响

select for update/lock in share mode 对事务并发性影响 事务并发性理解 事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transactions per second). 那在数据量和业务操作量一定的情况下,常见的提高事务并发性主要考虑的有哪几点呢? 1.提高服务器的处理能力,让事务的处理时间变短. 这样不仅加快了这个事务的执行时间,也降低了其他等待该事务执行的事务执行时间. 2.尽量将事务涉及到的 sql 操作语句控制在合理范

[MySQL] 行级锁SELECT ... LOCK IN SHARE MODE 和 SELECT ... FOR UPDATE

一.译文 翻译来自官方文档:Locking Reads If you query data and then insert or update related data within the same transaction, the regular SELECT statement does not give enough protection. Other transactions can update or delete the same rows you just queried. In

MySQL 误操作后数据恢复(update,delete忘加where条件)

在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句写的有问题导致服务器出问题,导致资源耗尽.最危险的操作就是在做DML操作的时候忘加where条件,导致全表更新,这是作为运维或者DBA的我们改如何处理呢?下面我分别针对update和delete操作忘加where条件导致全表更新的处理方法. 一. update 忘加where条件误操作恢复数据(binglog格式必须是ROW) 1.创建测试用的数据表 mysql> create table t1 ( -> id int un

The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods install

I. Project Cleanup In the project navigator, select your project Select your target Remove all libPods*.a in  Linked Frameworks and Libraries II. Update CocoaPods Launch Terminal and go to your project directory. Update CocoaPods using the command  p

The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

出现这样的错误: error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. 具体如图: 我按照提示在终端打开工程,pod install 和 pod update 都试了一遍,然并卵.只好拿出杀手锏: Project -> Info -> Configurations -> Debug 改为 Pods.debug, Re

Mysql 原生语句中save or update 的各种写法

Mysql 原生语句中save or update 的各种写法 背景 ??在平常的开发中,经常碰到这种更新数据的场景:先判断某一数据在库表中是否存在,存在则update,不存在则insert. 如果使用Hibernate,它自带saverOrUpdate方法,用起来很方便,但如使用原生sql语句呢? ??新手最常见的写法是,先通过select语句查询记录是否存在,存在则使用update语句更新,不存在则使用insert语句插入. 但是这样做明显不够优雅,存在几个问题: 为了执行一次更新操作,却在

MySQL安装问题:Unable to update security settings解决方案

主要问题还是之前装过,卸载的时候卸载不干净导致的. 如下: 安装到最后出现: Unable to update security settings. Access denied for user 'root'@'localhost' (using password: YES) 这个问题还是在网上找的,引自: http://www.cnblogs.com/IamThat/archive/2013/05/27/3101358.html 解决方法如下: 解决方法: 1, 控制面板卸载MySQL 2,

mysql Lock wait timeout exceeded; try restarting transaction解决

前面已经了解了InnoDB关于在出现锁等待的时候,会根据参数innodb_lock_wait_timeout的配置,判断是否需要进行timeout的操作,本文档介绍在出现锁等待时候的查看及分析处理: 在InnoDB Plugin之前,一般通过show full processlist(很难发现被锁的行记录问题所在)和show engine innodb status命令查看当前的数据库请求,然后再判断当前事务中锁的情况.随着mysql的发展,已经提供更加便捷的方法来监控数据库中的锁等待现象了.

mysql Lock wait timeout exceeded

MySQL 事务没有提交导致 锁等待 Lock wait timeout exceeded java.lang.Exception:### Error updating database.  Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction### The error may involve defaultParameterMap### The error occurred wh