concurrency专题提供concurrency的最新资讯内容,帮你更好的了解concurrency。
我有一个大的报告我正在运行在sql server上.运行需要几分钟.我不希望用户点击运行两次.由于我将整个过程包装在一个事务中,如何查看表是否被事务锁定?如果是这样,我想返回一个错误消息,说“生成报告,请在几分钟后重试”. 这怎么可以实现? 更好的是,考虑为此设计的 sp_getapplock.或使用 SET LOCK_TIMEOUT 否则,你必须用sys.dm_tran_locks做一些事情,我
我不太清楚如何使用actor来访问数据库.在Akka的文档和书籍中,这个主题似乎被省略. 一个解决方案可以是无状态演员中的包装DAO.例如,对于数据库中的每个表(或域对象类型或聚合类型),可以创建一个负责所有CRUD操作的actor.其变体可以是命令和查询的分离.例如对于每个数据类型1命令actor(用于并发)和10个查询actor(用于并行). 另一种方法可能是创建在数据库中正好代表一行(或域对
我有N个线程并发处理的表. CREATE TABLE [dbo].[Jobs] ( [Id] BIGINT NOT NULL CONSTRAINT [PK_Jobs] PRIMARY KEY IDENTITY, [Data] VARBINARY(MAX) NOT NULL, [
我应该跑 ALTER DATABASE DbName SET ALLOW_SNAPSHOT_ISOLATION OFF 如果暂时不使用快照事务(TX)隔离(iso)? 换一种说法, 为什么要启用,首先呢? >为什么默认情况下不启用? 在SQL Server中启用(但暂时不使用)的成本是多少? –update: 启用数据库上的快照TX iso级别不会将READ COMMITTED tx iso更改为
我有一个连接到Oracle数据库并执行操作的程序.我现在想改编程序也支持SQL Server数据库. 在Oracle版本中,我使用“SELECT FOR UPDATE WAIT”来锁定我需要的特定行.我使用它在更新基于SELECT的结果的情况下,其他会话绝对不能同时修改它们,所以他们必须首先手动锁定它.系统高度受限于同时访问相同数据的会话. 例如: 两个用户尝试以优先级最高的方式获取数据库中的行,
TL; DR:下面的问题可归结为:插入行时,在生成新的Identity值和聚集索引中相应行键的锁定之间是否有机会窗口,外部观察者可以看到并发事务插入的较新标识值? (在SQL Server中.) 详细版本 我有一个SQL Server表,其中包含一个名为CheckpointSequence的Identity列,它是表的聚簇索引的键(它还有许多其他非聚簇索引).行由几个并发进程和线程插入到表中(在隔
假设你有以下代码(请忽略它很糟糕): BEGIN TRAN; DECLARE @id int SELECT @id = id + 1 FROM TableA; UPDATE TableA SET id = @id; --TableA must have only one row, apparently! COMMIT TRAN; -- @id is returned to the client o
我尝试编写数据库代码以确保它不受竞争条件的影响,以确保我已锁定正确的行或表.但我经常想知道:我的代码是否正确?是否有可能强制显示任何现有的竞争条件?我想确保如果它们确实发生在生产环境中,我的应用程序将做正确的事情. 我一般都知道哪个并发查询可能会导致问题,但我不知道如何强制它们并发运行以查看是否发生了正确的行为(例如我使用了正确的锁定类型),正确的错误是抛出等 注意:我使用的是PostgreSQL
我有一个MS SQL 2008数据库,可以通过LINQ进行数据更新/回溯. 对于繁重的应用程序,我的linq在PerCall实例化模式下由WCF服务访问.这个应用程序有几个调用服务的线程,并且有几个应用程序同时运行. 我经常发生一些EntityException: System.Data.EntityException was caught Message=An error occurred wh
我目前正在使用ASP.NET 3.5和SQLServer 2008开发在线拍卖系统.我已经达到了开发的地步,我需要确保我的系统能够合理地处理在以下情况下可能出现的并发问题: 两个人 – 杰拉尔丁和约翰 – 想要竞标目前价格为50英镑的拍卖品. Geraldine以55英镑的价格出价,约翰出价52英镑.系统现在有两个页面’submit_bid.aspx’正在运行;该页面的每个副本都会检查他们的出价是
对于像这样的表: CREATE TABLE Users( id SERIAL PRIMARY KEY, name TEXT UNIQUE ); 以下操作的正确单一查询插入是什么: 给定用户名,插入新记录并返回新ID.但如果名称已存在,则只返回id. 我知道PostgreSQL 9.5中的新语法对于ON CONFLICT(列)DO UPDATE / NOTHING,但我无法弄清楚如果
相当简单的问题.在SQL 2008中,如果我有一个存储过程(见下文),我是否在前两个语句之间存在竞争条件的风险,或者存储过程是否锁定了事务所涉及的事情? ALTER PROCEDURE [dbo].[usp_SetAssignedTo] -- Add the parameters for the stored procedure here @Server varchar(50),
我想知道如何同时执行许多长时间运行的查询将影响SQL Server及时为每个查询提供服务的能力. [编辑] 我不打算模糊,这更像是一个假设.让我们假设查询是select语句,在具有数百万行的表上有某种谓词. 中央处理器 每个进入服务器的请求(即每个“批处理”)都将与“任务”相关联,请参阅sys.dm_os_tasks.该任务在“调度程序”上排队,大致说是CPU核心,请参阅sys.dm_os_sch
这个问题当然适用于更广泛的范围,但现在就是这样. 我有一个基本的电子商务应用程序,用户可以自然地下订单.所述订单需要有一个唯一的编号,我现在正试图生成. 每个订单都是特定于供应商的.基本上,我有一个OrderNumberInfo(VendorID,OrderNumber)表.现在,只要客户下订单,我就需要为特定供应商增加OrderNumber并返回该值.当然,我不希望其他进程干扰我,所以我需要以某
我想做一个UPSERT的SELECT / INSERT版本.以下是现有代码的模板: // CREATE TABLE Table (RowID INT NOT NULL IDENTITY(1,1), RowValue VARCHAR(50)) IF NOT EXISTS (SELECT * FROM Table WHERE RowValue = @VALUE) BEGIN INSERT Ta
我有兴趣选择更新查询将锁定不存在的行. 例如 表FooBar有两列,foo和bar,foo有一个唯一的索引 >从FooBar发出查询选择栏,其中foo =?更新 >如果查询返回零行 >问题查询插入到FooBar(foo,bar)值(?,?) 现在插件是否可能导致索引违例或select更新是否阻止? 对SQLServer(2005/8),Oracle和MySQL的行为感兴趣. 在Oracle中,SE
我正在使用SQL Server 2008,并希望能够利用像 MySQL的ON DUPLICATE KEY UPDATE子句之类的INSERT语句 当前的遗留代码执行一个删除和后续插入,它与单独线程中的重复键插入运行并发问题: 这是我在生产环境中看到的错误: Violation of PRIMARY KEY constraint 'PK_Audience'. Cannot insert duplic