大表讲解.套打.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>表逻辑,一...
点击下载文档
本文2024-09-23 04:12:23发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163806.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章