`
mountain2010
  • 浏览: 12757 次
  • 性别: 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日志的两种方法

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

    labview写入数据到sql server2005

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

    SQLServer导入大量数据命令.txt

    SQLServer导入大量数据命令

    SQL Server数据导入SQLite工具

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

    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返回...

    SQL Server 2000中修改和删除表格数据.ppt

    SQL Server 2000 中修改和删除表格数据 在 SQL Server 2000 中,修改和删除表格数据是数据库管理中最基本的操作。以下是对修改和删除表格数据的详细说明: 一、添加数据 在 SQL Server 2000 中,添加数据可以使用...

    sqlserver 完全删除

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

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

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

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

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

    sql server 2008 修改数据表 不允许保存

    3. **使用脚本方式修改**:对于包含大量数据的表,推荐使用T-SQL脚本来完成表结构的修改。这种方式更加灵活且可控,可以在不影响数据的情况下调整表结构。 4. **了解SQL Server架构变更最佳实践**:在进行任何...

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

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

    SQL Server 2008R2 数据同步.rar

    “SQL Server 2008R2 数据...是之前我需要把两个SQL Server数据库同步,所以找的文档,是把网页另存为文件的方式存到本地,而且也对界面进行过处理,只把文章部分保留,其他的全部删除了,有需要的朋友可以下载来用。

    SQL Server 的事务和锁

    SQL Server的事务和锁是数据库管理系统中至关重要的概念,它们保证了数据的一致性和完整性,为多用户环境下的并发操作提供了保障。以下是对这些主题的详细解析: **SQL事务** SQL事务是数据库操作的基本单元,它...

    用Excel操作SQLServer数据

    标题“用Excel操作SQLServer数据”揭示了一个独特的技术应用场景,即使用Microsoft Excel作为工具来管理和交互SQL Server数据库。这种操作方式通常涉及到Excel的VBA(Visual Basic for Applications)宏编程,使得...

Global site tag (gtag.js) - Google Analytics