2.2 SGA – The Shared Pool 共享池 (page 53)
The shared pool is one of the most critical memory components particularly when it comes to how SQL executes. The way you write SQL doesn’t just effect the individual SQL statement itself. The combination of all SQL that executes against the database has a tremendous effect on overall performance and scalability due to how it affects the shared pool.
共享池是最重要的内存组件,特别是它关乎SQL如何执行。你书写SQL的方式不仅只是影响SQL语句本身。在数据库上运行的所有SQL的组合(整体)极大的影响全局性能和扩展性,由于它极大的影响共享池。
The shared pool is where Oracle caches program data. Every SQL statement executed will have its
parsed form stored in the shared pool.
The area within the shared pool where statements are stored is called the library cache. Even before any statement is parsed, Oracle will check the library cache to see if that same statement already exists there. If it does exist, then Oracle will retrieve and use the cached information instead of going through all the work to parse the same statement again. The same thing goes for any PL/SQL code you run. The really nifty
part is that no matter how many users may want to execute the same SQL statement, Oracle will typically only parse that statement once and share it among all users who want to use it. Maybe you can see where the shared pool gets its name.
共享池是Oracle缓存程序数据的地方。每条执行过的SQL语句将会把它的解析形式存储在共享池中。在共享池中存放语句的区域称之为库缓存。
只要之前有解析语句,Oracle将检查库缓存,看是否有相同的语句已经存在。如果存在,Oracle将检索和使用缓存中的信息,而不是再做一遍相同语句的解析工作。对于你运行的任何PL/SQL也是一样的(原理)。真正漂亮的
部分是:不论执行相同SQL语句的用户有多少,Oracle将经典的只解析那条语句一次再把它共享给所有要使用它的用户。你可能能明白“共享池"名字的含义了吧。
SQL statements you write aren’t the only things stored in the shared pool. The system parameters
Oracle uses will be stored in the shared pool as well. In an area called the dictionary cache, Oracle will also store information about all the database objects.
In general, Oracle stores pretty much everything you could think of in the shared pool. As you can imagine, that makes the shared pool a very busy and important memory component.
你所写的SQL语句不是存放在共享池中的唯一东西。Oracle使用的系统参数也会存放在共享池中。在(共享池中)一处被称之为字典缓存的区域,Oracle也将存储所有数据库对象的信息(在其中)。
一般而言,Oracle把相当多的,你该能想到的,所有东西存入共享池中。可以想象,这使得共享池成为非常忙且重要的内存组件。
Since the memory area allocated to the shared pool is finite, statements that originally get loaded
may not stay there for very long as new statements are executed. A Least Recently Used (LRU) algorithm regulates how objects in the shared pool are managed.
To borrow an accounting term, it’s similar to a FIFO (First In First Out) system. The basic idea is that statements that are used most frequently and most currently are what are retained. Unlike a straight FIFO method, how frequently the same statements are used will effect how long they remain in the shared pool. If you execute a SELECT statement at 8 A.M.and then execute the same statement again at 4 P.M., the parsed version that was stored in the shared pool at 8 A.M. may not still be there. Depending on the overall size of the shared pool and how much activity it has between 8 A.M. and 4 P.M., as Oracle needs space to store the latest information throughout the day, it will simply reuse older areas and overlay newer information into them. But, if you execute a statement every few seconds throughout the day, the frequent reuse will cause Oracle to retain that information over something else that may have originally been stored later than your statement but hasn’t been executed frequently, or at all, since it was loaded.
由于分配给共享池的内存区是有限的,最初装载的语句可能不会保持在其中,因为新的语句要执行。有一个“最近最少使用”算法控制着如何管理共享池中的对象。
借用一会计术语,它类似于FIFO(先进先出)系统。基本的思想是:保持使用的最多,最近的语句。不同于直接的FIFO方法,同一语句的使用频率将影响到它在共享池中的保持时间。如果你在早上8点执行一SELECT语句,然后在下午4点执行相同的SQL语句,早上8点解析的(SQL语句)版本可能不会存在了。依赖于共享池的整体大小和早上8点到下午4点期间的活动数量,Oracle需要空间存储一天中的最近的信息,它将简单的重用原有的区域和覆盖新信息于其上。但是,如果你在一天中每隔几秒就执行一次(相同的)语句,反复的重用将使得Oracle保持那信息,相比其它那些在你的语句之后(执行)最初被存储但是至装载后,不经常或全然不执行的语句而言。
One of the things you need to keep in mind as you write SQL is that in order to use the shared pool
most efficiently, statements need to be shareable.
If every statement you write is unique, you basically defeat the purpose of the shared pool. The less shareable it is, the more effect you’ll see to overall response times. I’ll show you exactly how expensive parsing can be in the next section.
对于书写SQL而言,你需要记住的一件事是:为了最有效的使用共享池,语句必须是可共享的。
如果你所写的每条语句都是唯一的,你根本性的违背了共享池的(设计)目的。语句的共享性越差,越会影响到你所见的全局响应时间。下一节我将为你准确的展现解析操作如何是这般“昂贵”。
分享到:
相关推荐
2. **RAC优化(Chapter 23 Optimizing RAC)** Real Application Clusters (RAC)允许多个实例共享同一数据库,提高可用性和性能。优化RAC涉及到配置全局缓存服务、负载均衡、故障切换策略,以及管理网络和集群资源...
市场营销计划书.docx
电缆叉绞机sw18_三维3D设计图纸.zip
(WORD) 土木工程专业毕业设计开题报告 办公楼设计 开题报告.doc
内容概要:本文详细介绍了云南某矿区采用碳捕集与电转气(P2G)技术进行综合能源系统优化调度的研究。通过实例展示了如何利用瓦斯、余热等伴生能源,结合碳捕集和P2G技术,实现了矿区能源系统的高效利用和低碳转型。文中提供了具体的Python代码示例,如瓦斯热值转换、碳捕集与P2G的耦合约束、阶梯式碳机制等,展示了技术细节和优化效果。此外,还讨论了风光消纳率提升、碳交易收益以及系统总成本降低等方面的内容。 适合人群:从事能源系统优化、碳捕集技术和电转气技术研发的专业人士,以及对低碳经济感兴趣的科研人员。 使用场景及目标:适用于希望了解和应用碳捕集与电转气技术进行矿区能源系统优化的企业和技术团队。目标是提高能源利用效率,减少碳排放,降低成本。 其他说明:文章不仅提供了理论模型和算法,还包括了实际项目中的代码实现和优化结果,有助于读者更好地理解和应用相关技术。
卧式长轴切割机sw20可编辑_三维3D设计图纸_三维3D设计图纸.zip
基于单片机protues仿真制作的超高精度电参数测试(仿真图、源代码) 这次设计的课题,智能电参数测试电路是基于单片机,控制外部器件进行操作的。利用protues软件进行局部电路的描绘。然后在使用Keil4软件针对protues仿真部分作出代码控制程序,经过编译,修改调试生成hex文件。最后再把.hex文件加载到protues中ATC80C52单片机芯片系统中,运行硬件仿真电路,做完局部仿真后。最后将部分电路进行模块化处理。最后整合在一块,通过外部中断切换显示各个模块测试的结果数据。 1、单片机仿真; 2、液晶屏或者数码管显示; 3、电流、电压、电阻测量和显示; 4、超高精度电参数测试; 5、仿真图、源代码;
内容概要:本文详细介绍了如何利用西门子1200PLC进行脉冲除尘系统的控制。首先描述了硬件配置,包括PLC主模块、数字量扩展模块以及电磁阀组的连接方式。接着深入探讨了核心控制逻辑的实现,采用SCL语言编写控制程序,实现了分组控制、定时器配置、故障诊断等功能。文中还提供了具体的代码示例,展示了如何通过定时器、脉冲发生器等组件精确控制脉冲阀的工作周期和顺序,确保除尘系统的高效运行。此外,文章分享了一些实际调试过程中遇到的问题及其解决方案,如脉冲宽度设置不当导致的空压机过载、电磁阀内部触点粘连等问题,并提出了相应的预防措施。 适合人群:从事工业自动化领域的工程师和技术人员,特别是熟悉PLC编程和脉冲控制系统的从业者。 使用场景及目标:适用于需要设计和实施高效脉冲除尘控制系统的工厂环境,旨在提高除尘效率,降低能耗,延长设备使用寿命。通过学习本文,读者能够掌握如何使用西门子1200PLC实现复杂的脉冲控制逻辑,解决实际工程中可能遇到的各种问题。 其他说明:文章不仅提供了详细的代码示例,还强调了实际应用中的注意事项和调试技巧,帮助读者更好地理解和应用所学知识。
汽车开关测试台sw23_三维3D设计图纸_三维3D设计图纸.zip
双面锯片磨sw18可编辑_三维3D设计图纸_三维3D设计图纸.zip
模块化除臭生物箱sw18可编辑_三维3D设计图纸_三维3D设计图纸.zip
内容概要:本文介绍了基于矢量延迟锁定环(VDLL)的GPS信号跟踪算法的MATLAB仿真实现。首先,通过生成带有多普勒频移和码相位抖动的GPS中频信号,模拟真实场景。接着,详细阐述了VDLL的核心实现,包括超前即时滞后三路相关、误差计算、状态预测和卡尔曼滤波的应用。文中强调了环路滤波器带宽的自适应调整和动态应力测试的重要性,并展示了仿真结果,证明VDLL在高动态环境下的优越性能。最后,提供了完整的代码包和设计文档,涵盖信号生成、本地信号发生器、相关器组、EKF实现、性能评估和可视化工具等多个模块。 适合人群:从事GPS信号处理、无线通信系统设计的研究人员和技术开发者,尤其是对高动态环境下的信号跟踪感兴趣的工程师。 使用场景及目标:适用于需要提高GPS信号跟踪稳定性和精度的场合,如车载导航、航空导航等领域。目标是通过矢量化处理和动态调整,增强系统的抗干扰能力和跟踪稳定性。 其他说明:文中提到的关键技术和实现细节对于理解和优化GPS信号跟踪算法非常有价值。此外,提供的代码包和设计文档可以作为进一步研究的基础。
数据说明: 该数据集包含8种巴基斯坦芒果的图像2200张。在提出的数据集上进行实验,对收获的芒果进行自动分类和分级,以帮助农民及时交付高质量的芒果供出口,并使用卷积神经网络实现了高准确性。 研究人员和学生可以使用这个数据集来开发、测试和评估不同的计算机视觉算法,为改善农业部门作出贡献。所提供的数据集可被视为测试和比较不同技术水平性能的基准。
时间轮源码
内容概要:本文详细介绍了光伏混合储能系统的虚拟同步发电机(VSG)并网仿真模型。该系统由VSG控制模块、光伏PV模块、蓄电池以及超级电容组成。VSG通过有功-频率环和无功-电压环进行精确控制,确保系统稳定运行。光伏模块采用MPPT扰动观察法跟踪最大功率点,蓄电池提供稳定的恒功率输出,超级电容则用于快速响应瞬态负载变化。文中展示了各个模块的核心代码逻辑及其在仿真环境中的表现,强调了参数整定对系统性能的影响。 适合人群:电力电子工程师、新能源研究人员、仿真建模专家。 使用场景及目标:适用于研究光伏混合储能系统的并网控制策略,优化储能设备的协同工作,提高系统的稳定性和响应速度。目标是通过仿真验证系统在各种工况下的性能,为实际应用提供理论支持和技术指导。 其他说明:文章提供了丰富的代码片段和仿真案例,帮助读者深入理解各模块的工作原理和相互关系。同时,作者分享了许多调试经验和常见错误,有助于新手更快掌握相关技术。
电大土木工程毕业设计施工组织设计_图文.doc
报价单封面建筑土木工程.doc
内容概要:本文详细介绍了如何通过485通讯实现西门子S7-200 SMART PLC与三台台达DT330温控器的通信,并结合昆仑通态触摸屏实现温度监控与设定。主要内容涵盖硬件连接、温控器设置、PLC程序设计(包括初始化、轮询读取温度、中断接收处理、设置温控器温度)、触摸屏设置及常见问题解决方法。文中还特别强调了Modbus RTU轮询机制的应用及其重要性。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是那些需要实现PLC与温控器通信的人群。 使用场景及目标:适用于需要精确控制和监测温度的工业环境,如生产车间、实验室等。目标是提供一种稳定可靠的技术方案,确保不同设备间能够高效通信,从而实现精准的温度控制。 其他说明:文中提供的具体代码片段和配置指南有助于读者更好地理解和实施该项目。此外,作者还分享了一些调试过程中遇到的问题及解决方案,帮助读者规避潜在的风险。
安卓app开发学习笔记
TARY盘上料机sw23可编辑_三维3D设计图纸.zip