gpt4 book ai didi

database - Unique Constraint (Or) Insert if not exist 哪个更安全 - 多线程环境

转载 作者:太空狗 更新时间:2023-10-30 01:49:32 25 4
gpt4 key购买 nike

我看到在许多应用程序中他们使用唯一约束,而在一些应用程序中他们使用插入如果不存在查询而不是使用唯一约束

在多线程环境中,多个线程有可能同时尝试插入……也可能是同一秒或毫秒……

在这种情况下,哪个选项最好??寻求唯一约束或如果不存在则寻求插入。

谢谢。

最佳答案

我更喜欢使用唯一键,因为它们是透明的,并且可以防止源代码重复。 (即您不能在代码中引入错误来添加重复数据,或者其他应用程序/人员即使直接编辑表数据也不能添加重复数据)

对于多线程应用程序,如果代码/查询编写得不好,可能会导致重复,但良好的实现可以保证唯一性。 (单个事务、存在性检查和插入在同一个查询中,不在不同的查询中,不自动提交等)

另一方面,唯一键约束的缺点是数据库开销。 (实际上想不出任何其他缺点)

结果是这样的:

选项 1:依靠数据库,其任务是处理数据和相关约束,其中大多数实现在性能和可靠性方面都非常好。

选项 2:手动编写唯一约束检查​​代码,最终使用数据库查询进行唯一检查。如果有其他写入客户端到同一个数据库表,它不会阻止重复数据。

如果您最关心的是性能,那么这取决于您的数据和数据库。你需要做一个基准。

否则,选择很明确。

关于database - Unique Constraint (Or) Insert if not exist 哪个更安全 - 多线程环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45487195/

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