我有一个带有2个客户端的客户端 - 服务器应用程序:
当多个客户端正在读取数据库时,我需要使数据库的读取更有效率,而不是所有客户端都获得相同的行。我对表使用InnoDB引擎,我执行SELECT...FOR UPDATE
之类的查询而不使用SHARED MODE
我需要解释过程在以下情况下的行为:
SELECT ...FOR UPDATE
。假设这些行被锁定。SELECT ..FOR UPDATE
。当我测试这个场景时,我得到了客户端B也获得了15行客户端A.为什么会这样?我设置setAutoCommit(false)
并且从不进行COMMIT
或ROLLBACK
查询,因此连接永不提交并且锁定(例如,客户端A已经设置),永远不会被释放。
有人能指出我正确的方向吗?我做错了什么?
答案 0 :(得分:1)
我很困惑,你试图锁定15行吗?如果你是,你就错过了:
START TRANSACTION
以下是交易文档的链接:
http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-transactions.html