金蝶云星空---SQLserver数据中心实体过大问题分析及解决方案

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

金蝶云星空---SQLserver数据中心实体过大问题分析及解决方案

问题:软件使用一段时间,数据库实体增到100G,如何优化

1、首先定位是什么文件占用的空间过大,是数据库日志还是数据


登录数据库管理器之后找到数据库实体文件路径存放的位置

图片.webp


打开数据库存放路径----查看数据库大小 。如下图日志文件过大

图片.webp


A、日志文件过大的优化方法


第一步:检查数据库的恢复模式,数据库实体名称右键-----属性----选项----恢复默认---简单

图片.webp


第二步:数据库日志收缩:

图片.webp


找到文件类型---切换到 日志。  可以看到可用空间情况----收缩操作选择释放未使用的空间。

图片.webp



B、数据库数据 MDF文件过大 ---清理系统临时表和非业务数据表

b.1通过数据库的报表分析表磁盘占用情况分析


右键----属性---报表----标准报表----按排在前面的表的磁盘使用情况

图片.webp

图片.webp

根据您统计出来的结果进行信息分析,常见的几个大表说明

1、T_BAS_OPRATELOG及T_BAS_OPRATELOGBK---日志表

上机操作日志表,后者为日志归档表,记录各用户在Cloud系统中的所做的业务操作,可使用具有管理员权限的用户进入上机操作日志查看具体信息


2、T_BAS_ATTACHMENT----附件表

,如果单据附件存储选择在数据库中则此表数据会逐渐增长,建议使用文件服务器,将附件存储在文件服务器的目录下


3、T_BF_INSTANCESNAP----业务流程快照表

业务领域配置的反写规则很多,反写快照表,需要把每个反写规则的反写情况都记录下来,如果企业实际场景中这方面的业务量较多,则该表占用磁盘空间会比较大,分为自动和手动两种归档方法,具体如下:


4、其他表

1.1 核算及分配过程

不用看历史期间的核算过程,分配过程。这些表的数据都可以清理:

T_CB_COSTALLOPROREC_H

T_CB_COSTALLOPRORECEXP_H

T_CB_COSTALLOPROSEND_H

T_CB_COSTALLOPROSENDEXP_H

T_CB_EXPALLOPROCESSREC_H

T_HS_EXPENSESPROCESS_H

T_CB_EXPALLOPROCESSSEND_H


T_HS_ACCTGPROCESSENTRY_H-----核算过程明细历史表

T_BF_INSTANCESNAP-----业务流程快照表。

T_HS-EXPENSESPROCESS_H------核算日志信息

T_PLN_MTRLDSDETAILDATA------用来记录MRP运行时物料的明细数据

T_WF_TESTPROCINST-----工作流测试表


具体说明和操作参考:

参考吧唧吧唧大神:金蝶云星空数据库大表清理:https://wenku.my7c.com/article/163073


b.2、临时表清理,历史业务监控消息清理

长时间未做优化,临时表占用空间过大。

第一种方式:推荐方式使用数据瘦身功能

数据瘦身功能首次订阅,administrator登录html5 页面点击添加

图片.webp


图片.webp


双击数据瘦身功能自动统计出可清理的空间。

图片.webp


数据瘦身功能详情参考吧唧吧唧:https://wenku.my7c.com/article/8776


第二种方法方式手工清理----参考软件优化指南,软件安装包help文件夹下

--如果临时表很多,想统计下临时表占用空间,可使用下面的语句进行统计分析:

-- 查看系统所有临时表占用的总空间

select cast(sum(a.total_pages)*8/1024 as varchar)+' MB' total        

from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id

join sys.tables it on p.object_id = it.object_id

where it.name like 'TMP%'

图片.webp



SQLserver手工删临时表的方法(可在业务期间运行,推荐使用该方法删除临时表):

--第一步:删除登记表中的可删除的临时表登记记录

delete from T_BAS_TEMPORARYTABLENAME where FPROCESSTYPE=1 or FCREATEDATE<GETDATE()-1


说明:默认清理今天之前的临时表数据,如果临时表过多,可以分批清理,先清理一个月的临时表

delete from T_BAS_TEMPORARYTABLENAME where FPROCESSTYPE=1 or FCREATEDATE<GETDATE()-30。


清理临时表之后,数据库属性---可用空间会存在一个较大的值。

图片.webp

按日志收缩的方式,对数据库收缩一次。


按下图勾选参数---预留一定比例的空间。执行收缩比较耗时,影响业务使用,需要在空闲时间执行。

图片.webp

最后要调整数据库增长模式:

登录数据库找到对应的数据库实体,点击鼠标右键,打开属性界面,点击进入【文件】,点开自动增长后的按钮,设置增长速率为 30M.

图片.webp


其他:

在数据库表磁盘分析时有其他表空间过大

1、业务流程快照表 T_BF_INSTANCESNAP归档,归档会压缩表数据,如果遇到归档速度慢,推荐升级到cloud7.5.1.202005版本下(补丁:PT-146836)。

业务流程归档详情参考:https://wenku.my7c.com/article/171524



2、供应链日志表

T_IOS_DELINNERBILLLOG(删除内部单据日志),

T_SCM_INVOKEILOG(管易接口调用日志)

通过系统的执行计划列表---供应链自动清理日志数据---定时清理,如果清理速度比较慢,推荐升级到cloud7.5.1.202010版本。专项优化了这两个日志清理速度。


不方便升级的可以手动清理,数据库执行  truncate table  + 表名。

例如: truncate table T_SCM_INVOKEILOG


3、条码日志表

T_UN_BARCODELOG 为优联条码的日志表, 可以升级到cloud7.5.1.202010(补丁:PT-146854),增加定时删除移动条码日志表单(定时)清理日志,升级之后,系统会自动保留一周的日志记录。

也可手动清理。



如果以上方案未能将数据瘦身,业务数据表可以清洗历史数据,将当前的表数据进行清洗和拆分,需要专项服务数据分拆,参考 https://wenku.my7c.com/questions/2438/answers/2368





学习 

金蝶云星空---SQLserver数据中心实体过大问题分析及解决方案

问题:软件使用一段时间,数据库实体增到100G,如何优化1、首先定位是什么文件占用的空间过大,是数据库日志还是数据。登录数据库管理器之...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息