如何以有效的方式处理重复的键插入而不引发异常

Fal*_*con 3 t-sql sql-server nonblocking transaction-isolation sqlperformance

我的案例场景将参数传递给一个过程,该过程仅执行插入操作。但两个线程可能会尝试传递相同的值。

如何处理这种情况而不引发异常并使用最少的锁?

我的性能要求是每秒至少 10k 插入。

编辑:列是唯一的。时间戳在插入之前可能会被更改(调整)。

小智 5

使用忽略重复键选项在表上创建索引。它不会插入重复的行,也不会出现任何错误。

例如

create unique index i1 on #tmp(id) with ignore_dup_key

insert into #tmp values(1,"A")
2> go
(1 row affected)


1> insert into #tmp values(1,"A")
2> go
Duplicate key was ignored.
(0 rows affected)
Run Code Online (Sandbox Code Playgroud)