shared pool latch相关描述

shared pool latch相关描述

The shared pool latch is used to protect critical operations when allocating
and freeing memory in the shared pool.
If an application makes use of literal (unshared) SQL then this can severely
limit scalability and throughput. The cost of parsing a new SQL statement is
expensive both in terms of CPU requirements and the number of times the library
cache and shared pool latches may need to be acquired and released. Before Oracle9,
there was just one such latch for the entire database to protect the allocation of
memory in the library cache. In Oracle9, multiple children were introduced to relieve
contention on this resource.

减少shared pool latch方法

Avoid hard parses when possible, parse once, execute many.
Eliminate  literal SQL so that same sql is shared by many sessions.
Size the shared_pool adequately to avoid reloads
Use of MTS (shared server option) also greatly influences the shared pool latch.

查询未绑定sql

--9i
SELECT substr(sql_text,1,40) "SQL" ,
          count (*) ,
          sum (executions) "TotExecs"
     FROM v$sqlarea
    WHERE executions < 5
    GROUP BY substr(sql_text,1,40)
   HAVING count (*) > 30
    ORDER BY 2
   ;
 
--10g及其以后版本
SET pages 10000
SET linesize 250
column FORCE_MATCHING_SIGNATURE format 99999999999999999999999
WITH c AS
      ( SELECT  FORCE_MATCHING_SIGNATURE,
               COUNT (*) cnt
      FROM     v$sqlarea
      WHERE    FORCE_MATCHING_SIGNATURE!=0
      GROUP BY FORCE_MATCHING_SIGNATURE
      HAVING   COUNT (*) > 20
      )
      ,
      sq AS
      ( SELECT  sql_text                ,
               FORCE_MATCHING_SIGNATURE,
               row_number() over (partition BY FORCE_MATCHING_SIGNATURE ORDER BY sql_id DESC ) p
      FROM     v$sqlarea s
      WHERE    FORCE_MATCHING_SIGNATURE IN
               ( SELECT FORCE_MATCHING_SIGNATURE
               FROM    c
               )
      )
SELECT   sq.sql_text                ,
          sq.FORCE_MATCHING_SIGNATURE,
          c.cnt "unshared count"
FROM     c,
          sq
WHERE    sq.FORCE_MATCHING_SIGNATURE=c.FORCE_MATCHING_SIGNATURE
AND      sq.p                       =1
ORDER BY c.cnt DESC

查询数据库整体解析情况

select to_char(100 * sess / calls, '999999999990.00' ) || '%' cursor_cache_hits,
to_char(100 * (calls - sess - hard) / calls, '999990.00' ) || '%' soft_parses,
to_char(100 * hard / calls, '999990.00' ) || '%' hard_parses
from ( select value calls from v$sysstat where name = 'parse count (total)' ),
( select value hard from v$sysstat where name = 'parse count (hard)' ),
( select value sess from v$sysstat where name = 'session cursor cache hits' );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:在Verilog中,寄存器(register)是用来暂时存放参与运算的数据和运算结果的变量。一个变量声明为寄存器时,它既可以被综合成触发器,也可能被综合成Latch,甚至是wire型变量。但是大多数情况下我们希望它被综合成触发器,但是有时候由于代码书写问题,它会被综合成不期望的Latch结构。\[1\] 引用\[2\]:透明锁存器或电平敏感锁存器是一种特殊的锁存器结构。在透明锁存器中,当时钟信号为1时,数据通过D锁存器流到输出Q;当时钟信号为0时,输出Q保持原来的值不变。透明锁存器的电路结构可以使用RS锁存器来实现。\[2\] 根据上述引用内容,可以使用以下Verilog代码描述一个透明锁存器(电平敏感锁存器): ```verilog module transparent_latch(clk, d, q, qn); input clk, d; output q, qn; wire r, s; and and1 (s, d, clk); and and2 (r, ~d, clk); RS_latch rs (s, r, q, qn); endmodule ``` 请注意,上述代码中的RS_latch是一个RS锁存器的实例,用于实现透明锁存器的功能。\[2\] 引用\[3\]中提到了一些避免生成Latch的方法,包括尽量使用assign语句描述组合逻辑电路、避免不完整的if-else或case语句,以及在组合逻辑块中给输出变量赋初值等。这些方法可以帮助开发者规避生成Latch的情况。\[3\] #### 引用[.reference_title] - *1* [verilog latch](https://blog.csdn.net/u011329967/article/details/109203680)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [锁存器、触发器、寄存器的关联与区别及其相应的verilog描述](https://blog.csdn.net/gsp12356/article/details/115959382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值