Sql Server 千万级数据量删除
来源:互联网 发布:如何将mac的日历退出 编辑:程序博客网 时间:2024/04/28 18:53
公司有套非常老的系统,数据库是MSSQL server 2005,积累了15年的历史数据,大概有2000多万行,由于业务原因,需要清除14年以前的历史数据,由于数据量本身比较大,删除非常缓慢,从网上找到了一些解决方案。
1)备份清日志
2)日期字段要有索引
3)统计下要删除的记录数,最小的日期
4)从最小的日期开始,按月/周/天分段删除,尽量把分段数据量控制在千数量级,一次性删太多锁就多了。
5)备份清日志
declare @mydate date,@int int
select @mydate=min(orderdate) from tablename
--tmp_table 是自己建立的控制表。只有一行一列,初始是1。
select @int =int from tmp_table
while @mydate <'2010-01-01' and @int =1
begin
delete tablename where orderdate=@mydate
set @mydate=dateadd(day,1,@mydate)
end
bjkfp.zzwqfp.com
我试尝这的方法,每次删除1000条记录
把需要删除的数据主键插入临时表
SELECT ID INTO ##DEL_TMP_tb FROM TB
WHERE ...
CREATE CLUSTERED INDEX IDX_ID ON ##DEL_TMP_tb(ID)
CREATE TABLE #TMP_BATCH(ID BIGINT)
WHILE EXISTS (SELECT TOP 1 1 FROM ##DEL_TMP_tb)
BEGIN
DELETE FROM #TMP_BATCH
--每个batch 1000条
INSERT INTO #TMP_BATCH
SELECT TOP 1000 ID FROM ##DEL_TMP_tb
--删除数据
DELETE FROM TB WHERE ID IN (SELECT ID FROM #TMP_BATCH)
DELETE FROM ##DEL_TMP_tb WHERE ID IN (SELECT ID FROM #TMP_BATCH);
--- waitfor delay '00:00.00.050'
END
DROP TABLE ##DEL_TMP_tb
DROP TABLE #TMP_BATCH
- Sql Server 千万级数据量删除
- mysql 千万级数据的删除
- 千万级数据量mssql分页查询优化和算法
- MYSQL千万级数据量的优化方法积累
- MYSQL千万级数据量的优化方法积累
- MYSQL千万级数据量的优化方法积累
- mysql千万级数据量根据索引优化查询速度
- MYSQL千万级数据量的优化方法积累
- MYSQL千万级数据量的优化方法积累
- MYSQL千万级数据量的优化方法积累
- mysql千万级数据量根据索引优化查询速度
- MYSQL千万级数据量的优化方法积累
- MYSQL千万级数据量的优化方法积累
- SQL千万级数据规模处理概要
- sql 千万级数据表新建索引
- 记一次 SQL SERVER 数据库查询性能优化 千万级数据
- 千万级数据库(MSSQL)删除重复记录
- java实现删除千万级数据的大key
- 第十三周项目5--完整复制字符
- Android环境搭建和HelloWorld编写
- android 模拟冻屏 代码实现
- SVN本地目录创建及使用
- jsp中获取项目路径
- Sql Server 千万级数据量删除
- 黑马程序员——JAVA基础---打印流对象
- Router Password Kracker(路由器密码破解工具)
- 随机算法 实现估算集合的势
- 初识Spring+SpringMVC+MyBatis框架(三)---spring-mybatis.xml,AddMapping.xml
- android图层划分(PhoneWindowManager.windowTypeToLayerLw) 图层id
- IOS开发中,在一个应用程序中启动另外一个应用
- IntelliJ IDEA 12.0搭建Maven Web SSH2架构项目示例(解决卡死问题)
- MySQL存储过程