PGA管理 sort_area_retained_size

2023年 10月 30日 53.5k 0

   sort_area_retained_size

在上一节中,你了解到sort_area_size初始化参数指定用于排序操作的工作区的最大尺寸。尽管严格来说,sort_area_size初始化参数只是指定了当排序操作发生时使用的内存总量。当获得最后一行并将其包含在工作区中存储的已排序结果中后,仍需将内存仅用作将已排序结果返回给父操作的缓冲区。

 

sort_area_retained_size初始化参数指定(按字节)为这个读缓存保留的内存总量。这个初始化参数仅用于启用了手工PGA管理时。尽管默认值是从sort_area_size初始化参数得到的,在v$parameter视图中其显示为0。

 

要设置这个初始化参数,你必须清楚,如果将它设置为一个比sort_area_size初始化参数低的值,并且结果集无法纳入到保留的内存中,当排序操作完成时数据就会涌入临时段中。即使排序操作本身是完全在内存中执行的,也可能发生这种情况!因此,为了更好的性能而使用默认值是明智的。只有当系统真的在内存上捉襟见肘时,才有理由设置这个参数。

 

sort_area_retained_size初始化参数是动态的,并且可以在实例和会话级别进行修改。在12.1版本的多租户环境下,也可以在PDB级别进行设置。

 

  hash_area_size

如果启用了手工PGA管理,hash_area_size初始化参数指定(按字节)用于散列联接的工作区的大小。要清楚这是一个工作区的大小,而一个单独的会话可能会分配多个工作区。这意味着用于整个系统的PGA总量取决于分配的工作区的数量而非会话的数量。

 

默认值是sort_area_size初始化参数值的两倍。同样,给出具体的建议值非常困难。不管怎样,对于多达4MB的值,至少应该将其设置为sort_area_size初始化参数值的四到五倍。如果不这样,查询优化器可能会对散列联接的成本评估过高,并因此倾向于为它们使用合并联接。

 

同样,工作区并非总是完全分配的。换句话说,通过hash_area_size初始化参数指定的值只是一个限制值。指定一个比实际需要大的值不一定会有问题。

 

hash_area_size初始化参数是动态的,并且可以在实例和会话级别进行修改。在12.1版本的多租户环境下,也可以在PDB级别进行设置。

 

  bitmap_merge_area_size

如果启用了手工PGA管理,bitmap_merge_area_size初始化参数指定(按字节)用于合并与位图索引关联的位图的工作区大小。默认值是1MB。再说一次,几乎不可能给出关于建议值的一般性建议。很明显,如果使用了很多位图索引(例如,由于星型转换的原因,参见第14章),则更大的值可能会改进性能。

 

bitmap_merge_area_size初始化参数是静态参数,并且不能在系统或会话级别进行修改。因此必须要重启数据库实例才能设置它。在12.1版本的多租户环境下,不可以在PDB级别进行设置。

 

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论