标签: database-deadlocks

在Sql Server 2005中使用UPDATE语句避免死锁的最佳隔离级别

我需要在sql server表上执行un update语句,此表由另一个进程同时使用.因为有时会发生僵局.您是否建议隔离级别以避免或最小化此死锁?

sql sql-server-2005 isolation-level database-deadlocks

1
推荐指数
1
解决办法
1万
查看次数

避免 MySQL '尝试获取锁时发现死锁;尝试重新启动事务'

我有时会收到 mysql 死锁错误说:

'尝试获取锁时发现死锁;尝试重新启动事务'

我有一个队列表,其中多个 php 进程同时运行,从表中选择行。但是,对于每个进程,我希望它每次提取都抓取一组唯一的行,因此我没有选择任何重叠的行。

所以我运行这个查询:(这是我得到死锁错误的查询)

    $this->db->query("START TRANSACTION;");

    $sql = "   SELECT   mailer_queue_id
                FROM    mailer_queues
                WHERE   process_id IS NULL
                LIMIT   250 
                FOR UPDATE;";
    ...


    $sql = "UPDATE  mailer_queues
            SET     process_id = 33044,
                    status = 'COMPLETED'
            WHERE   mailer_queue_id 
                IN  (1,2,3...);";

    ...

    if($this->db->affected_rows() > 0) {
        $this->db->query("COMMIT;");       
    } else{
        $this->db->query("ROLLBACK;");      
    }
Run Code Online (Sandbox Code Playgroud)

我也是:

同时向表中插入行(没有事务/锁)

同时更新表中的行(没有事务/锁)

同时从表中删除行(没有事务/锁)

同样,我的更新和删除只更新和删除它们分配有 process_id 的行......以及我执行“SELECT rows ... FOR UPDATE”事务的地方 process_id = null。理论上,它们永远不应该重叠。

我想知道是否有适当的方法来避免这些死锁?

是否会发生死锁,因为一个事务在选择/更新时锁定表的时间过长,而另一个进程正在尝试执行相同的事务并且只是超时?

任何帮助深表感谢

php mysql deadlock database-deadlocks

1
推荐指数
1
解决办法
9425
查看次数

火鸟强行消除僵局

我正在使用Delphi IBQuery和IBTransaction组件使用此查询更新数据库中的所有记录:

UPDATE INVOICES SET BLK = 0;
Run Code Online (Sandbox Code Playgroud)

当用户打开另一个客户端应用程序时,它会在某些记录上留下死锁(由用户打开).

问题在于我的应用程序必须完成上面的查询.

是否有可能实施某种解决方案来强制删除死锁?例如一个SQL查询?

Firebird版本是在Windows 7上运行的2.1.2.18118

delphi firebird deadlock database-deadlocks

1
推荐指数
1
解决办法
4911
查看次数

没有事务的Azure SQL数据库上的DeadLock

看起来尽管我们根本没有使用事务,但我们从SQL Azure中获得了随机死锁错误.

当SQL Azure陷入僵局时,是否没有跨国情况?

看起来当我们运行一批UPDATE查询时,它就像批处理是一个大事务.

所有更新都是通过id并更新一行.

sql-server deadlock azure database-deadlocks azure-sql-database

1
推荐指数
1
解决办法
828
查看次数

Laravel - 数据库事务 - 超出锁定等待超时

我们使用 DatabaseTransactions 特征和 MySQL 数据库连接执行单元测试(很多)。

当执行完整的测试套件时,我们得到 15 条左右的“常规错误:1205 超出锁定等待超时;”。当单独执行这些测试时,它们都成功了。

问题主要出现在执行sync()方法时,但不仅限于此。

(尝试增加等待超时,但没有成功)。

任何建议将不胜感激。

也发布在 laracasts 中:https://laracasts.com/discuss/channels/testing/test-suite-general-error-1205-lock-wait-timeout-exceeded

mysql phpunit transactions database-deadlocks laravel

1
推荐指数
1
解决办法
1280
查看次数

僵局需要帮助

我有一个特殊的情况。我的表经常被代码的不同部分和数千个客户端访问,因此我们在表上进行简单的更新和插入时使用了事务。问题是我们不断遇到死锁错误。有人知道我可以如何缓解这个问题吗?

.net c# sql database-deadlocks database-concurrency

0
推荐指数
1
解决办法
168
查看次数

Oracle中的死锁

我想创建一个脚本,其中进入死锁的oracle会话被自动终止.是否有可能找到进入死锁的会话的会话ID.截至目前,我必须退回数据库以消除死锁这个问题可以解决吗?

oracle database-deadlocks

0
推荐指数
1
解决办法
8548
查看次数