gpt4 book ai didi

sql - 在哪里可以找到有关 SQL 锁定和事务策略的很好的介绍

转载 作者:行者123 更新时间:2023-12-02 00:45:55 25 4
gpt4 key购买 nike

我使用锁和事务有点像 VBA excel 程序员第一次尝试编写多线程 C++ 服务器...

我曾尝试向我的同事征求意见,但尽管我们都非常擅长(或者我们认为)设计复杂的数据库、编写快速高效的查询、在需要时使用索引和约束等等,我们都不太了解这个主题。

我找到的所有在线资源要么是语法引用,要么是解释事务以“begin tran”开始并以提交或回滚结束的虚拟教程。

我也浏览过 SO 但没有成功。

我正在寻找的是一个简单的现实世界问题列表,以及解决这些问题的正确方法。

示例:

假设我有一个包含一个事件位列的表,并且我不想同时有两个事件行。当然,多个进程可以尝试同时插入数据。

  • 我应该锁定整个表吗?
  • 或者可能使用数据约束,以便插入第二个“事件”行会失败?
  • 或者使用具有可重复读取隔离级别的事务?
  • 或者写:

    更新 tbFoo 设置 Active=0insert into tbFoo (foo, Active) 在不存在的地方选择 'foo',1 (select * from tbFoo where Active=1)

请不要对这个特定问题和我愚蠢的建议发表评论/回答。我只是想指出我不知道的事实:)

我在哪里可以找到有关简单但相关的锁定情况的一些很好的演练?如果它有所作为,我使用的是 SQL Server 2008

我也很想知道其他人是否对这个话题有同样的感受。

最佳答案

Q&A from Chas Boyd

Kalen Delaney article

当然,good old BOL

对于 SQL 2008,您可以使用 MERGE在一个 transaction.safe 语句中实现更新和插入。我还没有使用过它,所以我会执行以下操作之一: - 事后检查的触发器(因此它在同一笔交易中) - MERGE 的 TABLOCKX 锁

虽然在这种情况下,check this thread (当然还有 my answer :)

关于sql - 在哪里可以找到有关 SQL 锁定和事务策略的很好的介绍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592799/

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