在传统的DBMS中,当我们尝试在表中执行插入操作并从同一表中删除(仅删除数据而不是表)时,我记得它将导致死锁。
使用Redshift,当我删除数据并同时插入数据时,我就能做到。
在这种类型的死锁情况下,Redshift架构与传统的RDBMS有何不同?
答案 0 :(得分:3)
没有真正的理由表明,如果您尝试在表中执行插入操作并从同一表中删除表格,则会出现死锁。
何时将在数据库中发生死锁?
当有两个会话时发生死锁-让我们将其称为A和B。如果A在x行上持有锁并等待y行(在提交之前),同时会话B在y行上持有锁,并且等待获得对x行的锁定,将出现死锁。
为什么有人会锁?它需要同时更新x行和y行(或以相反的顺序)。应用程序可以通过各种记录的编码方式来确保应用程序不会造成死锁。
如果进行简单的插入和删除操作,则不会出现死锁。即使它们正在数据库中插入和删除相同的记录(如果这只是这些线程正在执行的任务)。插入将完成它的工作,然后删除将完成它的工作。
此外,请记住,如果没有事务(如果查询是自动提交的),将永远不会出现死锁。