我是靠谱客的博主 阳光荷花,最近开发中收集的这篇文章主要介绍mysql pga_PGA概述,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PGA是服务器进程保存数据和控制信息的内存区域。

PGA的内容:

1 私有SQL区域:包括绑定信息和运行时内存结构。执行 sql 语句的每个会话均有私有 sql 区域,每个提交相同 sql 语句的用户都有私有 sql区域。因此,多个私用 sql 区域可以与相同的共享 sql 区域相关。私有SQL区域分成以下两部分:

永久内存区域:存放相同SQL语句多次执行时都需要的游标信息,比如绑定变量信息、数据类型转换信息等。这部分内存只有在游标被关闭时才会被释放。

运行时区域:在处理SQL语句时的第一步就是要创建运行时区域,这里存放了当SQL语句运行时所使用的一些信息。对于DML(INSERT、UPDATE、DELETE)语句来说,SQL语句执行完毕就释放该区域;而对于查询语句(SELECT)来说,则是在所有数据行都被获取或者取消查询之后被释放。

游标和 sql 区域:用户进程可以分配的私有 sql 区域由初始化参数OPEN_CURSORS 所限定。

2 会话区域:保存会话的变量(登陆信息等)和其他与会话相关的信息。

PGA的自动管理

在Oracle9i之前,主要通过设置*_area_size来管理PGA的使用。但是,设置的参数值对所有登录到数据库的session都生效。在数据库实际运行过程中,总有些session需要的PGA多,而有些session需要的PGA少。从9i起引入了自动PGA管理。workarea_size_policy=auto时,启用PGA自动管理;workarea_size_policy=manul时,禁用PGA自动管理,沿用9i之前的方式。          DBA可以根据数据库的负载情况估计所有session大概需要消耗的PGA的内存总和,然后把该值设置为初始化参数pga_aggregate_target的值即可。Oracle会按照每个session的需要为其分配PGA,同时会尽量维持整个PGA的内存总和不超过该参数所定义的值。    设置了pga_aggregate_target以后,所有的*_area_size就将被忽略。

不过遗憾的是,Oracle 9i下的PGA自动管理只对专用连接方式有效,对共享连接方式无效。Oracle 10g以后对两种连接方式都有效。

最后

以上就是阳光荷花为你收集整理的mysql pga_PGA概述的全部内容,希望文章能够帮你解决mysql pga_PGA概述所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部