问题标签 [database-concurrency]

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 投票
2 回答
3594 浏览

multithreading - Grails“行已被另一个事务更新或删除(或未保存的值映射不正确)”

Grails (2.3.7) 中的并发问题似乎没有明确的解决方案。我已经尝试了所有建议,但是当我推送并发线程数时,以下代码总是失败:

它在“deflockedDogInstance = Dog.lock(dogId)”行上失败:

上面的设计非常简单,在 Owner 和 Dog 之间存在多对多关系:

狗类:

业主等级:

仅供参考 - 数据库是 MySQL。

有什么建议吗?

0 投票
1 回答
209 浏览

swift - 尝试获取核心数据中的对象时出错“-[__NSArrayI entity]:无法识别的选择器已发送到实例”

我正在尝试从 Parse 获取所有数据,并将这些数据与手机中的核心数据同步。我目前遇到了一个未正确执行的获取请求的小问题。我认为原因是我将 managedObjectContext 用于不同的任务,但我真的不知道如何解决这个问题。

我在我的代码中清楚地指出了问题发生的位置。这很奇怪,因为我的代码没有崩溃,只是在日志中打印了一个错误。(我已将显示的结果放在代码下方的日志中)

这是我的代码:

这是显示在日志中的内容:

所以就是这样,我认为它与并发有关,但不幸的是我找不到我的问题的答案。我一直在其他论坛上,但没有人能提供正确的答案。

非常感谢

0 投票
0 回答
56 浏览

postgresql - 从选择插入错过了一些行 - Postgres

我们有一个包含大约 7M 条记录的表,ferrari并且想要进行模式迁移。我们使用了这个脚本

该脚本执行大约需要 50 分钟,完成后我们意识到该new_car表的记录比old_car表少 2M。在脚本执行时,old_car表仍然会同时进行插入、更新等。

这种并发是否会导致某种问题?缺少约 2M 行的可能原因是什么?(old_car查询运行时,表没有删除 2M 次,可能是 100 或 200 次删除)

0 投票
0 回答
52 浏览

mysql - 在 MySQL 数据库中插入 innodb 并在 myisam 中更新变得太慢

我最近对我的 sql server 配置进行了以下更改

线程缓存大小=100

key_buffer_size=1G

innodb_buffer_pool_size=2G

innodb_thread_concurrency=0
innodb_read_io_threads=64
innodb_write_io_threads=64

但是在 Innodb 表中插入并在 mysiam 表中更新之后花费了太长时间。知道出了什么问题

0 投票
0 回答
42 浏览

oracle - 订阅源的并发帖子和阅读 - 从订阅源头遍历到最近的条目时缺少条目

这是一个经典的并发读写挑战:

我们正在通过 Hibernate 向 Oracle 数据库发布记录和 Atom Hopper 供稿,我们的合作伙伴正在阅读它们。如果我们发布记录 1 到 5,那么 5 是头部(即最后发布的)。我们的合作伙伴要求从条目 1 开始的提要页面,并接收条目 1-5。下次他们询问时,他们将要求比条目 5 更新的条目。客户端跟踪已读取的条目。

问题是,当他们阅读时,我们碰巧发布了一个条目号 6,它在“已创建”列中的时间戳比数字 5 稍早。因为它是在读取后提交的,所以我们的合作伙伴永远不会得到 nr。6. 他们得到了我们在此期间发布的 7、8 和 9,所有这些都具有比 nr 更新的时间戳。5.

那么如何避免丢失像nr这样的条目。6?我们让数据库将时间戳设置为第一个度量,但是我们仍然有可能在它们读取时提交“较旧”条目,因为在记录获取时间戳和提交时间戳之间存在不可忽略的时间. 是否可以锁定数据库页面以供阅读之类的?

我想我们可能不得不改变客户行为,即要求比 4 号更新的条目,以防两者之间有提交。在捕获诸如 nr 之类的提交方面,使用序列而不是时间戳会更好。6?

0 投票
1 回答
205 浏览

entity-framework - WPF:数据库更改时更新视图模型(并发问题)

我目前正在开发 WPF 应用程序,其架构如下:

  • MVVM
  • 实体框架 4(带有 LINQ)。
  • 汇集数据库以获取数据的 WCF 服务 (Oracle)。
  • 我在我的视图模型类中调用 WFC 并将我的数据放在 ObsevableCollections 中。
  • Db Changes 发生在另一个应用程序中。

所以我的应用程序不会对数据库执行任何写入操作(Zéro),它只会读取数据并将其显示在 UI 上。

如何使我的应用程序能够快速响应数据库更改,我阅读了以下解决方案,但我很困惑,不知道该使用什么:

  • 使用 DispatcherTimer 每 n 秒池化一次数据库(似乎工作量太大,导致数据每毫秒更改一次)
  • SqlDependency,在整个互联网上搜索,但没有找到使用 EF 的正确实现。

正如我所说,db 每毫秒都会更改一次(来自其他来源的财务数据),

如何解决这个问题?

谢谢你。

0 投票
1 回答
564 浏览

sql-server - 根据特定条件生成唯一的连续序列号,而不使用 TABLOCKX

每次向我的客户发送消息时,都会在名为“确认”的表中插入一个新条目。在插入过程中,我需要获取白天发送给我的特定客户的确认的“SequenceNumber”列的 MAX 值。然后此 SequenceNumber 增加 1 并用于新记录。

约束是确保为白天发送给同一客户的确认生成连续的唯一序列号。

我已经能够使用 Serializable 隔离级别和 TABLOCKX 提示来实现这一点。此解决方案有效,但在并发方面没有提供最佳性能。知道如何实施此解决方案以提供更好的性能吗?

当前解决方案(封装在存储过程中)

0 投票
1 回答
135 浏览

parallel-processing - 并发数据库MVCC时间戳生成方法

我需要为 MVCC 快照隔离生成数据库时间戳。使用的典型方法:

“事务操作在 SI-TM 中实现如下。TM BEGIN:事务的逻辑快照是通过使用全局时间戳计数器的原子增量获得唯一时间戳来生成的。”

在具有数百个内核的系统中使用这种方法的问题在于它无法扩展。在有争议的内存位置上存在每秒 10M 原子增量的硬件限制。

有任何想法吗?

0 投票
1 回答
907 浏览

networking - Web 服务器上的并发传入请求

我有一个关于电子商务网站闪购期间出现的情况的问题。假设库存只有 5 件商品,如果同时有 10000 个请求到达服务器,服务器如何处理请求以及如何管理请求?

0 投票
1 回答
104 浏览

java - 列更新后的 Java 对象更新

我有一个关于并发控制的问题。

这是场景。

  1. java API/线程从数据库中读取实体/行。
  2. 另一个线程更新同一行。
  3. 现在,如果我想更新从步骤 1 中读取的对象/行,我该怎么做?