`
mountain2010
  • 浏览: 12835 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

SQL Server 删除大量数据锁死

 
阅读更多

在项目中做sql 的优化,有一张表,里面有几千万条记录,查询速度很慢,就想到了分表。

分表后要删除原表中多余的数据,就粗暴的用了 delete from table_name where ldate<'2014-01-01'

执行了2个小时也没有结束,就cancel了这个request, 然后就发现再次查询表就被卡死,一直没有response。又重启了机器,还是不行。

 

     使用下面的语句查看被锁的表:
select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName  
from   sys.dm_tran_locks where resource_type='OBJECT'

再用 sp_who 查看是什么操作锁的表,最后悲剧的发现是 “DB STARTUP” 锁死。

 

从这篇文档中找到: http://stackoverflow.com/questions/3385314/master-database-db-startup-problem

原来我取消 delete, 数据库要做rollback 操作,所以锁表在rollback. 而且只能一直等待它结束。

 

最后再回到原来的目的,删除大量数据,不能直接用delete, 可以考虑 把数据 selete * into 复制到新的表,再truncate 原表, 然后再改回来表名。(注意:select * into 不会复制表的索引).  truncate 不记录日志,不产生rollback.

 

 PS:  做任何操作都不能直接在生产环境做,一定要在测试环境上测试之后才能执行。

 

PS:等了一个半小时,终于解锁了。还不死心,再次用delete from 删除150W记录,执行了28分钟。

总结,删除 百万以上的记录就要小心了,会耗时很久。

 

 

分享到:
评论

相关推荐

    sqlServer删除重复数据

    SQL Server 删除重复数据 SQL Server 删除重复数据是数据库管理中的一项重要任务。重复数据可能是完全重复的记录,也可能是部分关键字段重复的记录。删除重复数据可以使用多种方法,包括使用 SELECT DISTINCT 语句...

    SqlServer删除所有表数据语句

    Sql Server 删除所有表数据语句 Sql Server 是一种关系型数据库管理系统,广泛应用于企业级应用程序中。在实际开发和测试中,我们常常需要删除数据库中的所有表数据,而保持表结构不变。下面我们将介绍如何使用一条...

    SQL server删除数据还原工具

    因此,了解如何使用SQL Server删除数据的还原工具至关重要。本篇文章将深入探讨这一主题,旨在帮助你理解和掌握如何恢复误删的SQL Server数据。 首先,我们要明白SQL Server提供了多种备份和恢复策略来应对数据丢失...

    SQLServer查询耗费大量资源的语句.txt

    在数据库管理系统(DBMS)中,SQL Server 是一种广泛使用的解决方案,它为各种规模的企业提供强大的数据存储和处理能力。然而,在实际应用中,不当的SQL查询可能会导致系统性能下降、响应时间增加等问题,这直接影响...

    快速清除SQLServer日志的两种方法

    本文将详细介绍快速清除SQLServer日志的两种方法,包括清空日志和删除LOG文件,并且对每种方法进行了详细的解释和操作步骤。 清空日志 清空日志是快速清除SQLServer日志的第一种方法。这种方法可以通过使用DUMP ...

    Sqlserver大数据量插入速度慢或丢失数据的解决方法

    ### Sqlserver大数据量插入速度慢或丢失数据的解决方法 #### 概述 在处理大量数据插入SQL Server数据库的过程中,可能会遇到插入速度慢或者数据丢失的问题。这种情况通常出现在需要批量插入数千甚至上万条记录的...

    SQL Server数据导入SQLite工具

    6. **批量导入**:为了提高效率,工具通常会采用批量导入的方式将大量数据从SQL Server迁移到SQLite。这涉及到事务管理,以确保数据一致性。 7. **数据预处理**:在迁移前,可能需要对SQL Server的数据进行清洗和...

    labview写入数据到sql server2005

    例如,如果一次写入大量数据,可以使用SQL的`BULK INSERT`命令或者LabVIEW的批量操作来提高效率。另外,为了确保数据的一致性,可以包裹写入操作在一个事务中,通过`BEGIN TRANSACTION`、`COMMIT`或`ROLLBACK`来控制...

    SQLServer导入大量数据命令.txt

    SQLServer导入大量数据命令

    Sql Server 数据实时同步到Mysql

    对于大量数据的同步,可能需要考虑分批处理,或者利用Mysql的异步复制特性,实现更高效、稳定的数据迁移。 总之,Sql Server到Mysql的数据实时同步涉及多个环节,需要细心配置,并根据实际情况优化同步策略,以确保...

    sql server数据锁自动检测,释放

    SQL Server 数据库管理系统在执行并发操作时,为了保证数据的一致性和完整性,采用了锁机制来管理数据资源。数据锁是数据库管理系统中用于控制多个用户同时访问同一数据时的一种同步机制。当多个事务试图同时修改...

    ACCESS 与SQL SERVER数据库数据相互转换,ACCESS,SQL SERVER

    然而,当面对大量数据和复杂的数据处理需求时,ACCESS可能力有未逮。 相比之下,SQL Server是一款企业级的关系型数据库管理系统,具有高可用性、高性能和安全性等优点。它支持复杂的事务处理、大规模数据仓库和数据...

    40集SQL Server 基础入门视频教程 SQL Server 数据库基础入门必备课程

    14.SQL Server 2014删除表记录.mp4 15.SQL Server 2014条件限制where.mp4 16.SQL Server 2014 BETWEEN语法.mp4 17.SQL Server 2014子查询IN.mp4 18.SQL Server 2014子查询EXISTS.mp4 19.SQL Server 2014返回...

    sqlserver 完全删除

    - 删除SQL Server时,务必备份所有重要数据,防止意外丢失。同时,确保没有其他依赖于SQL Server的应用程序在运行。 10. **重新安装准备**: - 完全删除后,等待一段时间再进行重新安装,让系统有时间刷新和更新...

    SQLSERVER大批量数据的处理和优化

    ### SQL Server 大批量数据处理与优化综合指南 #### 一、引言 在现代企业的数据处理场景中,SQL Server 作为一款广泛使用的数据库管理系统,其性能优化对于提高业务效率至关重要。特别是在面对大规模数据处理需求...

    ApexSQL sqlserver数据恢复工具

    ApexSQL sqlserver数据恢复工具ApexSQL sqlserver数据恢复工具ApexSQL sqlserver数据恢复工具ApexSQL sqlserver数据恢复工具ApexSQL sqlserver数据恢复工具ApexSQL sqlserver数据恢复工具ApexSQL sqlserver数据恢复...

    SQLServer OLAP实验详解(含数据)

    在本实验中,我们将深入探讨SQLServer在在线分析处理(OLAP)以及数据挖掘中的应用。这个实验基于一个名为FoodMart的数据集,该数据集是一个典型的企业级零售业务数据库,适用于展示多维数据分析和数据仓库的功能。...

    SQL Server 2008 微软数据平台升级方案.ppt

    SQL Server 2008 微软 数据 平台 升级 方案

    利用KEPSERVER6 实现写入SQLSERVER.docx

    现在,我们可以使用 SQLSERVER 自带客户端进行数据查看。 通过以上步骤,我们就可以使用 KEPSERVER6 实现写入 SQLSERVER 数据库。KEPSERVER6 的应用非常广泛,掌握了这些步骤,你就可以更好地使用 KEPSERVER6 实现...

    SQL Server表数据导出成Insert语句的工具

    在SQL Server数据库管理中,有时我们需要将表中的数据导出为Insert语句,这在数据迁移、备份或测试环境中非常常见。"SQL Server表数据导出成Insert语句的工具"是一个专门为此目的设计的应用程序,它能帮助数据库管理...

Global site tag (gtag.js) - Google Analytics