-
mysql共享锁问题,何时Mysql会隐性的加上Share锁0
我的应用中没有显性的加lock in share mode ,看到的死锁日志却显示是有S锁,不知道何缘故,求解答
LATEST DETECTED DEADLOCK
------------------------
121016 12:27:30
*** (1) TRANSACTION:
TRANSACTION 1F73AC, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 6 lock struct(s), heap size 1024, 5 row lock(s), undo log entries 3
MySQL thread id 6658, OS thread handle 0x4304, query id 194871 localhost 127.0.0.1 root update
insert into dbinstance(dbInstanceIdentifier,userProductId,dbInstanceClass,instanceCreateTime,instanceStatus,engine,engineVersion,dbName,port,autoBackupStartTime,autoBackupEndTime,backupRetentionPeriod,masterUsername,latestRestorableTime,allocStorage,deadTime,masterUserPassword,maintenanceStartTime,maintenanceEndTime,diskType,replicaUserPassword,dbParameters,serviceType,isUpgrade,ddbProductId,snapshotSrc,aggregationItemName,aggregationItemValue,version,sending) values('db1350361619378:myproduct45','myproduct45',2,1350361650050,3,'MySQL','5.5.20','mydb','3306',0,7200,0,'myadmin',0,20,0,null,1440,1439,'share','ozMGkRsoTFeTor3upLqw8uo+ESZDjPq2','\ndbp\n','RDS',0,null,'snap1350361619378:myproduct45',null,null,0,1)
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 0 page no 536 n bits 368 index `dbInstanceIdentifier_Unique` of table `rds`.`dbinstance` trx id 1F73AC lock_mode X locks gap before rec insert intention waiting
Record lock, heap no 274 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
0: len 27; hex 6462313335303336313631393438363a6d7970726f647563743339; asc db1350361619486:myproduct39;;
1: len 8; hex 000000000000c98c; asc ;;
*** (2) TRANSACTION:
TRANSACTION 1F73AA, ACTIVE 0 sec starting index read, thread declared inside InnoDB 500
mysql tables in use 1, locked 1
7 lock struct(s), heap size 1024, 6 row lock(s), undo log entries 3
MySQL thread id 6656, OS thread handle 0x45e8, query id 194872 localhost 127.0.0.1 root Updating
update dbinstance set dbParameters ='\ndbp\n' where dbInstanceIdentifier ='db1350361619486:myproduct39'
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 0 page no 536 n bits 368 index `dbInstanceIdentifier_Unique` of table `rds`.`dbinstance` trx id 1F73AA lock mode S
Record lock, heap no 274 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
0: len 27; hex 6462313335303336313631393438363a6d7970726f647563743339; asc db1350361619486:myproduct39;;
1: len 8; hex 000000000000c98c; asc ;;
Record lock, heap no 276 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
0: len 26; hex 6462313335303336313631393637313a6d7970726f6475637438; asc db1350361619671:myproduct8;;
1: len 8; hex 000000000000c98e; asc ;;
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 0 page no 536 n bits 368 index `dbInstanceIdentifier_Unique` of table `rds`.`dbinstance` trx id 1F73AA lock_mode X waiting
Record lock, heap no 274 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
0: len 27; hex 6462313335303336313631393438363a6d7970726f647563743339; asc db1350361619486:myproduct39;;
1: len 8; hex 000000000000c98c; asc ;;
*** WE ROLL BACK TRANSACTION (1)
------------
TRANSACTIONS
------------
Trx id counter 1F894B2012年10月28日 13:23
目前还没有答案
相关推荐
LOCK IN SHARE MODE语句分别用于获取独占锁和共享锁。前者在查询结束后会自动释放锁,通常在事务中使用,以保证在读取数据后,直到事务结束前,数据不会被其他事务修改。后者则允许多个事务同时读取同一行,但不...
如果查询条件未指定主键或者无法唯一确定一行,如使用`<>`或`LIKE`操作符,MySQL可能会退化为表级锁,锁定整个表。例如: ```sql SELECT * FROM products WHERE id<>'3' FOR UPDATE; SELECT * FROM products WHERE ...
此外,InnoDB 存储引擎还支持意图锁,意图锁是表级锁,表明事务在后期会对该表的行施加共享锁或者排他锁。意图锁分为共享意图锁(IS)和排他意图锁(IX)。 锁之间的相互关系: 锁之间的相互关系是非常复杂的。例如...
MySQL的锁机制是数据库管理系统中用于控制并发操作的...理解MySQL的锁机制对于优化数据库性能、解决并发问题和确保数据一致性至关重要。通过深入学习和实践,我们可以更好地管理和维护MySQL数据库,提高系统整体效率。
MySQL的表锁分为表共享读锁(TableReadLock)和表独占写锁(TableWriteLock)。表锁的特点是实现简单,开销小,加锁速度快,但在高并发环境下容易发生锁竞争,导致并发性能下降。MyISAM存储引擎偏向于使用表锁,尤其...
在解决MySQL锁问题时,需要注意选择合适的事务隔离级别,因为不同级别的隔离,锁的使用情况也不同。此外,合理设计数据库表结构、索引、查询语句等,都有助于减少锁争用,提高性能。 页面锁是BDB存储引擎所采用的一...
MySQL数据库在处理并发事务时,可能会出现锁表的问题,这通常发生在多个事务同时访问和修改同一数据时。当一个事务尚未完成,其他事务无法进行相关操作,就会导致锁表现象,影响数据库性能和应用的正常运行。本文将...
- **表级锁(Table Lock)**:如果SQL语句没有明确指定主键或唯一索引,MySQL可能会执行表级锁,即锁定整个数据表。 **示例**: ```sql -- 行级锁示例 SELECT * FROM t_goods WHERE id = 1 FOR UPDATE; -- 表级锁...
LOCK IN SHARE MODE`语句会获取共享锁。 4. 排它锁:排它锁也称为写锁,允许用户读取和修改一行数据,但阻止其他用户对该行的读写操作。在SQL语句中,`SELECT ... FOR UPDATE`语句会获取排它锁。 5. 间隙锁:间隙...
MySQL的锁机制是数据库管理系统中用于控制并发操作的重要机制,对于多用户环境下的数据一致性、事务隔离性和系统性能有着至关重要的影响。本文将深入探讨MySQL的高级锁机制,包括表锁和行锁,并提供一些优化建议。 ...
系统介绍mysql锁机制
### MySQL读写锁知识点详解 #### 一、读写锁概念与特征 在数据库系统中,锁机制是一种非常重要的并发控制手段,它主要用于确保多用户同时访问数据时的一致性和完整性。MySQL作为一款广泛使用的开源关系型数据库...
在MySQL的InnoDB存储引擎中,插入操作不仅涉及到行级锁,还可能涉及Gap锁和Next-Key Locks,这些锁机制的设计是为了防止幻读(Phantom Read)和其他并发问题。 1. 数据库版本:文中提到的是MySQL 5.6.27。不同版本...
- MySQL 的共享锁和排他锁就是悲观锁的实现。 2. 乐观锁: - 假设不会发生冲突,只有在更新数据时检查是否被其他事务修改。 - 通常通过版本号或时间戳实现,MySQL 中没有内置的乐观锁,但可以在应用层面实现。 ...
"Mysql(MyISAM)的读写互斥锁问题的解决方法" 在Mysql(MyISAM)中,读写互斥锁问题是常见的性能瓶颈之一。为了解决这个问题,需要了解MyISAM的读写机制和锁机制。MyISAM在读操作占主导的情况下是很高效的,但是一旦...
- 表级锁是一种粒度较大的锁,它锁定的是整个表,分为读锁(共享锁)和写锁(排他锁)。 - 读锁(`SELECT ... LOCK IN SHARE MODE`)允许多个事务同时读取同一张表,但不允许写入。 - 写锁(`SELECT ... FOR ...