我注意到,对于我们组织和我们的一些 ERA 软件提供商制作的 Crystal Reports,他们倾向于使用物理表作为他们报告的数据集,而不是使用视图或存储过程来收集数据。偶尔我看到报告使用存储过程,然后使用物理表而不是临时表来存储和操作数据集。在这些情况下,报告输出通常以rpt_ap_vendors
类似表格的形式存在,并且在不使用时可能会或可能不会缺少数据。
这些总是按需生成报告的情况,因此这不是报告可以生成一次并提供多次服务的情况,并且不会有多个报告/存储过程同时访问此数据。
像这样的报告使用物理表的原因是什么?这样做有逻辑、技术或性能相关的理由吗?在生成报告时,我个人总是使用带有临时表或更好的派生表的视图和存储过程,以避免涉及清除/删除临时表的额外磁盘读取。
(+) 创建物理表存储报表数据的原因:
报告数据可重复使用。我将 Crystal Reports 或 SharePoint 指向表格,然后不用担心这些工具或我的最终用户访问数据的频率或时间。(好吧,在某种程度上,因为重复读取一个大的报告表会破坏我的缓冲区缓存。)我还可以为不可避免的请求维护一个旧报告的滑动窗口:“你能再次生成去年的报告吗?我找不到我当时提取的 CSV。”
这可能是它在您的网站上以这种方式设置的主要原因。Crystal Reports 可能不够智能,无法在用户分页浏览报表数据或更改报表设置时缓存报表数据。因此,在最坏的情况下,CR 会使用这些操作中的每一个重新生成您的报告——这是一项成本高昂且耗时的操作。对于物理表,它只是根据需要多次重新查询表。
设置报告的权限很容易。你想看这份报告吗?好吧,您所需要的只是读取结果的权限,而不是生成它们。所以在这里,在锁定模式和文件组/表空间中对该表具有一些读取权限。
通过手动缓存报告,您可以控制和隔离生成报告的过程。作为 DBA,您给报告读者更多的行动自由,让您自己更少担心。
(-) 物理报告表的损失:
在以前的雇主那里,一些报告需要几个小时才能运行。月末和季末报告最差(分别为 8 小时和 20 小时)。通过计算结果并将它们存储到永久表中,用户可以随心所欲地查看报告的结果,而无需即时重新计算数字。计算报告的过程在中断时能够重新启动,因此这也有所帮助:在南佛罗里达州的那部分地区,每天都会发生多次第二次持续的停电。虽然公司在恶劣天气的日子里有现场发电机,但并非所有员工都有 UPS。
一些“高级用户”希望能够访问数据并在 Excel 中处理数字,因此他们对报告表具有只读访问权限。