gpt4 book ai didi

java - 不断尝试插入现有键值是一种不好的做法吗

转载 作者:行者123 更新时间:2023-12-01 08:07:26 25 4
gpt4 key购买 nike

我很想从两个层面了解以下详细信息。

  1. 不断尝试插入重复数据并允许 dbms 强制实体的约束来拒绝这些插入,这是否被认为是不好的做法,或者是最糟糕的性能。或者最好执行某种 SELECT COUNT(1) 并仅在 count 不为 1 时插入。

  2. 假设从第一项开始,从 dbms 的角度来看,强制执行实体的约束而不进行多次调用会更有效。即使异常不会被处理,应用程序代码(Java、.NET 等)是否会因为代码不必要地进入异常 block 而遭受更大的性能影响。

可能的重复:Inserting data into SQL Table with Primary Key. For dupes - allow insert error or Select first?

最佳答案

就性能而言,您最好使用数据库内功能来强制执行约束。

当您尝试在数据库外部强制实现约束时,您会遇到两个问题。首先,您需要运行单独的查询、返回结果和执行逻辑(多个数据库操作)的开销。另一方面,使用约束可能会执行相同的工作,但它在数据库内完成所有操作,而无需来回传递内容的额外开销。

其次,当您尝试自己强制执行约束时,就会引入竞争条件。这意味着您可能运行 count() 并且它返回 0。同时,另一个事务插入该值,然后您的插入无论如何都会失败。你确实想避免这种竞争条件。当然,一种解决方案是将所有逻辑放在单个事务中。这会带来自己的开销。

关于java - 不断尝试插入现有键值是一种不好的做法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20426593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com