问题标签 [database-locking]

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 投票
3 回答
146 浏览

sql - 使用数据库锁定随机返回尚未使用的单个记录的正确方法

我有一个表,它有点像一个队列,除了记录永远不会从表中删除。我试图尝试让存储过程返回一条当前未从前端应用程序处理的记录。我们所拥有的是我们设置的“锁定”列来指示这一点。我们这样做的原因是每次只有一个呼叫中心代理可以处理记录。到目前为止,这是我的 sql 的样子。问题是,如果我从两个单独的会话(第二个会话注释掉 waitfor 语句)运行此查询,则第二个会话在 10 秒内不返回任何记录。选择记录时,我已将其范围缩小到 order by 子句。如果我删除 Order By 它会返回,但我需要 order by。

或者也许我的查询完全错误?我应该使用事务隔离级别(可序列化、快照)吗?任何指导都会很棒!

0 投票
0 回答
711 浏览

sql-server - lck_m_x Lock 锁定整个数据库

我们遇到了整个数据库变得无法访问的情况。在查看活动监视器并按持续时间排序时,我看到大量积压的查询,以下是最旧的查询

产生一个 lck_m_x 锁。

它只是永远坐在那里而没有取得进展。我无法辨别的是

  • 为什么通过 ID 进行简单更新需要这么长时间?
  • 为什么它会产生一个 lck_m_x 锁,这是什么意思?
  • 为什么那个查询会锁定整个数据库?

如果我在 Activity Monitor 中终止该进程,所有后续查询(SELECTS、UPDATES 等)(影响各种不相关的表)几乎都会立即清除。

有什么建议可以解决吗?

0 投票
2 回答
1462 浏览

sql-server - 防止同时访问sql server中的存储过程

我有由三列组成的序列表:

编号、年份、类型

并且对于每个新年,今年都会创建和更新三个新记录。

我用于生成序列的存储过程在其他存储过程中使用,我的问题是我想阻止对该存储过程的并发访问并将访问作为队列进行,因此如果发生并发访问,则必须等待另一个完成,以便两个用户没有得到相同的序列号,代码如下:

我读到将隔离级别设置为可序列化可以解决它,这是否足够或者我还必须在存储过程中使用开始和结束事务并手动处理回滚和提交?

0 投票
0 回答
3507 浏览

spring - 在 2 节点集群上时,石英调度程序 db lock 获取问题

我们已经使用 Spring 4.0.5 实现了 Quartz Scheduler 2.2.1。该应用程序在单个节点中启动良好,但是每当我们尝试将其部署到 2 节点集群时,它只是在尝试连接到数据库时挂起,然后服务器将部署回滚到两个节点。

有趣的是,连接 Quartz 数据库的第一个节点启动良好,而第二个节点只是挂起,并且由于第二个部署超时,两者都被回滚。

工作跟踪片段的节点:

工作实例:

第二个节点跟踪片段仅停在:

然后超时:

如果有人将 Quartz Scheduler 部署到 2 节点集群而没有任何锁定问题,我将不胜感激对此问题的任何见解:

石英属性:

org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.isClustered=true org.quartz.jobStore.clusterCheckinInterval=10000 org.quartz.jobStore.tablePrefix=WHSE12_org.quartz.jobStore。 driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount=10 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true org.quartz。 scheduler.userTransactionURL=java:jboss/UserTransaction org.quartz.scheduler.wrapJobExecutionInUserTransaction = false org.quartz.jobStore.dontSetAutoCommitFalse=false org.quartz.scheduler.instanceId=AUTO org.quartz.jobStore.misfireThreshold=10000 org.quartz.jobStore .useProperties=true org.quartz.scheduler.interruptJobsOnShutdown=true org.quartz。scheduler.skipUpdateCheck=true org.quartz.jobStore.txIsolationLevelSerializable=false org.quartz.jobStore.acquireTriggersWithinLock=false org.quartz.plugin.triggHistory.class=org.quartz.plugins.history.LoggingTriggerHistoryPlugin org.quartz.plugin.triggHistory。 triggerFiredMessage=触发器 {1}.{0} 在 {4, date,yyyy-MM-dd HH:mm:ss} 解雇作业 {6}.{5} org.quartz.plugin.triggHistory.triggerCompleteMessage=触发器{1} .{0} 在 {4,date, yyyy-MM-dd HH:mm:ss} 完成触发作业 {6}.{5} 并产生触发指令代码{5} 在 {4, date,yyyy-MM-dd HH:mm:ss} org.quartz.plugin.triggHistory.triggerCompleteMessage=触发器 {1}。{0} 完成触发作业 {6}。{5} 在 { 4,date, yyyy-MM-dd HH:mm:ss} 和结果触发指令代码{5} 在 {4, date,yyyy-MM-dd HH:mm:ss} org.quartz.plugin.triggHistory.triggerCompleteMessage=触发器 {1}。{0} 完成触发作业 {6}。{5} 在 { 4,date, yyyy-MM-dd HH:mm:ss} 和结果触发指令代码

