问题标签 [rowlocking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
156 浏览

java - 如何解决 MySQL 锁定超时错误?

我的应用程序日志中多次出现以下列出的错误。

我知道当一个线程锁定了表的特定行并且第二个线程正在等待它并且这个等待时间超过一定时间时,可能会发生此错误。

但是如何优化 MySQL 配置或我的代码来克服这种情况呢?

我已经阅读了这篇关于隔离级别的文章,并且我已经将隔离级别设置为READ COMMITTED.

有没有我提到的专家建议/解决方案?

0 投票
1 回答
630 浏览

mysql - MySQL InnoDB 是否使用 READ_COMMITTED 隔离级别锁定多行?

我在解决LOCK WAIT TIMEOUT EXCEEDMySQL InnoDB 错误时遇到了麻烦。

我已经阅读了这篇文章,它说如果我们使用隔离级别READ_COMMITTED,那么我的更新查询应该只锁定那些匹配WHERE条件的行,但这对我不起作用,因为我正在54为该查询获取行锁。

结果SHOW ENGINE INNODB STATUS;如下。

为什么我的更新查询条件仅匹配一行并且我使用隔离级别时锁定了54行?READ_COMMITED

0 投票
1 回答
1212 浏览

database - 带有模型的 phalcon 行锁定

由于 forUpdate 仍然不起作用(https://github.com/phalcon/cphalcon/issues/2407),锁定数据库中选择的行的最佳方法是什么?

我有一个包含要处理的项目的 innodb 表。我通过 cronjob 开始一些任务,这些任务负责处理要处理的项目(status=open),更新行,status=processing然后做一些事情。我怎样才能保护之间的时间

?

0 投票
0 回答
884 浏览

sql-server - 避免 SQL Server 中脏读的最佳方法

我在其他帖子中发现,在 SQL Server 中,一次读取不能被另一次读取锁定。所以我做如下

有没有其他有效的方法???

更新

我只是在 DUMMYCOLUMN 上进行这些更新,以便在当前事务提交之前没有其他事务可以读取 ACCOUNT 'XXXXXXXXX' 的余额。我的目的是读取帐户“XXXXXXXXX”的余额,进行一些验证并更新余额。如果我省略了第一次更新,那么在我的事务期间另一个事务将读取 BALANCE。我通过 UPDATE 锁定行来防止这种情况,并且想知道是否有其他方法可以在不更新该行的情况下锁定该行?

0 投票
2 回答
541 浏览

c# - Lock a row for a while in one transaction and release lock in other transaction

It is a .Net application which works with an external device. When some entity (corresponds to the row in a table) wants to communicate with device, the corresponding row in the SQL Server table should be locked until the device return a result or SQL Server times out.

I need to:

  • lock a specific row in a table so that row could be read, but could not be deleted or updated.
  • locking mechanism should run in a separate thread so that application's main thread works as usual
  • lock should be released if a response has made
  • lock should be released after a while if no response is received

What is the best practice?

Is there any standardize way to accomplish this?

Should I:

  • run a new thread (task) in my C# code and begin a serializable transaction, select desired row transactionally and wait to either time is up or cancellation token is received?

  • or use some combination of sp_getapplock and ...etc?

0 投票
3 回答
3211 浏览

sql - SQL Server 中的并发执行

表架构 (SQL Server 2012)

我正在做一个更新。更新存在的行并插入其他行。

一切正常。并发执行期间出现问题。我#tempInterestCalc通过加入其他各种表来插入数据,包括与表的左连接,并且为每个并发执行InterestBuffer插入不同的数据集。#tempInterestCalc

我的问题是,有时执行会被另一个执行锁定,直到我串行提交它们。

我的问题是,当我提供不同的数据集时,它不应该对其他并发操作产生任何行锁影响。任何建议将不胜感激。

更新 1:我已用于SP_LOCKInterestBuffer 表。它说IndId = 1, Type = KEY, Mode = X, Status = GRANT

我认为更新和插入会阻止其他事务以进行幻读。

更新2:对不起!以前我告诉过更新很好。但现在我意识到第一个事务写入阻塞了第二个事务写入。在第一个事务中,我运行更新并插入。在第二个事务中,在#tempInterestCalc 表中插入数据后,我只需执行以下操作,它就可以正常工作。

更新3:我认为我的问题是在更新期间从InterestBuffer 读取数据并插入到InterestBuffer 中。

更新 4:如果我REBUILD INDEX在 InterestBuffer 表中的 BranchCode 有时我的回答是有效的。批量插入/更新是否有任何原因导致索引出现问题???

更新 5:我已经读过,如果需要锁定页面的最大行以进行批量更新,那么 SQL 服务器可能会锁定该页面。有什么方法可以查看哪个页面包含哪一行,或者哪个页面在执行期间将被锁定和释放?

更新 6:我正在提供我的方案。

查询分支 0001:

对于 Branch 0002、0003,只需将 @BranchCode 变量值更改为 0002 &0003 并同时运行它们。 分行一

分支二

三分店

0 投票
2 回答
12505 浏览

mysql - Mysql中的行级锁定

我在一个表中有 5 行(1 到 5)。我希望第 2 行锁定一些更新,同时如果有人试图更新第 4 行,那么他应该能够更新。

我正在用下面的代码尝试这个,但我觉得它把锁放在表级别而不是行级别。

------ 会话 1

----- 会话 2(被阻止)

0 投票
1 回答
40 浏览

sql-server-2012 - 如何正确地将这两个查询合并为一个更新?

这目前有效,但我想更改更新语句以包括其下方的插入操作,这可能吗?

0 投票
2 回答
741 浏览

php - Oracle 脏读

我是使用 Oracle 数据库 11g 的新手。

我正在使用 SQL Developer 测试表和行锁。

我的表中有这样的一行:

  • 编号:1
  • 描述:'abc'

我进行了更新而没有提交将字段更改desc'zxc'. 在另一个会话中,我做了一个返回旧记录的选择:

  • 编号:1
  • 描述:'abc'

我在想它会给我一个错误或其他东西,因为我不想看到旧数据。

最后,当我在另一个会话中提交时,我在第二个会话中再次执行了查询并返回了提交的数据。

如何防止读取旧数据?

更新:

我阅读了有关 sql“SELECT FOR UPDATE”的信息,它阻止获取未提交的行,但例如有人告诉我有关银行的信息,所以我不确定这种方法是否具有良好的性能,其他问题是关于没有提交的连接丢失. 也许我需要使用函数或 PLSQL 来最小化丢失的连接,实际上我正在使用 PHP 脚本(Laravel 框架)。

提前致谢。

0 投票
1 回答
782 浏览

mysql - Innodb 更新主键和二级索引的锁定顺序

当我研究由两个更新查询引起的死锁时。有一点,我无法理解。1. 行锁设置的顺序?2. update 执行时,Primary 和 Secondary Index 的 lock 设置顺序?3. SHOW INNODB STATUS show WAITING x lock structs,是同时需要,还是在其他授权后需要?4. 如果一个锁结构想要锁定一些行,这个过程是原子的吗?

这是我的僵局: 表:

更新查询 1:

更新查询 2:

DB ExampleRows 中的一些行

场景关键:

  1. 根据 nu_key 索引更新
  2. 两个查询更新不同的行但两行具有相同的 nu_key 索引
  3. TRX1 LOCK WAIT 5 锁结构?是否所有锁都需要添加到锁图中
  4. TRX2 HOLDS PrimaryKey,并等待锁定 nu_key 索引。但是根据我所知道的首先设置索引锁,锁需要不是原子的吗?
  5. 隔离等级:RR

死锁显示 INNODB 状态