繁体   English   中英

删除操作是否会阻止任何插入到同一个表中?

[英]Does the delete operation block any insert into the same table?

我有表 A 和一个存储过程,它定期从该表中删除所有数据。 存储过程中的所有查询都打包到 1 个事务中。 但有时存储过程的执行需要长达 5 分钟。 难道是执行存储过程会阻止同一个表A上的插入?

在上一次调用完成之前,永远不会再次调用存储过程。

READ COMMITTED 和 READ COMMITTED SNAPSHOT ISOLATION 会有所不同吗?

是的,像DELETE FROM YourTable; 将取出一个表锁来阻止对表的所有其他更改,直到它完成为止。 我认为更改隔离级别不会有太大帮助,除非您将快照放在整个数据库上(即快照隔离)。

通常,您想针对此类情况尝试不同的方法。 任何一个:

  1. 尝试将 DELETE 分解为更小的“块”,以便每个块花费更少的时间并且不会阻塞整个表。 或者,如果这不合适,那么...

  2. 创建YourTable的空副本,然后将Yourtable_deleting的名称更改为YourTable之类的名称,并将新表的名称更改为YourTable 然后删除(或只是删除) Yourtable_deleting

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM