Ben*_*cka 2 best-practices view reporting temporary-tables
我注意到,对于由我们的组织和我们的一些 ERA 软件提供商制作的 Crystal Reports,他们倾向于使用物理表作为他们报告的数据集,而不是使用视图或存储过程来收集数据。偶尔我看到报告使用存储过程,然后使用物理表而不是临时表来存储和操作数据集。在这些情况下,报告输出通常以类似rpt_ap_vendors或类似的表格形式存在,并且在不使用时可能没有数据,也可能没有数据。
这些总是按需生成报告的情况,因此这不是可以生成一次并多次提供报告的情况,并且没有多个报告/存储过程同时访问此数据。
像这样的报告使用物理表有什么理由?这样做是否有逻辑、技术或性能相关的原因?在生成报告时,我个人一直使用带有临时表或更好的派生表的视图和存储过程,以避免涉及清除/删除临时表的额外磁盘读取。
(+) 创建物理表存储报表数据的原因:
报告数据是可重用的。我将 Crystal Reports 或 SharePoint 指向表格,然后不用担心这些工具或我的最终用户访问数据的频率和时间。(嗯,在某种程度上,因为重复读取大型报告表会破坏我的缓冲区缓存。)我还可以为不可避免的请求维护一个旧报告的滑动窗口:“你能再次生成去年的报告吗?我找不到我当时提取的 CSV。”
这可能是它在您的站点上以这种方式设置的主要原因。Crystal Reports 可能不够智能,无法在用户浏览报表数据或更改报表设置时缓存报表数据。因此,在最坏的情况下,CR 会使用这些操作中的每一个来重新生成您的报告——这是一项成本高昂且耗时的操作。对于物理表,它只是根据需要多次重新查询表。
对报告设置权限很容易。你想看这份报告吗?好吧,您所需要的只是读取结果的权限,而不是生成它们。所以在这里,在锁定的模式和文件组/表空间中对该表有一些读取权限。
通过手动缓存报告,您可以控制和隔离生成报告的过程。作为 DBA,您可以让您的报告读者有更多的行动自由,而您自己则不必担心。
(-) 物理报告表的损失:
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |