DB2 基础: 如何从 DB2 UDB 系统编目中获得有用的信息
2010-07-20 00:00:00 来源:WEB开发网可以使用 runstats 实用程序来更新系统编目表中的统计信息,使查询优化过程更容易一些。建议在手动更新任何统计信息之前,先调用 RUNSTATS 命令,以便起始点能够准确地反映当前状态。
关于如何使用可更新编目视图来优化性能的讨论超出了本文的范围。您可以在 DB2 UDB 产品库中发现更多关于这一主题的信息。
控制对系统编目的访问
在创建一个数据库时,系统编目视图上的 SELECT 权限便被授给 PUBLIC(图 6)。如果数据库包含敏感信息,您可能希望限制对编目视图的访问,因为编目描述了数据库中的每一个对象。在从 PUBLIC 撤消 SELECT 权限之后,可以在必要时将该权限授给特定的用户。必须要有 DBADM 或 SYSADM 权限,来授予或撤消系统编目视图上的 SELECT 权限。
图 6. 通过 View Privileges 窗口可以查看或更改所拥有的视图上的权限
考虑一个包含每个表的名称的视图,并且用户的授权 ID 被显式地授予了这些表上的 SELECT 权限。 清单 11 中的代码就创建了这样一个名为 MYSELECTS 的视图。该视图基于另一个视图 SYSCAT.TABAUTH 编目视图。我们指定一个被授权者类型 U(用于用户;也可以是 G,用于组)和一个被授权者值 USER(引用指定运行时授权 ID 的专用寄存器)。并且还将过滤出那些 SELECT 权限标志被设为 YES 的行。
创建 MYSELECTS 视图之后,我们可以构造一条查询,从该视图和 SYSCAT.TABLES 视图中检索数据。这种同时从两个或更多个表中检索数据的查询称作连接(join)。我们的连接将从 MYSELECTS 视图检索表模式和表名,并从 SYSCAT.TABLES 视图检索相应的表类型(例如 表示视图的 V)。在这个例子中,查询返回了一行结果,这对应于刚才创建的视图。授权 ID MELNYK 只被显式地授予该表或视图上的 SELECT 权限。
更多精彩
赞助商链接