空间相关数据字典视图在大量可插入数据库的多租户数据库中的性能下降(文档 ID 2053791.1)

症状:

在大量PDB(可插拔数据库)驻留(例如超过200个)的多租户数据库中,以下字典表报告具有明显不佳的性能:
cdb_free_space,cdb_data_files,cdb_temp_files,cdb_free_space,gv$sort_segment,cdb_undo_extents
 

此外,企业管理器云控制12c在管理 - >存储 - >表空间页面中使用UNION子句引用了其中几个视图,这可能导致页面加载速度缓慢

原因:

由于大量的PDB通常包含大量数据文件,因此某些与空间相关的需要IO数据文件的字典视图可能会耗费时间和cpu。

解决方案:

查询这些视图时遇到性能问题时有几种潜在的解决方法。

潜在解决方案1:更改查询从属进程的数量
当执行对CDB_xxx字典视图的查询时(例如CDB_FREE_SPACE),会生成并行从属进程以查询具有相应DBA_xxx字典视图(例如,DBA_FREE_SPACE)的每个PDB。当多租户数据库包含大量PDB时,查询CDB_xxx字典视图可能会导致生成大量的从进程,并且会在单个PDB中执行大量的DBA_xxx查询。

可以通过隐藏参数_cdb_view_parallel_degree来控制要生成用于CDB_xxx字典查询的单个PDB的从属进程的数量。

为了避免压倒cpu,DBA可以设置_cdb_view_parallel_degree来限制从属进程的数量。将此值设置为小数字(如2或3)可以阻止突然的CPU负载,但会导致查询运行时间更长,因为每个PDB将仅由2或3个从属进程迭代。在这种情况下,请尝试使用不同的_cdb_view_parallel_degree值(如5,10,20,50,100等),并检查查询速度以及是否可以容忍cpu负载。如果CDB_xxx查询的性能受到有限数量的并行从进程的影响,则扩大_cdb_view_parallel_degree可能有助于提高性能。

潜在的解决方案2:收集表统计信息
一些与空间相关的字典视图引用了X$KTFBUE固定表,它返回使用的范围信息。查询此固定表是一项昂贵的任务,但优化程序可能不知道该成本,并可能选择执行计划来重复扫描此表。为了防止选择不理想的计划,使用以下命令显式收集X$KTFBUE固定表的统计信息:
exec dbms_stats.gather_table_stats('SYS','X $ KTFBUE');
 
潜在的解决方案3:更改优化程序计划
有时,通过以下参数更改执行计划有助于提高性能。
_optimizer_adaptive_plans = FALSE
有关此参数的信息,请参阅以下文档。
Adaptive Query Optimization Document 2031605.1


猜你喜欢

转载自blog.csdn.net/qq_21127313/article/details/80611258