网站最近并发访问量增多,log常一旦抛出以下异常:
Caused by: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction
org.springframework.dao.CannotAcquireLockException: Hibernate flushing: Could not execute JDBC batch update; SQL [update fb_session_keys set hh_session_key=?, last_update=?, live_forever=?, session_key=?, uid=? where id=?]; Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction
fb_session_keys這個表在高并發時被鎖住了,見鬼!
查entity時發現沒有設定數據庫鎖,orm使用的是jpa annotation
得使用樂觀鎖來搞定:
private Integer version=Integer.valueOf(0); //乐观锁版本控制
@Version
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
收工!!!
分享到:
相关推荐
《鲁棒数据库持久层设计》是一本深入探讨数据库访问类库设计的重要文献,它为ORM(对象关系映射)工具的开发提供了宝贵的指导。张笑猛的翻译版本使得这一技术资源更加亲民,便于广大开发者理解和应用。在本书中,...
持久层设计依据不同的应用场景和需求,可以分为多种类型,包括但不限于关系型数据库持久层、NoSQL数据库持久层、内存数据库持久层等。每种类型都有其特定的优势和适用场景,如关系型数据库持久层适用于需要事务处理...
- 充当持久层的中心控制器,负责协调所有的持久化操作。 - 提供缓存机制,减少不必要的数据库访问次数。 7. **PersistenceMechanism类层次** - 包含具体的持久化实现细节,例如JDBC、Hibernate等。 - 支持插件...
- **持久性(Durability)**:一旦事务提交,其对数据库的更改就是永久的。 为了保证事务的一致性和隔离性,需要采用适当的并发控制策略。 #### 三、加锁机制 加锁机制是并发控制中最常用的方法之一。加锁可以...
- **关系型数据库**:这是最常见的一种持久层形式,通过SQL查询来访问和更新数据。 - **NoSQL数据库**:这类数据库通常用于非结构化或半结构化数据的存储,如文档数据库、键值存储等。 - **对象关系映射(ORM)**:...
数据库锁机制是数据库管理系统中用于控制并发操作的重要概念,它确保了多个用户或事务在访问数据库时的数据一致性。本教程将深入探讨DB数据库的锁机制及其常见问题。 首先,锁可以应用于不同层次的对象,包括数据库...
在持久层操作中,我们常常需要处理数据异常,例如JPA的OptimisticLockingFailureException(乐观锁失败)和MyBatis的DataIntegrityViolationException(数据完整性约束违反)。同时,使用`@Validated`或`javax....
6. **并发控制与事务处理**:深入理解锁机制、乐观锁与悲观锁、MVCC(多版本并发控制)以及事务的ACID属性(原子性、一致性、隔离性和持久性)。 7. **安全性与权限管理**:涵盖用户管理、角色分配、权限控制和审计...
在Web应用开发中,数据持久层是至关重要的组成部分,它负责在应用程序和数据库之间进行数据交互,确保数据的持久化存储。数据持久层的设计需要兼顾效率和安全性,以保护企业的重要数据资源。以下是对给定内容的详细...
4. 并发控制:在数据库操作中,多线程环境下可能会出现竞态条件和死锁等问题,需要通过事务隔离级别、死锁检测算法等手段进行并发控制。 结合以上知识,"mysqlProcess"这个文件名可能包含与MySQL数据库的进程管理...
数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件,提供了控制、查询、定义和操纵四个主要功能。DBMS 的主要功能包括控制、查询、定义和操纵四个方面: * 控制(DCL):提供权限机制,控制用户对...
ACID属性(原子性、一致性、隔离性和持久性)是事务的基本要求,而锁机制、多版本并发控制(MVCC)或乐观锁则是常见的并发控制策略。 最后,文档可能会讨论数据库的备份与恢复策略,这对于数据保护和灾难恢复至关...
数据库锁与操作系统级别的Latch不同,数据库锁基于会话级别的数据结构,而Latch则是操作系统层面的同步原语。锁有多种类型,如记录级、表级和表空间级,分别用于不同粒度的数据保护。锁的特点包括互斥(用于写操作)...
这里会讨论ACID(原子性、一致性、隔离性和持久性)属性,以及并发控制技术,如锁定、多版本并发控制(MVCC)和乐观锁。这些机制确保了在多个用户同时访问数据库时,数据的正确性不受影响。 第五章可能会讲述数据库...
数据库系统通常分为几个层次,如物理层、逻辑层和视图层,物理独立性指的是数据库的逻辑结构变化不会影响到应用程序,而逻辑独立性则意味着数据的物理存储方式改变不会影响逻辑结构。这种分离使得数据库管理员可以...
6. **数据库事务和并发控制**:理解ACID(原子性、一致性、隔离性和持久性)属性,熟悉事务的提交、回滚和恢复。掌握不同的并发控制机制,如锁定、多版本并发控制(MVCC)和乐观锁。 7. **数据库备份与恢复**:了解...
事务(ACID属性:原子性、一致性、隔离性和持久性)和锁机制是并发控制的关键方法。 8. **备份与恢复**:备份策略如完整备份、增量备份和差异备份,以及恢复技术如简单恢复、完全恢复和多版本恢复。 9. **数据库...
Oracle数据库也提供了类似的并发控制机制,包括行级锁和表级锁。但是Oracle的实现方式有所不同: - **Oracle的锁机制**:Oracle使用多种锁类型,如Row Lock、Table Lock、Schema Object Lock等,以支持不同层次的...