大表讲解.套打.T_BOS_PRINTTASKDETAIL

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

大表讲解.套打.T_BOS_PRINTTASKDETAIL

【概述】大表讲解T_BOS_PRINTTASKDETAIL 存储套打的页面数据,目前系统针对套打生成的页面数据,会存储在当前表中 【功能细则】 <0>表逻辑,一条记录存储一页,支持查询指定范围的页面 T_BOS_PRINTTASKENTRY——打印任务存储表 T_BOS_PRINTTASKDETAIL——打印数据表 一条打印任务(T_BOS_PRINTTASKENTRY)会有多个套打页面(T_BOS_PRINTTASKDETAIL) ![Image_20230129115246.webp](/download/01004f5bb9b9fbb0493bb15a8cc01e1e248f.webp) <1>后台打印(T_BOS_PRINTTASKENTRY FPERSISTENTTYPE == 0) 场景:由于打印是实时计算的,针对大规模数据场景,会占用系统资源而且计算过久,一般的建议创建后台打印任务 ![Image_20230129115551.webp](/download/0100af3e121cfe5a47eba09f9adf166803ad.webp) 概念:在生成后台任务后,会写入T_BOS_PRINTTASK表, 而后根据套打设置生成多个打印任务,打印任务的类型(T_BOS_PRINTTASKENTRY FPERSISTENTTYPE == 0) ```sql select entry.fentryid,entry.fpersistenttype,task.* from t_bos_printtaskentry entry left join t_bos_printtask task on entry.fid = task.fid --left join t_bos_printtaskdetail detail on detail.fentryid = entry.fentryid where entry.fpersistenttype = 0 ``` ![Image_20230129115927.webp](/download/0100f614b723aad84203900832418659980b.webp) 清理说明:后台打印任务生成的页面会一直存在数据库中,直到后台打印任务删除 <2>界面直接预览打印(T_BOS_PRINTTASKENTRY FPERSISTENTTYPE == 1) 说明:在生成超过100页时,会生成一个临时的打印任务在后台,避免生成超大内存把服务器资源用尽 概念:在套打时打到存储到需要持久化的阈值,就会生成一个打印任务(T_BOS_PRINTTASKENTRY FPERSISTENTTYPE == 1) ```sql select entry.fentryid,entry.fpersistenttype,detail.* from t_bos_printtaskentry entry --left join t_bos_printtask task on entry.fid = task.fid left join t_bos_printtaskdetail detail on detail.fentryid = entry.fentryid where entry.fpersistenttype = 1 ``` 清理说明:一般的系统会在两个时间点删除,一是在操作打印的界面关闭时删除(如关闭采购订单列表),但是存在场景是直接关闭浏览器,不会关闭视图无法监听的情况;二是增加了一个执行计划,每天清理界面直接预览打印(FPERSISTENTTYPE == 1)的页面 ![Image_20230129121012.webp](/download/01007c3a9fc75a014039909924a1279f725f.webp) <3>分页账表分本打印(T_BOS_PRINTTASKENTRY FPERSISTENTTYPE == 2) 说明:略过,与界面打印类似,暂时可理解仅通过类型跟界面打印区分 【大表原因分析】 <1>定位是后台打印还是界面直接预览打印(T_BOS_PRINTTASKENTRY FPERSISTENTTYPE) <2>后台打印导致大表:清理后台打印的任务记录 <3>界面直接预览打印导致大表:检查执行计划是否正常运行 <4>存在场景,打印数据没有关联的打印任务(历史脏数据),通过以下脚本删除 ```sql delete detail from t_bos_printtaskdetail detail left join t_bos_printtaskentry entry on detail.fentryid = entry.fentryid where entry.fentryid is null ``` <5>存在场景,客户数据量过大,执行计划过久没有执行,因为是大对象,数据库删除的时候非常慢,导致执行计划一直执行不成功; 历史版本删除没有分批删除,新版本做了分批删除PT-146939 [8.1.0.20230309],31、功能改进:套打删除打印记录性能优化 如果还不会升级,可以使用以下脚本,直接进行表数据清理 ```sql --0)查询今天前一天 select dateadd(day, -1, getdate()) --1)查询非批量打印的打印任务 或者 近一天的批量打印任务数量 declare @notDeleteCnt int; select @notDeleteCnt = count(1) from t_bos_printtaskentry where fpersistenttype <> 1 or (fpersistenttype =1 and fcreatedate <= dateadd(day, -1, getdate())) if @notDeleteCnt = 0 begin truncate table t_bos_printtaskdetail select 'delete printdate.' --print 'delete printdate.' end ```

大表讲解.套打.T_BOS_PRINTTASKDETAIL

【概述】大表讲解T_BOS_PRINTTASKDETAIL存储套打的页面数据,目前系统针对套打生成的页面数据,会存储在当前表中【功能细则】<0>表逻辑,一...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息