昂捷论坛≡FAQ≡□-通用类 → 修改大数据量表属性的方法


  共有22528人关注过本帖树形打印

主题:修改大数据量表属性的方法

帅哥哟,离线,有人找我吗?
zhaowencheng
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:下士 帖子:9 积分:317 威望:0 精华:0 注册:2013/5/27 13:51:07
修改大数据量表属性的方法  发帖心情 Post By:2014/1/5 23:17:47

 

维百tb_o_sg_card修改字段属性

 

潍坊中百的项目从2013年3月1日上线以后,有几个需求和BUG修改完毕,需要升级程序,最新版本程序里面需要tb_o_sg_card属性,此表的数据量有2.25亿,占用118G空间,维百的服务器数据库所在的磁盘只有98G的空间(上半年计划用云存储),直接执行后台库的脚本提示PRIMARY文件组没有空间,tb_o_sg_card在修改属性时候日志文件太大,通过本次对tb_o_sg_card修改的经验提供空间不够情况修改大表属性的处理方法:

1、  查询数据库中所有表占用的空间大小

select OBJECT_NAME(ID) ,SIZE = sum(reserved) * CONVERT(FLOAT, (SELECT LOW FROM MASTER.DBO.SPT_VALUES WHERE NUMBER = 1 AND TYPE = 'E')) /1024.00/1024.00

from sysindexes

where indid in (0,1,255)

GROUP BY ID

ORDER BY SIZE DESC

2、  TRUNCATE TABLE日志表(tb_log_module、tb_log_err等),drop以前处理数据备份的表,删除过期数据的表(tb_o_sg_card_forsum此表只保留本月数据)

3、  日结以后收缩数据库

4、  备份tb_o_sg_card数据

5、  Truncate table tb_o_sg_card表

6、  当日数据上传完毕以后修改tb_o_sg_card的表的属性,备份表的触发器和索引

7、  用批处理修改门店前置机服务器上tb_o_sg_card表的属性,如果门店比较多,可以分多个批处理进行操作

8、  查看tb_o_sg_card表里面的数据,把备份的数据恢复

9、  创建表的触发器和索引

10、              核对tb_o_sg_card的数据是否完整,如果完整,删除备份的表


修改大表属性的时候,会比较慢,并且产生大量的日志,可以利用备份数据----truncate表数据-----修改表属性-----删除索引和触发器----恢复表数据---恢复索引和触发器的属性会比较快,成功率高。

在删除tb_o_sg_card_forsum一个月的数据时用了三个小时,并且产生了80G的日志,如果希望操作过程中产生较少了的日志,可以做如下操作:

--设置最小日志记录模式
alter database set recovery simple
delect from tb_o_sg_card_forsum where c_datetime < ‘20140101’

 --恢复日志记录模式
alter database set recovery full



使用IE9无法添加附件的解决方法 支持(0中立(0反对(0回到顶部