Quartz DataSource 是基于 JNDI 的,用于本地事务并在 JBOSS EAP 6.3.0 上使用 JTA =false, CCM=false:

在超时时,我得到这个:


0 投票
1 回答
1667 浏览

java - 多个JVM访问同一个数据库时如何在java中获取行级锁?

我在不同的 JVM 中运行相同应用程序的三个实例。我不希望数据库中的特定值同时被不同的应用程序修改。如何在 java 中强制执行此限制?

0 投票
1 回答
294 浏览

node.js - Node.js 的异步数据库问题

我正在尝试查询一个数据库,该数据库在节点服务器上运行而无需使用 sqlite3 表达,以检查一个元素是否在数据库中。在发现此元素是否存在后,它将继续使用此信息访问不同的表。

1)我运行 checkSessionID 来检查 sessionID 是否在数据库中,在 sessionIDs 表中。2) 接下来,它调用回调函数,存储与会话 ID 关联的用户名。

但是,由于回调是异步的,我在更新“用户名”之前访问数据库。

为了解决这个问题,不能在回调函数中移动数据库查询,因为这会导致错误,因为数据库被锁定。

非常感谢您的帮助。

编辑

通过将 db 声明为全局变量并在所有进程完成后将其关闭来设法解决它。

0 投票
1 回答
701 浏览

python - 如何在 MySQL 上使用 Django 模拟“锁定超时”错误

使用 MySQL 后端使用 Django 模拟“锁定超时”DatabaseError 的最简单方法是什么?

我有一段代码,它在大型查询集上运行,偶尔会抛出异常:

我了解导致此问题的原因以及如何修复它,但我不确定如何测试我的修复,因为该错误仅发生在多个用户同时访问某些表的生产环境中。

我首先尝试在单独的进程中运行一些示例代码以使 Django 在 MySQL 中应用锁,虽然它似乎确实锁定了目标表并使所有其他请求等待,但当我在我的 localhost 上测试时从未发生锁定超时运行服务器。我让它运行了 20 分钟而没有发生超时。

0 投票
2 回答
268 浏览

c# - 数据库被锁定在使用 SQLite 作为数据库的 windows phone 8.1 RT 中

我正在将我的 wp8 应用程序(使用 SQL Server CE 数据库)转换为 wp8.1RT 应用程序(使用 SQLite 数据库)。我在下面的代码中收到错误“数据库已锁定”。

有时我在检索客户表信息时遇到错误,有时在删除它时。

我正在使用不同的后台工作人员,可能是因为该数据库已锁定。

谁能告诉我如何解决这个数据库锁定问题?

我是否必须添加任何额外的代码或设置?

0 投票
1 回答
5069 浏览

multithreading - 锁定弹性搜索

我试图在谷歌上找到但没有成功。

任何人都可以解释弹性搜索在什么级别使用锁来处理多线程或多进程环境?

它是在索引还是文档类型或文档类型中的特定文档?

0 投票
1 回答
221 浏览

c# - 数据库已锁定 C# 的 SQLite dll

我在下面有这段代码:

在这一行:_id = (long)ClonedSimulationDbCommand.ExecuteScalar(); 我收到一个数据库锁定异常

连接已打开,数据库路径存在且有效。我认为我打开同一数据库的连接这一事实可能是问题所在。

SQL 语句为:

谢谢!