问题标签 [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 投票
1 回答
3627 浏览

sql-server - 行锁和锁升级

我正在尝试使用 rowlock 来防止某些行在运行时被更新,但问题是我在运行时根本无法使用这些表:

当这个事务正在运行时,我为两个表运行了一个插入操作,他们都在等待它提交。我应该怎么做才能锁定某些行以进行读取和删除但保持表可用?

对于记录,选择结果数以万计的记录。这些表具有聚集的主键,并且状态列具有索引。

0 投票
2 回答
100 浏览

sql-server - 表中不同键的相同数据需要大量时间

我有一张桌子...

这意味着......对于因子 ID 1,我有 1500 条记录......而因子 ID 2 我有相同数量的记录。

对于因子 ID 1 和 2,除“因子值”外,每个值都相同。

当我将上面的表与其他一些表连接以获取数据时...... FactorID 1 给了我快速的结果......但是当我查询“2”......执行永远不会结束。

这对我来说似乎很奇怪。它与行锁有关吗?请帮我。

0 投票
1 回答
3594 浏览

sql - MS-SQL Server 选择行,锁定行。独特的回报

我正在通过下面的存储过程从数据库中随机选择可用的登录信息。但是当多个线程想要获取可用的登录信息时,虽然我正在更新记录的时间戳字段,但会返回重复的记录。

如何锁定此处的行,以使返回一次的记录不再返回?

推杆

WITH (HOLDLOCK, ROWLOCK)

没有帮助!

…………


0 投票
4 回答
15531 浏览

mysql - SELECT ... ORDER BY xxx LIMIT 1 FOR UPDATE 将锁定多少行?

我有一个具有以下结构的查询:

这是对 InnoDB 表的单表 SELECT 语句。字段position(INT NOT NULL) 上有一个索引。status 是 ENUM 并且也被索引。

SELECT ... FOR UPDATE手册页说,它锁定了它读取的所有行。我是否理解正确,在这种情况下只有一行会被锁定?或者更确切地说,它会锁定整个表?

是否可以确定哪些行将被EXPLAIN查询锁定?如果是 - 如何?对空表的查询的解释显示如下:

0 投票
1 回答
1640 浏览

mysql - 两个索引列上的 SELECT FOR UPDATE 和 WHERE 条件 - 什么是锁定策略?

这个问题是这个问题的逻辑延续:

SELECT ... ORDER BY xxx LIMIT 1 FOR UPDATE 将锁定多少行?

假设我有这样的选择:

id 是主键,状态是索引。

在这种情况下,MySQL 锁定策略是什么?

  1. 锁定仅匹配两个条件的行
  2. 锁定所有符合第一个条件的行 + 分别锁定所有符合第二个条件的行
  3. 锁定整个表

我认为最合乎逻辑的是2。但是......我不确定。你能详细说明吗?

0 投票
2 回答
10806 浏览

mysql - MySQL 何时在更新 InnoDB 表时锁定一行?

如果我有这个多重更新查询

假设 user 表中的第 10 行已经有名称“same_name_i_already_had”,所以它不应该被更新。

另一方面,user_profile 表中的行有不同的年龄,所以 MySQL 应该更新它。

假设MySQL作为 RDBMS 和InnoDB,其行级锁定系统作为两个表的引擎,

尽管不必更新该行的 name 字段,MySQL 是否会锁定用户表中的行?

0 投票
1 回答
1247 浏览

mysql - MySQL事务与锁定

此处需要快速提问/澄清。我有一个数据库表,很可能同时更新记录。我正在为应用程序使用 Zend Framework,并且我已经阅读了避免这种情况的两个方向,首先是表锁定(LOCK TABLES test WRITE)或类似的东西,将返回并重新阅读如何做到这一点,如果这是最好的解决方案。第二个是事务: $db->beginTransaction(); ... $db->commit();

现在“假设”我正在使用诸如 InnoDB 之类的事务存储引擎,事务似乎是更常见的解决方案。但是,这是否避免了以下情况:

用户 A 在网页上 -> 提交数据 -> 开始事务 -> 读取行 -> 计算新值 -> 更新行 -> 保存 -> 提交

用户 B 同时在同一个网页上并同时提交数据,现在可以说它几乎是同时的(用户 B 在开始事务和提交用户 A 的事务之间调用更新函数)用户 B 依赖在用户 A 的事务提交的数据上,才能实现更新记录的准确计算。

IE:

数据库行中的打开值:5 用户A提交值5。(开始事务->读取值(5)->添加提交的值(5+5=10)->写入更新的值->保存->提交)

用户 B 提交的值是 7。我需要确保用户 B 的事务读取的值是 10,而不是 5(如果在读取之前没有完成更新)。

我知道这是一个冗长的解释,我很抱歉,我不确定简化问题的正确术语。

谢谢

0 投票
3 回答
1853 浏览

sql-server-2008 - 在 SQL Server Management Studio 2008 中编辑数据行时是否被锁定?

当我在 SQL Server Management Studio 中右键单击表并选择“编辑前 200 行”时,我正在查看的数据会在什么时候被锁定?

我的一位同事表示,以这种方式查看数据时,可以锁定数据行(我想当他说如果您将光标放在一行上并开始编辑数据时)。

这是唯一一次可以在这种情况下锁定数据吗?

0 投票
2 回答
817 浏览

unit-testing - 单元测试 PostgreSQL 行级锁

我目前正在使用 pgTap 将单元测试添加到相当大量的 PostgreSQL 存储过程中。

一些过程执行显式锁定行的操作。这些锁对应用程序至关重要。

如何编写测试来检查需要锁定的行是否已锁定,以及不应锁定的行是否已锁定?

我目前唯一的“线索”是 pgrowlocks 扩展,它允许事务检查被另一个事务锁定的行。但是,当前事务似乎没有看到它自己的锁,所以我不得不使用一些东西来同步两个事务,除非我完全弄错了,否则使用 pgTap 没有办法做到这一点。

(注意:使用 PostgreSQL 9.1)

0 投票
1 回答
1073 浏览

sql-server - 在这个 SP 中我需要 UPDLOCK 提示吗?多次读取数据队列行

我的数据库架构是 Job -> (Many) JobData -> (Many) Results。一个 Job 被分成多个 JobData 行,以便多个线程可以处理 Job 的“块”(每个 JobData 行)。然后,处理线程为其处理的每个 JobData 行插入 Result 行。

单个线程尝试循环读取结果,直到读取所有结果。 请注意,同时线程仍然可以处理 JobData 行(直到所有行都被处理)并插入结果。 因此,在循环中,对这个 SP 的每次调用都会传入一个 JobKey……但不知何故,使用此代码会多次读取结果(频率非常低……即每 8000 行结果 < 3 行),但只能随机重现。

我在关于 UPDLOCK 的 UPDATE TOP 语句旁边的代码中添加了以下注释。提前致谢。

编辑:只是想根据@gbn 回答将我现在所拥有的内容放在适当的位置。排除整个 SP,但 UPDATE 语句现在的格式如下:

现在已经成功运行了几天,所以希望我解决了问题。如果这看起来不像正确使用表格提示,请随时告诉我。