`
xly_971223
  • 浏览: 1276893 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MYSQL select update事务超时

阅读更多
在同一个事物中 select数据后,再去update这条数据报事物超时异常
实际上由于update时一直获取不到事务锁导致的

伪代码如下
Start TX
selectEntity("select * from Entity where id=10");
updateEntity("update Entity set col1=1 where id=10");
Commit TX

在执行updateEntity时会一直等待 直到事物超时

而换用hibernate的写法却没有问题 如下
Start TX
Entity e = hibernateSession.get(entityId);
e.setProp(10);
hibernateSession.save(e);
Commit TX


这是为什么呢?
1
0
分享到:
评论
1 楼 pouyang 2010-12-03  
这个是什么原因?

相关推荐

    Mysql 数据库死锁过程分析(select for update)

    避免这种死锁的一种方法是在设计事务时遵循一定的顺序规则,例如,确保所有事务按照相同的顺序访问和修改数据,或者使用`FOR UPDATE SKIP LOCKED`(Oracle支持,但MySQL不直接支持)来跳过已锁定的行。另外,可以...

    ODBC访问MySQL

    - `OdbcCommand`类用于执行SQL语句,可以是SELECT、INSERT、UPDATE或DELETE等。 - `ExecuteNonQuery()`方法用于执行不返回结果集的SQL语句(如INSERT、UPDATE、DELETE)。 - `ExecuteReader()`方法用于执行返回...

    MySQL中的长事务示例详解

    4. 事务超时机制:设置数据库事务的超时时间,超过一定时间后事务自动回滚,避免长时间的事务挂起。 ### 长事务的示例 在示例中,首先创建了一个名为`stu_tb`的测试表,并插入了数条数据。然后,通过未及时提交事务...

    mysql.zip_mysql驱动

    这包括SELECT、INSERT、UPDATE、DELETE等DML(Data Manipulation Language)语句,以及CREATE、ALTER、DROP等DDL(Data Definition Language)语句。此外,还支持事务处理、预编译的存储过程和批处理。 6. 兼容性与...

    MySQL select、insert、update批量操作语句代码实例

    本篇文章将重点讨论批量`INSERT`、`SELECT`和`UPDATE`语句的代码实例。 1. **批量INSERT插入语句** 在MySQL中,批量插入允许一次性插入多行数据,减少了与数据库交互的次数。以下是一个使用MyBatis框架的示例,它...

    mysql类 一个非常好用的mysql类

    然而,自定义的 MySQL 类通常会提供更高级的功能,比如错误处理、事务支持、预处理语句等,同时保持面向对象的编程风格。 下面我们将详细探讨这个 MySQL 类可能包含的一些核心功能和知识点: 1. **连接管理**:类...

    MySql.Data.dll

    这个库包含了所有必要的组件,使得.NET开发者能够轻松地执行SQL查询、事务处理、数据绑定等功能,从而实现对MySQL数据库的全面操作。 二、安装与引用 在.NET项目中使用MySql.Data.dll,首先需要将其添加为项目的...

    c#连接mysql驱动

    MySqlCommand cmd1 = new MySqlCommand("UPDATE mytable SET column1 = @value1 WHERE id = @id", connection); cmd1.Parameters.AddWithValue("@value1", "newValue"); cmd1.Parameters.AddWithValue("@id", 1);...

    MySQL驱动 mysql-connector-net-6.6.1

    - `SqlCommand`类用于执行SQL命令,可以是SELECT、INSERT、UPDATE、DELETE等。 - `ExecuteReader()`用于获取数据集,返回`SqlDataReader`对象,适合大量数据读取。 - `ExecuteScalar()`返回单个值,通常用于查询...

    MySQL驱动 mysql-connector-net-6.1.6

    2. **SQL命令执行**:使用` MySqlCommand `类执行SQL语句,包括SELECT、INSERT、UPDATE和DELETE等操作。同时,` MySqlCommandBuilder `类能自动生成用于更新数据的SQL命令。 3. **数据适配器和数据集**:` ...

    mysql-connector-java-5.1.47.jar

    2. 执行SQL语句:使用`java.sql.Statement`或`java.sql.PreparedStatement`对象来执行SELECT、INSERT、UPDATE、DELETE等SQL命令。 3. 处理结果集:通过`java.sql.ResultSet`对象遍历查询结果,提取所需数据。 4. ...

    MySql帮助类.zip

    2. 配置优化:根据实际需求调整MySQL的配置参数,如连接超时、缓冲大小等。 3. 安全性:避免明文存储数据库凭证,使用环境变量或配置文件。 4. 日志记录:记录数据库操作日志,便于问题排查。 通过使用MySQL帮助类...

    mysql-connector-python

    3. **SQL查询执行**:通过游标对象,你可以执行各种SQL语句,包括SELECT、INSERT、UPDATE和DELETE等。对于DML(数据操纵语言)语句,MySQL Connector/Python会自动提交事务,而DDL(数据定义语言)语句则会引发隐式...

    mysql-jar包

    5. **事务管理**:JDBC支持事务处理,通过`Connection`对象的`setAutoCommit(false)`禁用自动提交,然后在操作完成后调用`commit()`或`rollback()`来控制事务的提交和回滚。 6. **连接池**:在实际应用中,为了提高...

    MySQL数据库面试宝典1.pdf

    ### MySQL数据库面试宝典...这些知识点涵盖了MySQL数据库的基础知识、数据类型、存储引擎、索引、事务、锁、视图、存储过程与函数等方面的核心概念和技术细节,对于准备MySQL面试的候选人来说是非常有价值的参考资料。

    MYSQL锁表问题的解决方法

    MySQL数据库在处理并发事务时,可能会出现锁表的问题,这通常发生在多个事务同时访问和修改同一数据时。当一个事务尚未完成,其他事务无法进行相关操作,就会导致锁表现象,影响数据库性能和应用的正常运行。本文将...

    MySQL++ v3.1.0教程

    q << "SELECT * FROM users WHERE name = '" << mysql::quote(name) ; ``` ##### 3.6 C++ 和 SQL 数据类型 MySQL++ 提供了类型转换功能,可以在 C++ 数据类型和 SQL 数据类型之间进行转换。例如,从结果集中获取...

    MySQL死锁的产生原因以及解决方案

    8. **资源超时与重试策略**:设置事务超时时间,当事务执行超过预设时间仍未完成,可自动回滚。同时,设计重试机制,当发生死锁时,事务自动回滚并重新尝试。 总之,避免和解决MySQL死锁的关键在于良好的编程习惯,...

    mysql数据库5.6连接包

    4. **SQL语句**:使用MySQL连接包,开发者可以执行各种SQL语句,包括数据查询(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)、事务处理(BEGIN, COMMIT, ROLLBACK)等。 5. **预编译语句**...

Global site tag (gtag.js) - Google Analytics