關於一個網友最佳化問題的解決
http://www.itpub.net/thread-1074410-1-1.html
急求解答:兩個相同的資料庫的執行計劃差別怎麼那麼大,附帶執行計劃!!!
最近工作中遇到一個很鬱悶的問題:
前提:
我一個培訓環境,一個測試環境,均是AIX 5.3的作業系統,2個CPU ,6G記憶體,測試環境是1個月前透過rman方式將資料從培訓環境中匯入的
檢查確認引數檔案保持一致,表結構一致,資料量差別非常小
問題現象:
一個sql語句在兩個配置和表結構相同的資料庫中的執行計劃不同,而且差別太大,查詢結果出來後一個是5秒,一個幾分鐘
sql語句:
select *
from (
select distinct b.user_name,
a.full_name,
'N' selected,
b.department_description,
b.organization_id
from cux_user_name_v a, cux_department_user_v b
where a.user_name = b.user_name(+)
)
where
user_name in
('EAM_SETUP', 'HAN.XIANGXU', 'XU.JIANZHENG', 'HE.ZEMING', 'GAO.JIEFANG',
'MA.RENJIE', 'YOU.ZHONGQIAN', 'DONG.XUEJUN', 'QU.SHIMIN', 'SONG.YUEHAI',
'ZHANG.JINGYA', 'SHAN.QI', 'CHEN.BAOHAI', 'MU.YONG', 'LIU.XIAOYU',
'LI.ZHIFENG', 'QIAN.MAOYUE')
and organization_id = 3013[@more@]
http://www.itpub.net/thread-1074410-1-1.html
急求解答:兩個相同的資料庫的執行計劃差別怎麼那麼大,附帶執行計劃!!!
最近工作中遇到一個很鬱悶的問題:
前提:
我一個培訓環境,一個測試環境,均是AIX 5.3的作業系統,2個CPU ,6G記憶體,測試環境是1個月前透過rman方式將資料從培訓環境中匯入的
檢查確認引數檔案保持一致,表結構一致,資料量差別非常小
問題現象:
一個sql語句在兩個配置和表結構相同的資料庫中的執行計劃不同,而且差別太大,查詢結果出來後一個是5秒,一個幾分鐘
sql語句:
select *
from (
select distinct b.user_name,
a.full_name,
'N' selected,
b.department_description,
b.organization_id
from cux_user_name_v a, cux_department_user_v b
where a.user_name = b.user_name(+)
)
where
user_name in
('EAM_SETUP', 'HAN.XIANGXU', 'XU.JIANZHENG', 'HE.ZEMING', 'GAO.JIEFANG',
'MA.RENJIE', 'YOU.ZHONGQIAN', 'DONG.XUEJUN', 'QU.SHIMIN', 'SONG.YUEHAI',
'ZHANG.JINGYA', 'SHAN.QI', 'CHEN.BAOHAI', 'MU.YONG', 'LIU.XIAOYU',
'LI.ZHIFENG', 'QIAN.MAOYUE')
and organization_id = 3013
其中表和檢視的關係如下:
apps.cux_user_name_v --檢視
applsys.fnd_user--(表6815條記錄)
APPS.hr_employees--檢視
APPS.PER_PEOPLE_F--檢視
HR.Per_All_People_f --(表43324條記錄)
APPS.PER_ASSIGNMENTS_F --檢視
HR.PER_ALL_ASSIGNMENTS_F --(表68825條記錄)
HR.PER_ASSIGNMENT_STATUS_TYPES --(表44條記錄)
apps.cux_department_user_v --檢視
APPS.BOM_DEPT_RES_INSTANCES_EMP_V --檢視
PER_ALL_PEOPLE_F --(表43324條記錄)
BOM.BOM_RESOURCE_EMPLOYEES --(表5236條記錄)
BOM.BOM_DEPT_RES_INSTANCES --(表5400條記錄)
APPS.hr_employees --檢視
applsys.fnd_user --(表6815條記錄)
APPS.bom_departments_all_v
BOM.BOM_DEPARTMENTS --(表623條記錄)
BOM.BOM_RESOURCES --(表526條記錄)
說明:左邊的為右邊物件的父物件,舉例:apps.cux_user_name_v 由表applsys.fnd_user和檢視APPS.hr_employees構成
而APPS.hr_employees由檢視APPS.PER_PEOPLE_F,檢視APPS.PER_ASSIGNMENTS_F和表HR.PER_ASSIGNMENT_STATUS_TYPES 來構成
另外的說明:所有的表和索引都相等並有效
已經做過表和索引的分析
問題相當於本來這個語句在培訓環境上是正常的,過了幾天,突然發現查詢語句變的很慢了,而一個月前的同步到測試環境的資料,執行依舊很快
請各位兄弟姐妹們趕快救命撒!
附件為f5的執行計劃和 alter session set events '10046 trace name context forever,level 8' tkp後的日誌,
只是從跟蹤日誌看到培訓環境的
239668702 TABLE ACCESS FULL FND_USER 有問題,
而且查詢記錄總共是1200萬多條記錄,但是fnd_user上相關的索引確實存在,
地址:http://www.itpub.net/thread-1074408-1-1.html
dancingfire1979 上傳了這個附件:
2008-10-22 02:59
測試庫.JPG (107.2 KB)
2008-10-22 02:59
培訓庫.JPG (175.73 KB)
2008-10-22 02:59
其實這個問題已經處理過了, 由於這個語句最終的分析是巢狀了8個檢視,其實只用了9個表,而且檢視是經過了4層的巢狀,所以直接聯絡開發人員和模組設計部門,減少檢視的巢狀,直接採用原表的查詢方法,速度變成了2秒.
只是為什麼會出現這種情況,我今天克隆了一個資料庫,然後透過rman的方式重新建立了一個模擬環境
再次執行表分析後
BEGIN
DBMS_STATS.gather_table_stats(ownname => 'applsys',tabname => 'FND_USER');
END;
查詢速度就恢復到了5秒左右,
但是以前我曾經做過分析:
analyze table applsys.fnd_user compute statistics for all indexes
卻沒有將時間縮短,
請問這兩個分析方法有區別麼?
__________________
天行者~~~~~~~~~~~~~
lhdz_bj:
哦,原來問題就在這裡:
DBMS_STATS.gather_table_stats(ownname => 'applsys',tabname => 'FND_USER');
會產生表FND_USER相關的所有統計資訊,包括表和索引的。
而analyze table applsys.fnd_user compute statistics for all indexes
這個語句似乎只產生了表上所有索引的統計資訊,而沒有分析表等統計資訊。
所以,收集統計資訊最好用DBMS_STATS包,這也是ORACLE官方推薦的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-1016389/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個關於/root/.gvfs的問題解決?
- 回覆網友問題,關於一個數值和字串一起累加的問題!字串
- JOB建立,解決網友問題
- 關於解決問題的幾個段位
- 一個關於JS解決陣列相乘問題JS陣列
- 高手都進來歇歇~解決一個問題關於SE的問題
- oracle儲存過程!解決網友問題Oracle儲存過程
- 終於,解決了一個大問題
- 關於教程的一個問題
- 關於input的一些問題解決方法分享
- 關於網路硬體配置出現問題,無法上網問題的解決
- 解決Hexo關於圖片的問題Hexo
- 關於Failed to resolve的問題解決AI
- 關於php解構函式的一個有趣問題PHP函式
- 關於Integer面試的一個問題面試
- 一個關於Java Excel的問題JavaExcel
- 一個關於SessionBean呼叫的問題。SessionBean
- 一個關於prototype模式的問題?模式
- 關於 SAP ABAP gateway OData 的一個詭異問題及解決辦法Gateway
- 怎樣成為解決問題的高手?——關於問題解決的關鍵4步驟
- 問一個關於hibernate的OracleDialect問題Oracle
- 關於在頁面中解決列印的幾個問題 (轉)
- 關於一個歸檔問題?
- 關於 LF will be replaced by CRLF 問題的解決方式
- 求助關於JdonFrameworkTest的一個問題Framework
- 關於系統效能的一個問題
- 一個關於jdbc2的問題JDBC
- 關於jdbc的一個問題,高手解惑JDBC
- 關於抽象工廠的一個問題?抽象
- 爭用!!!!一個關於JDBC的問題!JDBC
- 關於singleton模式的一個問題?模式
- 碰到一個棘手的問題——關於httpclient。HTTPclient
- 關於網路的一點問題(轉)
- 一個小問題的解決方案
- 解決了一個PC的問題
- 關於網友的獲取MSSQL外來鍵資訊的問題的探討SQL
- 關於資料一致性問題的解決方法?
- 關於網路安全幾個問題的整理