- 论坛徽章:
- 0
|
请教大表清理方案
我也遇到类似的情况,经过各种测试,现将经验总结如下:
ASE+SYB12.0 一个大表AAA 共一亿多条记录 21G(加索引的大小)
原帖由 "chuxu" 发表:
选条件将原表select into到临时表,删除原表,rename临时表,再建索引
应该速度快
如chuxus说言的方法是最快的,不过要更改server的一些参数,如果相应的参数没有更改,就不一定了。
1,sp_poolconfig 'default data cache',"7G","16K","2K"
――――建16K的7G大小的default cache
select into ,大部分的查询(包括,全表扫描,使用聚集索引的范围查询, order by等)使用16K的I/O能获得更好的性能。
增加16K 缓存的大小,能明显提高"select into"的速度!
2,sp_configure 'max online engines,7
----Adaptive Server 联机引擎的最大数,不能超过cpu数
sp_configure 'number of worker processes',7
---同步运行并行的组合查询可使用的工作进程的最大数,小于等于“max online"数
sp_configure 'max parallel degree',7
---最大并行度,全服务器范围每个查询允许使用的工作进程的最大数目,小于等于“worker processes"数
sp_configure 'max scan parallel degree',7
--基于散列扫描的最大并行度,小于等于“worker processes"数
以上参数提高并发度
3,sp_configure 'number of sort buffers',20000
---指定在排序时所用的2K缓冲区的数目。说明了有多少缓冲区可以用来存放输入表的数据页。
创建一个很大的索引,而SQL Server上其他的操作又很少时,设置该参数可以提高create index 的性能。
调整以上参数后,采用select into到临时表,drop原表,rename临时表,建索引是比较快的。
比bcp快!bcp出来就慢,回去更慢! |
|