以文本方式查看主題 - 昂捷論壇 (http://www.yzsenyi.com/bbs/index.asp) -- □-通用類 (http://www.yzsenyi.com/bbs/list.asp?boardid=27) ---- 修改大數(shù)據(jù)量表屬性的方法 (http://www.yzsenyi.com/bbs/dispbbs.asp?boardid=27&id=9108) |
-- 作者:zhaowencheng -- 發(fā)布時間:2014/1/5 23:17:47 -- 修改大數(shù)據(jù)量表屬性的方法 維百tb_o_sg_card修改字段屬性
濰坊中百的項目從2013年3月1日上線以后,有幾個需求和BUG修改完畢,需要升級程序,最新版本程序里面需要tb_o_sg_card屬性,此表的數(shù)據(jù)量有2.25億,占用118G空間,維百的服務(wù)器數(shù)據(jù)庫所在的磁盤只有98G的空間(上半年計劃用云存儲),直接執(zhí)行后臺庫的腳本提示PRIMARY文件組沒有空間,tb_o_sg_card在修改屬性時候日志文件太大,通過本次對tb_o_sg_card修改的經(jīng)驗提供空間不夠情況修改大表屬性的處理方法: 1、 查詢數(shù)據(jù)庫中所有表占用的空間大小 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以前處理數(shù)據(jù)備份的表,刪除過期數(shù)據(jù)的表(tb_o_sg_card_forsum此表只保留本月數(shù)據(jù)) 3、 日結(jié)以后收縮數(shù)據(jù)庫 4、 備份tb_o_sg_card數(shù)據(jù) 5、 Truncate table tb_o_sg_card表 6、 當(dāng)日數(shù)據(jù)上傳完畢以后修改tb_o_sg_card的表的屬性,備份表的觸發(fā)器和索引 7、 用批處理修改門店前置機服務(wù)器上tb_o_sg_card表的屬性,如果門店比較多,可以分多個批處理進行操作 8、 查看tb_o_sg_card表里面的數(shù)據(jù),把備份的數(shù)據(jù)恢復(fù) 9、 創(chuàng)建表的觸發(fā)器和索引 10、 核對tb_o_sg_card的數(shù)據(jù)是否完整,如果完整,刪除備份的表 修改大表屬性的時候,會比較慢,并且產(chǎn)生大量的日志,可以利用備份數(shù)據(jù)----truncate表數(shù)據(jù)-----修改表屬性-----刪除索引和觸發(fā)器----恢復(fù)表數(shù)據(jù)---恢復(fù)索引和觸發(fā)器的屬性會比較快,成功率高。 在刪除tb_o_sg_card_forsum一個月的數(shù)據(jù)時用了三個小時,并且產(chǎn)生了80G的日志,如果希望操作過程中產(chǎn)生較少了的日志,可以做如下操作: --設(shè)置最小日志記錄模式 --恢復(fù)日志記錄模式 |