问题标签 [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 回答
173 浏览

postgresql - Postgres 中的默认事务行级别和/或 Sequelize.js 中默认使用的 LOCK 是什么

PostgreSQL 中使用的默认行级锁定模式是什么?而且因为这个问题与 Sequelize ORM 有关,所以,很高兴知道默认使用哪种模式来避免或修改我的查询。

0 投票
1 回答
371 浏览

mysql - 行级锁定时是否需要在提交后解锁表?

我正在编写一些将行级锁定与 MySQL(innodb 后端)一起使用的代码。

伪代码是:

我在 mysql 文档中找不到关于提交后持有的锁的信息。

我必须在 COMMIT 之后执行“解锁表”还是隐含的?答案应该是“否”,但我想对此提出反馈。

0 投票
0 回答
256 浏览

sql-server - Sql Server:应用行锁,不包括已锁定的行

我将用一个例子来解释我的场景。

我的表中有多行。我正在一一挑选进行处理。我需要锁定行进行处理。

示例代码看起来像,

编辑:在查询中添加了 order by 子句。

我的要求是在并行连接中运行它。我的问题是,我无法在多个连接上并行运行此代码。第二个等待直到第一个提交事务。

有没有办法从这个选择查询中排除已经锁定的行?

我遇到过with(readpast)。但是不知道能不能一起用。

编辑:样本数据和期望。

订单表数据:

如果第一行被锁定,我期望得到第二行作为查询的结果。

0 投票
2 回答
397 浏览

sql - 原子选择和更新。使多个进程不可见或无法选择行

情况:

PostgresSQL 数据库。使用 SQL Alchemy ORM 的应用程序(不是很重要)。具有数百万行的表。

数百个进程使用该表访问数据库。每个人都想选择一行并根据其内容执行相对昂贵的操作,然后填充其他表并更新该行。

我使用的天真的方法是这样的:

然后在那之后:

现在的问题是这些操作不是原子的,这意味着在 和 之间的时间SELECTUPDATE,最多 5 个其他进程可以选择该行并开始处理它(我提醒你,这非常昂贵)。

现在我知道有SELECT FOR UPDATE哪些锁定行。但是它会锁定它们FOR UPDATE(duh),它不会禁止选择行。

所以我想这一定是一个非常普遍的问题,但谷歌搜索并没有多大帮助。

0 投票
2 回答
7803 浏览

mysql - MySQL - 更新表行而不锁定行

我有要求我们需要更新行而不在更新时持有锁。

这是要求的详细信息,我们将每 5 分钟对表运行一次批处理,update blogs set is_visible=1 where some conditions此查询将在数百万条记录上运行,因此我们不想在更新期间阻止所有行写入。

我完全理解没有写锁的含义,这对我们来说很好,因为 is_visible 列将仅由该批处理更新,其他线程不会更新该列。另一方面,我们不想阻止同一张表的其他列的大量更新

0 投票
1 回答
47 浏览

c# - 如果数据库连接丢失,是否提交了 SaveChange 事务?

我们已经实现了一个 WordAddin 并使用 EF6 连接到 oracle 数据库。使用插件,用户可以从数据库中加载文档。编辑文档后,用户关闭文档。我们使用 DocumentBeforeClose-Event 来更新数据库中的文档。只有一个用户可以在数据库中编辑和保存文档。问题是,有时在 oracle 中存在行锁争用。据我所知,行锁意味着一个事务正在更新行,而另一个事务正在等待。是否有可能,如果 SaveChanges 期间的数据库连接丢失,则不会提交事务?或者如果在 SaveChange 期间 word 意外关闭?

用word关闭文档后,每个代码都关闭了word,这可能是问题吗?

0 投票
0 回答
67 浏览

mysql - MySQL 中的表锁定似乎无法处理并行请求?

我使用带有 IF 验证的 FOR UPDATE 锁定了表。但是,他们似乎无法处理并行请求?

我有两个存储过程示例。我使用 cURL 测试了这些以发出并行请求。

根据我的验证,我希望输出不超过 50。

日志输出:

在第二次通话中,他们似乎没有读取插入的值。

数据已插入。

我需要的是价格的总和 <= 50。但上面的输出显示为 60。

0 投票
2 回答
3249 浏览

php - 同一行上的多个 Update 语句

我有一个场景,我从客户那里收到了出租车请求,然后我向多个司机发送了取货请求。现在想象一下,如果两个收到请求的司机同时点击“接受”按钮,那么哪个司机会搭车。

我有一个包含ride_id、driver_id、已完成(布尔)列的乘车表。

到目前为止,我正在做的是在点击“接受”按钮后立即调用 API。此 GET 请求 API 检查行程是否已完成。如果是,我会向司机显示一​​条消息,说乘车已经完成,否则我会点击另一个 POST API 请求,它将 DB 中的已完成值更新为 true,并更新 driver_id。

现在进入我们的场景,当两个驱动程序同时点击“接受”时,将发出两个 GET 请求,并且两者都将得到“未完成”作为响应,此后两者都将发送一个 POST 请求。现在我很困惑谁的数据将在数据库中更新。

我在后端使用 PHP 和 MYSQL 作为数据库。

0 投票
0 回答
101 浏览

sql-server - 使用条件列表 SQL Server (UPDLOCK, READPAST, ROWLOCK)

我有一个关于在UPDATE (UPDLOCK, READPAST, ROWLOCK). 当我使用特定行时,我知道它可以工作,但是当我使用允许搜索列表的条件时,我不知道工作,例如:

特定行

列出行

在第二个示例中,我不知道使用(UPDLOCK, READPAST, ROWLOCK)是否会有效,是否会锁定许多页面以查找记录。

0 投票
1 回答
395 浏览

db2 - 防止两个线程选择同一行 ibm db2

我有一个情况,我有多个(可能数百个)线程重复相同的任务(如果你好奇的话,使用 java 调度执行器)。此任务需要选择尚未处理的更改行(从名为 change 的表中)(已处理的更改在 am:n 连接表中跟踪,称为 process_change_rel 跟踪进程 ID、记录 ID 和状态)处理它们,然后更新回状态。

我的问题是,防止来自同一进程的两个线程选择同一行的最佳方法是什么?以下解决方案(用于更新锁定行)是否有效?如果没有,请提出一个可行的解决方案

下面列出了我将使用的查询

请让我知道这是否可行