以文本方式查看主题 - 昂捷论坛 (http://enjoyit.com.cn/bbs/index.asp) -- □-通用类 (http://enjoyit.com.cn/bbs/list.asp?boardid=27) ---- 修改大数据量表属性的方法 (http://enjoyit.com.cn/bbs/dispbbs.asp?boardid=27&id=9108) |
-- 作者:zhaowencheng -- 发布时间: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的日志,如果希望操作过程中产生较少了的日志,可以做如下操作: --设置最小日志记录模式 --恢复日志记录模式 |