[20240306]奇怪的高逻辑读.txt --//生产系统遇到一条sql语句出现高逻辑读的情况,做一个记录并且分析。 1.环境: SYS@127.0.0.1:9014/ywdb> @ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SYS@127.0.0.1:9014/ywdb> @ sql_id 1f52yqf7s5bs3 --SQL_ID = 1f52yqf7s5bs3 Select sum ( zjje ) From zy_fymx Where yzxh =:1 And zyh =:2 ; 2.分析: SYS@127.0.0.1:9014/ywdb> @ sqlhh 1f52yqf7s5bs3 100 time unit : millisecond BEGIN_INTERVAL_TIME INST_ID SQL_ID PLAN_HASH_VALUE EXECUTIONS ELA_MS_PER_EXEC CPU_MS_PER_EXEC ROWS_PER_EXEC LIOS_PER_EXEC BLKRD_PER_EXEC IOW_MS_PER_EXEC AVG_IOW_MS CLW_MS_PER_EXEC APW_MS_PER_EXEC CCW_MS_PER_EXEC ------------------- ---------- ------------- --------------- ---------- --------------- --------------- ------------- ------------- -------------- --------------- ----------- --------------- --------------- --------------- 2024-03-05 16:00:23 1 1f52yqf7s5bs3 3005060615 5 73483 9441 1.0 1202877 41571 51731 1.2 15635 0 0 2024-03-05 16:00:23 2 1f52yqf7s5bs3 3005060615 2 111427 8610 0.5 250879 57754 98004 1.7 7547 0 0 2 rows selected. --//注:参数2=100,表示查询100天的历史记录(实际上设置仅仅保留40天),视图dba_hist_sqlstat。 --//仅仅在awr记录几次逻辑读很高的情况,出现在昨天下午16-17点。 SYS@127.0.0.1:9014/ywdb> @ dpc 1f52yqf7s5bs3 '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID 1f52yqf7s5bs3, child number 0 ------------------------------------- Select sum ( zjje ) From zy_fymx Where yzxh =:1 And zyh =:2 Plan hash value: 3005060615 ------------------------------------------------------------------------------------------------ | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | ------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | | | 5 (100)| | | 1 | SORT AGGREGATE | | 1 | 17 | | | |* 2 | TABLE ACCESS BY INDEX ROWID| ZY_FYMX | 1 | 17 | 5 (0)| 00:00:01 | |* 3 | INDEX RANGE SCAN | I_ZY_FYMX_YZXH | 4 | | 3 (0)| 00:00:01 | ------------------------------------------------------------------------------------------------ Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$1 / ZY_FYMX@SEL$1 3 - SEL$1 / ZY_FYMX@SEL$1 Peeked Binds (identified by position): -------------------------------------- 1 - (NUMBER): 2010583299 2 - (NUMBER): 20062047 Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter("ZYH"=:2) 3 - access("YZXH"=:1) Note ----- - Warning: basic plan statistics not available. These are only collected when: * hint 'gather_plan_statistics' is used for the statement or * parameter 'statistics_level' is set to 'ALL', at session or system level --//执行计划正常,没有出现隐式转换. SYS@127.0.0.1:9014/ywdb> @ desczz pppppp_hhh.zy_fymx yzxh,zyh eXtended describe of pppppp_hhh.zy_fymx DISPLAY TABLE_NAME OF COLUMN_NAME INFORMATION. INPUT OWNER.TABLE_NAME <filters> SAMPLE : @ desczz TABLE_NAME column_name1,column_name2 IF NOT INPUT <filters> ,USE "" . Owner Table_Name SAMPLE_SIZE LAST_ANALYZED Col# Column Name Null? Type NUM_DISTINCT Density NUM_NULLS HISTOGRAM NUM_BUCKETS Low_value High_value ---------- -------------------- ----------- ------------------- ---- -------------------- ---------- -------------------- ------------ -------------- ---------- --------------- ----------- --------- ----------- pppppp_hhh ZY_FYMX 27324487 2023-12-11 10:58:41 2 ZYH NOT NULL NUMBER(18,0) 58240 .00001717033 0 1 670168 40025105 27014089 2023-12-11 10:58:41 23 YZXH NUMBER(18,0) 7678464 .00000013023 310398 1 0 2009800527 2 rows selected. --//注:YZXH表示医嘱序号,zyh表示住院号,选择使用YZXH字段索引理论讲效率较高(Density更小). SYS@127.0.0.1:9014/ywdb> @ bind_cap 1f52yqf7s5bs3 '' SQL_ID CHILD_NUMBER WAS NAME POSITION MAX_LENGTH LAST_CAPTURED DATATYPE_STRING VALUE_STRING ------------- ------------ --- ---------------------------------------- ---------- ---------- ------------------- --------------- ------------- 1f52yqf7s5bs3 0 YES :1 1 22 2024-03-06 09:18:52 NUMBER 2010665119 YES :2 2 22 2024-03-06 09:18:52 NUMBER 20062485 --//我尝试带入以上参数执行逻辑读并没有这么高,最多5,6个逻辑读。为什么昨天出现异常情况,理论讲这条语句不会出现awr报表中, --//平时执行逻辑读以及次数都不是很高,查看历史绑定变量的值: SYS@127.0.0.1:9014/ywdb> @ bind_cap_awr 1f52yqf7s5bs3 '' @bind_cap_awr sql_id [column] 1 row selected. SNAP_ID INSTANCE_NUMBER SQL_ID WAS LAST_CAPTURED NAME POSITION MAX_LENGTH DATATYPE_STRING VALUE_STRING ---------- --------------- ------------- --- ------------------- ---- ---------- ---------- --------------- ------------ 32574 2 1f52yqf7s5bs3 YES 2024-03-05 16:14:02 :1 1 22 NUMBER 0 2 :2 2 22 NUMBER 978498 1 2024-03-05 16:46:08 :1 1 22 NUMBER 2010529840 1 :2 2 22 NUMBER 20061723 --//噢,参数1有带入0的情况。导致出现查询使用yzxh索引返回记录太多,再通过过滤zyh=:2效率很低。 SYS@127.0.0.1:9014/ywdb> @ cntgx pppppp_hhh.zy_fymx yzxh yzxh=0 select count(*) , yzxh from pppppp_hhh.zy_fymx where yzxh=0 group by yzxh order by 1 desc; COUNT(*) YZXH ---------- ---------- 3103564 0 SYS@127.0.0.1:9014/ywdb> @ cnt pppppp_hhh.zy_fymx select count(*) from pppppp_hhh.zy_fymx; COUNT(*) ---------- 29728335 --//3103564/29728335 = .1044 占10%的记录。没有办法很好的解决这个问题。 3.总结: --//1.通过sql profile来使用zyh索引,但是大部分查询yzxh>0的,而且大于0的选择性很好。这样导致大部分的情况下执行效率偏低。 --//2.也可以通过sql profile来使用zyh索引以及yzxh索引,走位图与,这样情况与方法1类似,也许逻辑读小一些.对于yzxh=0的情况效率 --//比方法1要低. --//3.建立复合索引YZXH+zyh,磁盘空间有点浪费,感觉有点多余。 --//4.当使用参数0时,不要使用绑定变量,这样要修改程序代码,并且在这个字段YZXH上要建立直方图。 --//总之,在我看来方法4最好,这样可以兼顾各种情况。向这种类似的修改提交开发基本选择不愿意改动代码。所以我为什么认为国内 --//的许多IT项目都是豆腐渣的原因.
[20240306]奇怪的高逻辑读.txt
来源:这里教程网
时间:2026-03-03 19:40:36
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle数据恢复—Oracle数据库意外删表?教您如何恢复Oracle数据?
- 19c补丁后oracle属主变化,导致不能识别磁盘组
19c补丁后oracle属主变化,导致不能识别磁盘组
26-03-03 - 数据库管理-第154期 Oracle Vector DB & AI-06(20240223)
- 某DG库磁盘IO性能问题之根因探究
某DG库磁盘IO性能问题之根因探究
26-03-03 - 豪华纯电第一股,迎来“繁花”开放
豪华纯电第一股,迎来“繁花”开放
26-03-03 - 欧菲斯冲刺IPO、齐心集团聚焦AI,数字化采购企业集体发力
欧菲斯冲刺IPO、齐心集团聚焦AI,数字化采购企业集体发力
26-03-03 - 从通用大模型到行业大模型,云厂商上演“宫斗剧”
从通用大模型到行业大模型,云厂商上演“宫斗剧”
26-03-03 - 吉时利Keithley2400数字源表
吉时利Keithley2400数字源表
26-03-03 - DG的三种应用机制
DG的三种应用机制
26-03-03 - 数据库管理-第153期 Oracle Vector DB & AI-05(20240221)
