问题标签 [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.
postgresql - Postgres 中的默认事务行级别和/或 Sequelize.js 中默认使用的 LOCK 是什么
PostgreSQL 中使用的默认行级锁定模式是什么?而且因为这个问题与 Sequelize ORM 有关,所以,很高兴知道默认使用哪种模式来避免或修改我的查询。
mysql - 行级锁定时是否需要在提交后解锁表?
我正在编写一些将行级锁定与 MySQL(innodb 后端)一起使用的代码。
伪代码是:
我在 mysql 文档中找不到关于提交后持有的锁的信息。
我必须在 COMMIT 之后执行“解锁表”还是隐含的?答案应该是“否”,但我想对此提出反馈。
sql-server - Sql Server:应用行锁,不包括已锁定的行
我将用一个例子来解释我的场景。
我的表中有多行。我正在一一挑选进行处理。我需要锁定行进行处理。
示例代码看起来像,
编辑:在查询中添加了 order by 子句。
我的要求是在并行连接中运行它。我的问题是,我无法在多个连接上并行运行此代码。第二个等待直到第一个提交事务。
有没有办法从这个选择查询中排除已经锁定的行?
我遇到过with(readpast)
。但是不知道能不能一起用。
编辑:样本数据和期望。
订单表数据:
如果第一行被锁定,我期望得到第二行作为查询的结果。
sql - 原子选择和更新。使多个进程不可见或无法选择行
情况:
PostgresSQL 数据库。使用 SQL Alchemy ORM 的应用程序(不是很重要)。具有数百万行的表。
数百个进程使用该表访问数据库。每个人都想选择一行并根据其内容执行相对昂贵的操作,然后填充其他表并更新该行。
我使用的天真的方法是这样的:
然后在那之后:
现在的问题是这些操作不是原子的,这意味着在 和 之间的时间SELECT
内UPDATE
,最多 5 个其他进程可以选择该行并开始处理它(我提醒你,这非常昂贵)。
现在我知道有SELECT FOR UPDATE
哪些锁定行。但是它会锁定它们FOR UPDATE
(duh),它不会禁止选择行。
所以我想这一定是一个非常普遍的问题,但谷歌搜索并没有多大帮助。
mysql - MySQL - 更新表行而不锁定行
我有要求我们需要更新行而不在更新时持有锁。
这是要求的详细信息,我们将每 5 分钟对表运行一次批处理,update blogs set is_visible=1 where some conditions
此查询将在数百万条记录上运行,因此我们不想在更新期间阻止所有行写入。
我完全理解没有写锁的含义,这对我们来说很好,因为 is_visible 列将仅由该批处理更新,其他线程不会更新该列。另一方面,我们不想阻止同一张表的其他列的大量更新
c# - 如果数据库连接丢失,是否提交了 SaveChange 事务?
我们已经实现了一个 WordAddin 并使用 EF6 连接到 oracle 数据库。使用插件,用户可以从数据库中加载文档。编辑文档后,用户关闭文档。我们使用 DocumentBeforeClose-Event 来更新数据库中的文档。只有一个用户可以在数据库中编辑和保存文档。问题是,有时在 oracle 中存在行锁争用。据我所知,行锁意味着一个事务正在更新行,而另一个事务正在等待。是否有可能,如果 SaveChanges 期间的数据库连接丢失,则不会提交事务?或者如果在 SaveChange 期间 word 意外关闭?
用word关闭文档后,每个代码都关闭了word,这可能是问题吗?
mysql - MySQL 中的表锁定似乎无法处理并行请求?
我使用带有 IF 验证的 FOR UPDATE 锁定了表。但是,他们似乎无法处理并行请求?
我有两个存储过程示例。我使用 cURL 测试了这些以发出并行请求。
根据我的验证,我希望输出不超过 50。
日志输出:
在第二次通话中,他们似乎没有读取插入的值。
数据已插入。
我需要的是价格的总和 <= 50。但上面的输出显示为 60。
php - 同一行上的多个 Update 语句
我有一个场景,我从客户那里收到了出租车请求,然后我向多个司机发送了取货请求。现在想象一下,如果两个收到请求的司机同时点击“接受”按钮,那么哪个司机会搭车。
我有一个包含ride_id、driver_id、已完成(布尔)列的乘车表。
到目前为止,我正在做的是在点击“接受”按钮后立即调用 API。此 GET 请求 API 检查行程是否已完成。如果是,我会向司机显示一条消息,说乘车已经完成,否则我会点击另一个 POST API 请求,它将 DB 中的已完成值更新为 true,并更新 driver_id。
现在进入我们的场景,当两个驱动程序同时点击“接受”时,将发出两个 GET 请求,并且两者都将得到“未完成”作为响应,此后两者都将发送一个 POST 请求。现在我很困惑谁的数据将在数据库中更新。
我在后端使用 PHP 和 MYSQL 作为数据库。
sql-server - 使用条件列表 SQL Server (UPDLOCK, READPAST, ROWLOCK)
我有一个关于在UPDATE (UPDLOCK, READPAST, ROWLOCK)
. 当我使用特定行时,我知道它可以工作,但是当我使用允许搜索列表的条件时,我不知道工作,例如:
特定行
列出行
在第二个示例中,我不知道使用(UPDLOCK, READPAST, ROWLOCK)
是否会有效,是否会锁定许多页面以查找记录。
db2 - 防止两个线程选择同一行 ibm db2
我有一个情况,我有多个(可能数百个)线程重复相同的任务(如果你好奇的话,使用 java 调度执行器)。此任务需要选择尚未处理的更改行(从名为 change 的表中)(已处理的更改在 am:n 连接表中跟踪,称为 process_change_rel 跟踪进程 ID、记录 ID 和状态)处理它们,然后更新回状态。
我的问题是,防止来自同一进程的两个线程选择同一行的最佳方法是什么?以下解决方案(用于更新锁定行)是否有效?如果没有,请提出一个可行的解决方案
下面列出了我将使用的查询
请让我知道这是否可行