[英]Does the delete operation block any insert into the same table?
我有表 A 和一个存储过程,它定期从该表中删除所有数据。 存储过程中的所有查询都打包到 1 个事务中。 但有时存储过程的执行需要长达 5 分钟。 难道是执行存储过程会阻止同一个表A上的插入?
在上一次调用完成之前,永远不会再次调用存储过程。
READ COMMITTED 和 READ COMMITTED SNAPSHOT ISOLATION 会有所不同吗?
是的,像DELETE FROM YourTable;
将取出一个表锁来阻止对表的所有其他更改,直到它完成为止。 我认为更改隔离级别不会有太大帮助,除非您将快照放在整个数据库上(即快照隔离)。
通常,您想针对此类情况尝试不同的方法。 任何一个:
尝试将 DELETE 分解为更小的“块”,以便每个块花费更少的时间并且不会阻塞整个表。 或者,如果这不合适,那么...
创建YourTable
的空副本,然后将Yourtable_deleting
的名称更改为YourTable
之类的名称,并将新表的名称更改为YourTable
。 然后删除(或只是删除) Yourtable_deleting
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.